初探小程序

初探小程序

暑假借着青春在线迎新活动写了第一个自己的 小程序 ,实现了一个简易的问答程序,对 小程序 有了一个大体的概念。

微信为小程序的开发提供了详尽的文档,同时也非常适合作为学习资料参考。
因此,此篇文章作为一个简介更为合适,对一些基础概念通过简单的几句话引出,过多的细节将不涉及,请大家查阅 微信官方文档

小程序开发的优点

从开始接触到上线第一版,只用了一周左右,显而易见的优点是学习成本低,开发周期短

在语法上,尽管小程序有自己的文件格式(如 wxml wxss),但其实对于有一定 Web 基础、有 Vue 等框架开发经验的人来说上手非常快,其中诸如插值语法、动态绑定等均是类似,同时对于像素单位,也不同于 Web 中,对于布局更加方便。

借助微信封装好的 API 和组件,开发的难度更是大幅降低。
如果资金充足可以直接使用腾讯提供的云开发服务(包括数据库、云存储、云函数、云托管),对于个人开发来说省时省力省心(除了省钱)。

开发的准备

在工具上,需要下载好微信开发者工具才能进行开发。

对于学习资料,微信官方文档提供了大量的实例代码(有些可以直接作为代码片段从微信开发者工具中打开),微信的官方社区也有一定的资源可以查找,但是需要注意,文档中有些内容随着版本更新已经不再适用,最好的学习方式还是自己实践,然后从网络中或者是社区中寻求答案。

如果想要使用云开发,则必须要注册一个小程序账号,在微信开发者工具中填入小程序的 ID 方可使用云开发服务。
另外一点需要注意的就是云开发服务是需要付费的。但是作为减少开发周期至关重要的一部分,这部分开销是不可避免的了。

假设我目前是一名技术值为 0 的纯小白,为了开发一个属于自己的小程序需要哪些知识储备呢?

  1. HTML+CSS+JaveScript 三件套的基础
    • HTML+CSS 能够仿制一个静态页面
    • JS 能够了解函数、事件的概念
    • 能够用三件套做出一些简单的网页或功能
  2. 有一定的程序设计和 Web 开发基础
    • 会写函数,能够理解回调函数、匿名函数的写法(具体原理可以不知道)
    • 了解路由、生命周期的概念
  3. 面向对象的基础概念
    • 能够理解 对象、属性、方法的 基本概念
    • 不需要像 Java 一样自己写 Class
  4. 了解数据库的概念
    • 了解 JSON 数据格式
    • 知道数据库中 表、记录、行、列、关键字 等概念
    • 了解简单的增删改查过程

看上去内容是挺多的,但是大部分只是了解怎么使用即可,但是最核心的三个能力一定要有:

  1. 三件套的使用
  2. 程序设计的基础
  3. 快速学习、类比、查找信息的能力

以上也只是“不求甚解”,对于第一次接触可以马马虎虎的过去,但是立足长远,一些理论基础还是要花时间补起来的。

简单认识下吧

和很多工程、框架类似,其中的 “pages” “app.js” “app.json” 等等文件夹或文件大家可能并不陌生,但是作为“初探”,一些无关紧要的文件就不加赘述了,这里只点明当前会用到的几个文件/文件夹。

ContentStructure

  • cloudfunctions – 云函数:如果使用了云开发,这里放的就是云函数的文件first-step-about-mini-program
  • miniprogram – 小程序的主体:小程序的主要文件均在这个文件夹下
  • components – 组件:存放自己编写的组件
  • pages – 页面:存放自己编写的页面
  • custom-tab-bar – 底部标签栏:底部标签的相关文件
  • images – 图片:存放图片资源
  • app.js – 小程序逻辑
  • app.json – 小程序公共配置

具体可参阅 微信官方文档

对于 app.jsapp.json 不必过多的关心,作为入门可以参照文档中对应的组件进行配置,不需要耗费太多精力。

对于入门最核心的还是 pagescomponents 两大部分,甚至是只需要 pages

我们通常将所有的页面写在 pages 中,对于相同的代码可以抽象出来作为 components

开始第一步

wxml 中没有太多的标签,主要是使用 <view></view> 标签进行描述. 类似传统 html 中的 <div></div> 标签.
wxss 则与 css 没有太大的区别, 仅仅是在在选择器的种类上有些限制.

wxss 中引入了一个新的单位 rpx. 新单位的引入极大的方便了移动端的开发, 让移动开发不必再纠结布局的问题.

<view class="ansTag">
    <view class="isMeTag">我的</view>
    <view class="ansTagYes">已回复</view>
    <view class="ansTagNo">未回复</view>
</view>
.ansTag{
  display: flex;
  align-items: center;
  font-size: 30rpx;
}

.ansTagYes{
  padding: 4rpx;
  border: 5rpx solid orange;  
  color: orange;
  border-radius: 16rpx ;
}
.ansTagNo{
  padding: 4rpx;
  margin: 4rpx;
  border: 5rpx solid gray;  
  color: gray;
  border-radius: 16rpx ;
}

响应的数据绑定框架

微信小程序框架的核心是一个响应的数据绑定系统, 其数据绑定方式与 Vue 非常相似, 如果有 Vue 的基础则能很好的适应 wxml 的语法.

下面列举了几个代码实例, 更详细的内容可参阅 微信官方文档

如果没有接触过 Vue, 也可以类比其他编程语言中的 if else 以及 for, 但是不同的是这里使用的变量都存放在对应的 js 文件中的 data 属性中.

数据绑定

<!--wxml-->
<view> {{message}} </view>
// page.js
Page({
  data: {
    message: 'Hello MINA!'
  }
})

列表渲染

<!--wxml-->
<view wx:for="{{array}}"> {{item}} </view>
// page.js
Page({
  data: {
    array: [1, 2, 3, 4, 5]
  }
})

条件渲染

<!--wxml-->
<view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
<view wx:elif="{{view == 'APP'}}"> APP </view>
<view wx:else="{{view == 'MINA'}}"> MINA </view>
// page.js
Page({
  data: {
    view: 'MINA'
  }
})

云函数与后端

使用数据绑定就是为了动态的将数据渲染到页面上, 有了数据绑定, 下一步要做的就是选择哪些数据到前端, 也就是 js 和 后端的任务了.

前端和云函数均可使用 js ,因此也不需要学习额外的语言。

前端的 js 可以处理大部分问题,但是对于一些敏感数据,最好还是通过云函数的方式从后端处理数据然后发送给前端。对于上线的小程序, 微信官方会检查其安全性, 并要求敏感的数据(API)不允许直接在 js 中使用(调用).

这里列举一个获取用户 openid 的函数:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

之后

以上就是一些基础的内容了,再之后就是根据需要学习更多的组件和 API ,还有后端管理页面的搭建等等,同时还有代码规范等等也需要注意。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