02-小程序代码的构成

8/16/2001

# 1, 小程序 - 起步

# 1.1, 小程序项目结构

项目的基本组成结构

  • pages 用来存放所有小程序的页面
  • utils 用来存放工具性质的模块(例如:格式化时间的自定义模块)
  • app.js 小程序项目的入口文件
  • app.json 小程序项目的全局配置文件
  • app.wxss 小程序项目的全局样式文件
  • project.config.json 项目的配置文件
  • sitemap.json 用来配置小程序及其页面是否允许被微信索引

小程序页面的组成部分

  • 小程序官方建议把所有小程序的页面,都存放在 pages 目录中,以单独的文件夹存在,如图所示
  • 其中,每个页面由 4 个基本文件组成,它们分别是:
  • .js 文件(页面的脚本文件,存放页面的数据、事件处理函数等)
  • .json 文件(当前页面的配置文件,配置窗口的外观、表现等)
  • .wxml 文件(页面的模板结构文件)
  • .wxss 文件(当前页面的样式表文件)

# 2, JSON 配置文件

# 2.1, JSON 配置文件的作用

  • 小程序的很多开发需求被规定在了配置文件中。
  • JSON 是一种数据格式,在实际开发中,JSON 总是以配置文件的形式出现。小程序项目中也不例外:通过不同的 .json 配置文件,可以对小程序项目进行不同级别的配置。
  • 这样做可以更有利于我们的开发效率
  • 并且可以保证开发出来的小程序的某些风格是比较一致的,比如导航栏 – 顶部TabBar,以及页面路由等等

小程序项目中有 4 种 json 配置文件,分别是:

  • 项目根目录中的 app.json 配置文件
  • 项目根目录中的 project.config.json 配置文件
  • 项目根目录中的 sitemap.json 配置文件
  • 每个页面文件夹中的 .json 配置文件

# app.json 文件

  • app.json 是当前小程序的全局配置,包括了小程序的所有页面路径、窗口外观、界面表现、底部 tab 等。
  • 参考:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html

pages:用来记录当前小程序所有页面的路径

  • 小程序中所有的页面都是必须在pages中进行注册的。

window:全局的默认窗口展示

  • 全局定义小程序所有页面的背景色、文字颜色等
  • 用户指定窗口如何展示, 其中还包含了很多其他的属性

tabBar:tab栏的展示

  • tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换
  • 小程序中通常将其分为:底部 tabBar和顶部 tabBar
  • tabBar中只能配置最少 2 个、最多 5 个 tab 页签
  • 当渲染顶部 tabBar 时,不显示 icon,只显示文本

tabBar 的 6 个组成部分

  • backgroundColor:tabBar 的背景色
  • selectedIconPath:选中时的图片路径
  • borderStyle:tabBar 上边框的颜色
  • iconPath:未选中时的图片路径
  • selectedColor:tab 上的文字选中时的颜色
  • color:tab 上文字的默认(未选中)颜色

tabBar 节点的配置项

每个 tab 项的配置选项

style

  • 全局定义小程序组件所使用的样式版本

sitemapLocation

  • 用来指明 sitemap.json 的位置

# project.config.json 文件

  • project.config.json 是项目配置文件,用来记录我们对小程序开发工具所做的个性化配置,例如:
  • setting 中保存了编译相关的配置
  • projectname 中保存的是项目名称
  • appid 中保存的是小程序的账号 ID
  • 参考:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html

# sitemap.json 文件

  • 微信现已开放小程序内搜索,效果类似于 PC 网页的 SEO。sitemap.json 文件用来配置小程序页面是否允许微信索引。
  • 当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索关键字和页面的索引匹配成功的时候,小程序的页面将可能展示在搜索结果中。
  • 参考:https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html
  • sitemap 的索引提示是默认开启的,如需要关闭 sitemap 的索引提示,可在小程序项目配置文件project.config.json 的 setting 中配置字段 checkSiteMap 为 false

# 页面的 .json 配置文件

  • 小程序中,app.json 中的 window 节点,可以全局配置小程序中每个页面的窗口表现
  • 如果某些小程序页面想要拥有特殊的窗口表现,此时,“页面级别的 .json 配置文件”就可以实现这种需求
  • 注意:当页面配置与全局配置冲突时,根据就近原则,最终的效果以页面配置为准
  • 参考:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/page.html

# 3, WXML

# 3.1, 什么是 WXML

  • WXML(WeiXin Markup Language)是小程序框架设计的一套标签语言,用来构建小程序页面的结构,其作用类似于网页开发中的 HTML

