微信小程序开发必备前置知识:基本代码构成与语法

简介: 【8月更文挑战第8天】微信小程序的基本代码构成与语法

项目的基本组成结构

官方预设模板

当我们采用测试号AppIDjavascript基础模板创建一个项目后
image.png
官方预设的模板如下
image.png
其每个目录的作用如下:

文件或文件夹名称 用途
pages 用来存放所有小程序的页面,如首页、日志页等。
utils 用来存放工具性质的模块(比如自己引入的一些库,公用方法封装)
app.js 小程序项目的入口文件,相当于vue项目的main.js
app.json 小程序项目的全局配置文件(如全局样式、定义页面路由等)
app.wxss 小程序项目的全局样式文件
project.config.json 项目的配置文件
sitemap.json 用来配置小程序及其页面是否允许被微信索引

pages页面

微信建议小程序的页面都存放在 pages 目录中,以单独的文件夹存在,如图所示:
image.png
每个页面由 4 个基本文件组成,它们分别是:

  • .js 文件 :同普通项目的js文件
  • .json 文件:当前页面的配置文件,如窗口的外观等
  • .wxml 文件:页面的模板结构文件,功能同html
  • .wxss 文件:当前页面的样式表文件,同css

    app.js入口文件

    app.js是小程序项目的入口文件,同vue项目的main.js。内部调用了微信API的App()方法。作为初学者,我们先不用管其函数内部的逻辑。
    ```javascript
    // app.js
    App({
    onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({

    success: res => {
      // 发送 res.code 到后台换取 openId, sessionKey, unionId
    }
    

    })
    },
    globalData: {
    userInfo: null
    }
    })

## app.json全局配置
**app.json** 是当前小程序的全局配置,包括了小程序的所有**页面路径**、**窗口外观**、**界面表现**、**底部 tab** 等。官方预设模板内部的 app.json 配置内容如下:
```javascript
{
  "pages":[
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "Weixin",
    "navigationBarTextStyle":"black"
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

这 4 个配置项的主要作用如下:
pages:小程序所有页面的路径,用来定义页面路由,非常重要!
window:全局定义小程序所有页面的背景色、文字颜色等
style:全局定义小程序组件所使用的样式版本
sitemapLocation:用来指明 sitemap.json 的位置

project.config.json项目配置文件

project.config.json 是项目配置文件,用来个性化配置小程序开发工具。类似于vue项目的package.json文件
image.png
如: setting 中是编译相关的配置 ,projectname 是项目名称, appid 中保存的是小程序的账号 ID。

sitemap.json 文件

sitemap.json 是微信用来索引小程序的一个配置文件,类似于 PC 网页的 SEO搜索。
可以参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html

小程序页面创建及基础概念

新建小程序页面

我们只需要在 app.json -> pages 中新增页面的存放路径,开发者工具会帮我们自动创建对应的页面文件
GIF 2023-1-29 10-49-45.gif

提示:修改完代码后,需要使用ctrl + s进行代码保存

修改项目首页

调整 app.json -> pages 数组中页面路径的前后顺序,即可修改项目的首页。
GIF 2023-1-29 10-54-08.gif

WXML与HTML的区别

WXML是小程序仿照HTML设计的一套标签语言,用来构建小程序页面的结构。
它的主要区别有三个地方:

  • 标签名称不同

      WXML的标签和html不一样,常用的有view, text, image, navigator。
    
  • 属性节点不同

     WXML跳转方式是这样的:<navigator url="/pages/home/index"></navigator>
    
  • 提供了类似于 Vue 中的模板语法,如数据绑定、列表渲染、条件渲染等。

    WXSS 和 CSS 的区别

    新增了 rpx 尺寸单位
    WXSS 在底层支持新的尺寸单位 rpx,在不同大小的屏幕上小程序会自动进行换算。
    提供了全局的样式和局部样式
    项目根目录中的 app.wxss 会作用于所有小程序页面,局部页面的 .wxss 样式仅对当前页面生效。
    WXSS 仅支持部分 CSS 选择器

选择器 样例 样例描述
.class .intro 选择所有拥有 class="intro" 的组件
#id #firstname 选择拥有 id="firstname" 的组件
element view 选择所有 view 组件
element, element view, checkbox 选择所有文档的 view 组件和所有的 checkbox 组件
::after view::after 在 view 组件后边插入内容
::before view::before 在 view 组件前边插入内容

小程序中的 .js 文件

小程序中的 JS 文件分为三大类,分别是:
app.js
小程序项目的入口文件,通过调用 App() 函数来启动整个小程序页面。
pages文件夹内的.js 文件
image.png
页面的入口文件,通过调用 Page() 函数来创建并运行页面
普通的 .js 文件
是普通的功能模块文件,可以自己封装一些方法或使用第三方的库。
image.png
如utils里面的eslint.js文件定义了代码的书写规范。

模板语法

在学习之前,我们需要了解每一个微信页面的初始化时做了什么。当我们手动创建一个页面时,这个页面对应的js文件暴露出一个page函数。

// pages/lists/lists.js
Page({
   
   

  //页面的初始数据
  data: {
   
   },
  //生命周期函数--监听页面加载
  onLoad(options) {
   
   },
  //生命周期函数--监听页面初次渲染完成
  onReady() {
   
   },
  //生命周期函数--监听页面显示
  onShow() {
   
   },
  //生命周期函数--监听页面隐藏
  onHide() {
   
   },
  //生命周期函数--监听页面卸载
  onUnload() {
   
   },
  //页面相关事件处理函数--监听用户下拉动作
  onPullDownRefresh() {
   
   },
  //页面上拉触底事件的处理函数
  onReachBottom() {
   
   },
  //用户点击右上角分享
  onShareAppMessage() {
   
   }
})

Page函数用于注册小程序中的一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。

属性 类型 说明
data Object 页面的初始数据
options Object 页面的组件选项,同 Component构造器

中的 options ,需要基础库版本 2.10.1 |
| behaviors | String Array | 类似于 mixins 和traits的组件间代码复用机制,参见 behaviors
,需要基础库版本 2.9.2 |
| onLoad | function | 生命周期回调—监听页面加载 |
| onShow | function | 生命周期回调—监听页面显示 |
| onReady | function | 生命周期回调—监听页面初次渲染完成 |
| onHide | function | 生命周期回调—监听页面隐藏 |
| onUnload | function | 生命周期回调—监听页面卸载 |
| onPullDownRefresh | function | 监听用户下拉动作 |
| onReachBottom | function | 页面上拉触底事件的处理函数 |
| onShareAppMessage | function | 用户点击右上角转发 |
| onShareTimeline | function | 用户点击右上角转发到朋友圈 |
| onAddToFavorites | function | 用户点击右上角收藏 |
| onPageScroll | function | 页面滚动触发事件的处理函数 |
| onResize | function | 页面尺寸改变时触发,详见 响应显示区域变化 |
| onTabItemTap | function | 当前是 tab 页时,点击 tab 时触发 |
| onSaveExitState | function | 页面销毁前保留状态回调 |
| 其他 | any | 开发者可以添加任意的函数或数据到 Object 参数中,在页面的函数中用 this 可以访问。这部分属性会在页面实例创建时进行一次深拷贝。 |

数据绑定

微信小程序的数据绑定和vue几乎是一致的。只不过data是写在page函数里的。image.png

// pages/lists/lists.js
Page({
   
   
  data: {
   
   
      testInfo:"这是自定义的数据"
  },
})
<!--pages/lists/lists.wxml-->
<view>
  {
   
   {
   
   testInfo}}
</view>

不同的是,小程序的动态数据绑定和vue是不一致的,vue中,动态数据绑定是这样的

<template>
  <div :title="title"></div>
</template>

data: {
   
   
    title:"这是自定义的title值"
},

但小程序中的动态数据绑定还是采用花括号的形式
image.png

// pages/lists/lists.js
Page({
   
   
  data: {
   
   
     node:"<h1>动态富文本</h1>"
  },
})
<!--pages/lists/lists.wxml-->
<rich-text     nodes="{
   
   {node}}"></rich-text>

事件绑定

什么是事件

  • 事件是视图层到逻辑层的通讯方式。
  • 事件可以将用户的行为反馈到逻辑层进行处理。
  • 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
  • 事件对象可以携带额外信息,如 id, dataset, touches。image.png

    事件的使用方式

  • 在组件中绑定一个事件处理函数。

如bindtap,当用户点击该组件的时候会在该页面对应的 Page 中找到相应的事件处理函数。

<view bindtap="tapName"> Click me! </view>
  • 在相应的 Page 定义中写上相应的事件处理函数,参数是event。
    Page({
         
            tapName: function(event) {
         
              console.log(event)   } })
    
    可以看出,这里的bindtapvuev-on(即@)绑定事件是一致的。
相关文章
|
2月前
|
Java 数据安全/隐私保护 计算机视觉
手机虚拟视频替换摄像头,QQ微信虚拟视频插件,jar代码分享
这段代码演示了如何使用JavaCV捕获视频流、处理帧数据并输出到虚拟摄像头设备。它需要JavaCV和OpenCV库支持
|
1月前
|
Shell Android开发 Python
微信多开脚本,微信双开器脚本插件,autojs开源代码分享
AutoJS脚本实现安卓端微信多开,通过无障碍服务 Python脚本提供跨平台解决方案,自动检测微信安装路径
|
4月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
997 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
2月前
|
XML 数据处理 数据安全/隐私保护
微信卡片生成器在线制作,微信xml链接代码,xml卡片生成器
这段代码实现了一个完整的数据处理程序,包含主程序、数据处理模块和工具模块。主程序负责启动和异常处理
|
2月前
|
小程序 Java 关系型数据库
圈子系统公众号app小程序系统源码圈子系统带即时通讯 多级圈子系统源码 兴趣小组系统开源 私密圈子系统代码 会员制社区系统
本圈子系统解决方案提供即时通讯、多级圈子、兴趣小组、私密社区及会员制管理功能。支持开源与商业方案,推荐ThinkSNS+、EasyClub及OpenFire等系统,并提供前后端技术选型建议,助力快速搭建社交平台。
124 0
|
3月前
|
消息中间件 缓存 小程序
婚恋交友相亲公众号app小程序系统源码「脱单神器」婚恋平台全套代码 - 支持快速二次开发
这是一套基于SpringBoot + Vue3开发的婚恋交友系统,支持微信公众号、Uniapp小程序和APP端。系统包含实名认证、智能匹配、视频相亲、会员体系等功能,适用于婚恋社交平台和相亲交友应用。后端采用SpringBoot 3.x与MyBatis-Plus,前端使用Vue3与Uniapp,支持快速部署和二次开发。适合技术团队或有经验的个人创业者使用。
235 8
微信养号脚本,导入手机号自动添加,autojs代码分享
这段代码实现了基本的微信自动添加好友功能,包括读取手机号文件、启动微信、搜索用户和发送
|
5月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
444 12
|
5月前
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
5月前
|
人工智能 开发框架 小程序
工会成立100周年纪念,开发职工健身AI运动小程序、APP方案推荐
为庆祝中华全国总工会成立100周年,特推出基于AI技术的智能健身系统,以小程序和APP形式呈现,助力职工健康生活。方案包括:1) 小程序插件,支持多种运动识别,开箱即用;2) APP插件,提供更高精度的运动检测;3) 成熟的「AI乐运动」系统,支持赛事活动管理。这些方案满足不同需求,推动全民健身体验升级,彰显工会对职工健康的关怀。

热门文章

最新文章