关于如何注册小程序的AppID以及如何下载开发者工具就废话不多说。总之准备工具如下:

知识准备:

  • JavaScript
  • CSS样式

开发准备:

创建目录

image.png

上面目录除了 project.config.jsonsitemap.json 外,该目录是最基本最简单的小程序结构。

  • app:为目录的全局脚本
  • page:为描述对应的页面的脚本

写法

app.json

是整个项目的全局配置,对于所有页面都生效。如: :::danger 注意:JSON不支持注释,但为了方便学习,以下例子将会加入注释 :::

  1. {
  2. "pages": [
  3. "pages/home/home" //描述页面的路径
  4. ],
  5. "window": [ //描述窗口样式
  6. "navigationBarBackgroundColor": "#ff0000", //设置导航栏背景色为红色
  7. "navigationBarTextStyle": "white", //标题文字为白色
  8. "navigationBarTitleText": "小程序 Demo" //标题内容
  9. ]
  10. }

除了窗口样式,还有许多顶部和尾部的样式设置,如底部导航栏的 tabBar 属性等

app.wxml

与HTML最大的区别是标签名不一样,其他没什么区别,如下:

  1. <view>
  2. <text>hello world</text>
  3. </view>

view 类似 divtext 类似 span

app.wxss

后缀为 wxss 是采用CSS的语法设置页面样式的。而 app.wxss 对所有页面生效。
关于wxss语法与CSS相差不大,但有些细节需要知道。详细请看另一篇博客!

app.js

小程序的JS代码有个固定的写法,在如下:

  1. //app.js
  2. App({
  3. //在这里写代码
  4. data: {
  5. //和Vue的写法差不多
  6. }
  7. })

上面是在 app.js 里的写法,在page每个页面的JS文件与上面差不多,唯一区别的是如下写法:

  1. //page/index.js
  2. Page({
  3. //和上面的例子一样的写法
  4. })

组件页面同理:

  1. //组件
  2. Component({
  3. //和上面的例子一样的写法
  4. })

事件

小程序的常见事件如下:

  • tap :触摸后马上离开
  • longpress :触摸后,超过350ms离开。如果指定该事件的回调函数并触法了该事件,tap事件将不被触发。
  • touchstart :触摸开始
  • touchmove :触摸后移动
  • touchcancel :触摸动作被打断,如来电提醒,弹窗什么的。
  • touchend :触摸结束。

注意小程序的事件也有捕获阶段和冒泡阶段

具体用法如下例子:

  1. //index.wxml
  2. <view>
  3. <text class="title">hello {{name}}</text>
  4. <button bind:tap="buttonHandler">点击</button>
  5. </view>
  6. //index.js
  7. Page({
  8. data: {
  9. name: '张三'
  10. },
  11. buttonHandler(event){
  12. this.setData({ //这行代码是可以修改data属性,而不是用this.data,不然会报错
  13. name: '李四'
  14. })
  15. }
  16. })

:::success 上面的例子里, bind:tapbind: 前缀表示这个回调函数会在冒泡阶段出发,并且这个冒号是可以省略的,即 bindtap 也是没什么问题。 :::

event参数

在上面的例子当中 ,参数 event 可以从它上面的例子里获取事件信息,比如:id、type、detail等,例如上面的例子里如果把 event log出来会有什么东西,如下:

  1. Page({
  2. buttonHandler: function(event) {
  3. console.log(event)
  4. }
  5. })

内容大概如下:

  1. {
  2. "type":"tap",
  3. "timeStamp":17260,
  4. "target": {
  5. "id": "",
  6. "dataset": {
  7. }
  8. },
  9. "currentTarget": {
  10. "id": "",
  11. "dataset": {
  12. }
  13. },
  14. "detail": {
  15. "x":96,
  16. "y":21
  17. },
  18. "touches":[{
  19. "identifier":0,
  20. "pageX":199,
  21. "pageY":38,
  22. "clientX":199,
  23. "clientY":38
  24. }],
  25. "changedTouches":[{
  26. "identifier":0,
  27. "pageX":199,
  28. "pageY":38,
  29. "clientX":199,
  30. "clientY":38
  31. }]
  32. }

:::success 注意:事件回调函数内部的 this ,指向页面实例。 :::

关于提示窗

Toast

小程序提供了许多方法,其中就有了提示窗口,如图:

image.png
具体写法在当前页面的json文件里大概如下:

  1. Page({
  2. data: {
  3. //略。。。
  4. },
  5. buttonHandler() {
  6. wx.showToast({
  7. title: '翻译中',
  8. duration: 700
  9. }
  10. });

点击按钮后,在做相应的功能时,就会提示一个小窗口。其中:

  • title 为提示窗口内容
  • duration 为窗口显示时间。

modal

对话窗口,该窗口比提示窗口多了两个功能,分别是确认以及取消:

image.png

代码大概如下:

  1. Page({
  2. data: {
  3. //略。。。
  4. },
  5. buttonHandler(event) {
  6. const that = this;
  7. wx.showModal({
  8. title: '是否清空所有?',
  9. success (res) {
  10. if (res.confirm) {
  11. //成功执行该代码
  12. }, function () {
  13. //可接受一个函数
  14. });
  15. } else if (res.cancel) {
  16. console.log('用户点击取消');
  17. }
  18. }
  19. });
  20. }
  21. });