WXML 和 HTML 的区别

  • 标签名称不同
    • HTML (div, span, img, a)
    • WXML(view, text, image, navigator),内置组件
  • 属性节点不同
    • HTML (a标签上的href)
    • WXML (navigator组件上的url)
  • WXML提供了类似于 Vue 中的模板语法
    • 数据绑定
    • 列表渲染
    • 条件渲染

# 4, WXSS 样式

# 4.1, 什么是 WXSS

  • WXSS (WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式,类似于网页开发中的 CSS。

WXSS 和 CSS 的区别

  • 新增了 rpx 尺寸单位
    • CSS 中需要手动进行像素单位换算,例如 rem
    • WXSS 在底层支持新的尺寸单位 rpx,在不同大小的屏幕上小程序会自动进行换算
  • 提供了全局的样式和局部样式
    • 项目根目录中的 app.wxss 会作用于所有小程序页面
    • 局部页面的 .wxss 样式仅对当前页面生效
  • WXSS 仅支持部分 CSS 选择器
    • .class 和 #id
    • element
    • 并集选择器、后代选择器
    • ::after 和 ::before 等伪类选择器

# 5, JS 逻辑交互

# 5.1, 小程序中的 .js 文件

  • 一个项目仅仅提供界面展示是不够的,在小程序中,我们通过 .js 文件来处理用户的操作。例如:响应用户的点击、获取用户的位置等等

小程序中的 JS 文件分为三大类,分别是

  • app.js
    • 是整个小程序项目的入口文件,通过调用 App() 函数来启动整个小程序
  • 页面的 .js 文件
    • 是页面的入口文件,通过调用 Page() 函数来创建并运行页面
  • 普通的 .js 文件
    • 是普通的功能模块文件,用来封装公共的函数或属性供页面使用

# 6, 注册小程序 – App函数

# 6.1, App函数

小程序启动的过程

  • 把小程序的代码包下载到本地
  • 解析 app.json 全局配置文件
  • 执行 app.js 小程序入口文件,调用 App() 创建小程序实例
  • 渲染小程序首页
  • 小程序启动完成

每个小程序都需要在 app.js 中调用 App 函数 注册小程序实例

  • 在注册时, 可以绑定对应的生命周期函数;
  • 在生命周期函数中, 执行对应的代码;
  • 参考:https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html

注册App时,我们一般会做什么

  • 判断小程序的进入场景
  • 监听生命周期函数,在生命周期中执行对应的业务逻辑,比如在某个生命周期函数中进行登录操作或者请求网络数据
  • 因为App()实例只有一个,并且是全局共享的(单例对象),所以我们可以将一些共享数据放在这里

App函数的参数

作用一:判断打开场景

  • 常见的打开场景:群聊会话中打开、小程序列表中打开、微信扫一扫打开、另一个小程序打开
  • 参考:https://developers.weixin.qq.com/miniprogram/dev/reference/scene-list.html
  • 在onLaunch和onShow生命周期回调函数中,会有options参数,其中有scene值;

作用二:定义全局App的数据

  • 可以在Object中定义全局App的数据
  • 定义的数据可以在其他任何页面中访问

作用三:生命周期函数

  • 在生命周期函数中,完成应用程序启动后的初始化操作
  • 比如登录操作
  • 比如读取本地数据,类似于token,然后保存在全局方便使用
  • 比如请求整个应用程序需要的数据;

# 7, 注册页面 – Page函数

# 7.1, Page函数

页面渲染的过程

  • 加载解析页面的 .json 配置文件
  • 加载页面的 .wxml 模板和 .wxss 样式
  • 执行页面的 .js 文件,调用 Page() 创建页面实例
  • 页面渲染完成

小程序中的每个页面, 都有一个对应的js文件, 其中调用Page函数注册页面示例

  • 在注册时, 可以绑定初始化数据、生命周期回调、事件处理函数等
  • 参考:https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html

注册Page页面时,我们一般会做什么

  • 在生命周期函数中发送网络请求,从服务器获取数据
  • 初始化一些数据,以方便被wxml引用展示
  • 监听wxml中的事件,绑定对应的事件函数
  • 其他一些监听(比如页面滚动、上拉刷新、下拉加载更多等)

监听页面的下拉刷新和上拉加载更多

  • 步骤一:配置页面的json文件
  • 步骤二:代码中进行监听
Last Updated: 12/25/2022, 10:02:14 PM