# 小程序项目结构、配置层、视图层、逻辑层、宿主环境

TIP

从本节内容开始,正式从小程序的项目结构开始的学习,并掌握小程序实际项目开发中必备的核心基础,是我们在完成小程序项目开发前的必备技能。

小程序目录结构、文件类型、代码结构

  • 项目基本结构
  • 文件类型、主体部分
  • 默认小程序工程目录文件解读
  • 生成项目目录树

小程序工程文件的分层

  • JSON 配置层
  • .json 配置文件详细解读
  • 通过 JSON 配置文件创建小程序页面
  • 修改小程序项目首页渲染

使用全局配置制作菜单栏

  • tabBar 配置完成菜单栏切换
  • 自定义 tabBar

视图层的标签和样式、逻辑层交互

  • WXML 和 HTML 标签的区别
  • WXSS 和 CSS 样式的区别
  • 小程序 JS 逻辑交互、文件分类

小程序的宿主环境

  • 常见软件的宿主环境
  • 小程序宿主环境 - 通信模型
  • 小程序宿主环境 - 运行机制

# 一、小程序目录结构、文件类型、代码结构

TIP

深入浅出小程序的目录结构、文件类型,代码结构等

# 1、小程序项目基本结构

image-20230329022101004

TIP

  • ①、pages 用来存放所有小程序的页面
  • ②、utils 用来存放工具性质的模块(例如:格式化时间的自定义模块)
  • ③、app.js 小程序项目的入口文件
  • ④、app.json 小程序项目的全局配置文件
  • ⑤、app.wxss 小程序项目的全局样式文件
  • ⑥、project.config.json 项目的配置文件
  • ⑦、project.private.config.json:项目私有配置文件,此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。
  • ⑧、sitemap.json 用于配置小程序及其页面是否允许被微信索引

注: 加粗部分是常用的部分,重点了解即可

# 2、小程序页面的组成部分

TIP

小程序官方建议把所有小程序的页面,都存放在 pages 目录中,以单独的文件夹存在。

如下

image-20230329023623793

以上每个页面由 4 个基本文件组成,分别是:

  • ①、.js 文件(页面逻辑处理脚本文件,存放页面数据、事件处理函数等)
  • ②、.json 文件(页面的配置文件,对页面窗口的外观表现进行配置)
  • ③、.wxml 文件(页面结构、标签)
  • ④、.wxss 文件(页面样式)

# 3、小程序的文件类型

一个小程序页面由四个文件组成,分别是:

文件类型 必需 作用 描述
js (opens new window) 页面逻辑 注册页面,对于小程序中的每个页面,都需要在页面对应的 js 文件中进行注册,指定页面的初始数据、生命周期回调、事件处理函数等。
wxml (opens new window) 页面结构 WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。
json (opens new window) 页面配置 页面配置,每一个小程序页面也可以使用同名 .json 文件来对本页面的窗口表现进行配置,页面中配置项会覆盖 app.jsonwindow 中相同的配置项。
wxss (opens new window) 页面样式表 WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。

注:

为了方便开发者减少配置项,描述页面的四个文件必须具有相同的路径与文件名。

# 4、小程序的主体部分

TIP

  • 小程序包含一个描述整体程序的 app 和多个描述各自页面的 page
  • 一个小程序主体部分由三个文件组成,必须放在项目的根目录。

如下:

image-20230331064540628

文件 必需 作用 描述
app.js (opens new window) 小程序逻辑 用来注册小程序,每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等。
app.json (opens new window) 小程序公共配置 全局配置,小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
app.wxss (opens new window) 小程序公共样式表 全局样式,定义在 app.wxss 中的样式为全局样式,作用于每一个页面

# 5、默认小程序工程目录文件详细解读

image-20230115001039572

TIP

微信小程序的代码有两个级别:

  • 一个是全局级别的:app.js 全局逻辑文件、app.json 全局公共配置、app.wxss 公共样式表
  • 另一个是页面级别的:index.js 页面逻辑、index.wxml 页面结构、index.json 页面配置、index.wxss 页面样式表

注:页面级别的样式、配置的 优先级高于 全局级别的

  • 全局级别的代码所有页面都生效
  • 页面级别的代码只会对当前页面生效

其他文件及文件夹的含义

  • pages 文件夹:用于指定小程序由哪些页面组成,每一项都对应一个页面的 路径(含文件名) 信息。文件名不需要写文件后缀,框架会自动去寻找对应位置的 .json, .js, .wxml, .wxss 四个文件进行处理。
  • sitemap.json:小程序根目录下的 sitemap.json 文件用于配置小程序及其页面是否允许被微信索引,文件内容为一个 JSON 对象,如果没有 sitemap.json ,则默认为所有页面都允许被索引。当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索词条触发该索引时,小程序的页面将可能展示在搜索结果中。
  • project.config.json :项目配置文件(用来记录我们对微信开发者工具所做的个性化配置),可查看官方详细介绍 (opens new window),如:
    • setting 中保存了编译相关的配置
    • projectname 中保存的是项目名称
    • appid 中保存的是小程序的账号 ID
  • project.private.config.json:项目私有配置文件,此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。
  • utils:用来存放工具性质的模块(例如:格式化时间的自定义模块)

工程文件目录结构

icoding 小程序项目名称
├─ .eslintrc.js 配置 ESLint 代码规范
├─ app.js 全局逻辑文件
├─ app.json 全局公共配置
├─ app.wxss 公共样式表
├─ pages 存储小程序所有页面的文件夹
│  ├─ index 首页文件夹
│  │  ├─ index.js 首页逻辑
│  │  ├─ index.json 首页配置
│  │  ├─ index.wxml 首页结构
│  │  └─ index.wxss 首页样式表
│  └─ logs 日志页面文件夹
│     ├─ logs.js 日志页面逻辑
│     ├─ logs.json 日志页面配置
│     ├─ logs.wxml 日志页面结构
│     └─ logs.wxss 日志页面样式表
├─ project.config.json 项目配置文件
├─ project.private.config.json 项目私有配置文件
├─ sitemap.json 配置小程序及其页面是否允许被微信索引
└─ utils 用来存放工具性质的模块(例如:格式化时间的自定义模块)
   └─ util.js

# 4、VSCode 生成项目目录树

TIP

我们经常在很多博文中看到以上项目的目录结构树,到底是怎么生成的呢 ?

操作步骤如下:

  • VSCode 安装扩展插件 project-tree
  • 安装成功后,打开需要生成目录树的项目,使用快捷键 ctrl + shift + p ,再输入 Project Tree 回车
  • 将项目目录生成并存储到 README.md

image-20230116221129633

# 二、小程序工程文件分层

TIP

我们刚刚学习了在小程序中的四种文件 .js.json.wxml.wxss,我们可以将这四种文件分类

  • .js 逻辑层
  • .json 配置层
  • .wxml.wxss 展示层

相对来说配置层最简单,它就是配置页面的信息,我们从配置层开始学起。详细阅读官方文档 (opens new window)

# 1、JSON 配置层

TIP

全局配置文件在项目的根目录下,有几个 .json 文件。JSON 是一种数据格式,并不是编程语言,在小程序中,JSON 扮演的静态配置的角色。

在实际开发中,JSON 总是以配置文件的形式出现,小程序也一样,通过不同的 .json 配置文件,可以对小程序项目进行不同级别的配置。

小程序项目中有 5 种 JSON 配置文件,分别为:

  • ①、项目根目录中的 app.json 全局配置文件
  • ②、项目根目录中的 project.config.json 项目配置文件
  • ③、项目根目录中的 project.private.config.json 项目私有配置文件
  • ④、项目根目录中的 sitemap.json 微信索引配置文件
  • ⑤、每个页面文件夹中的 .json 配置文件

# 2、app.json 全局配置

TIP

小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。详情查看官方文档 (opens new window)

{
  "pages": ["pages/index/index", "pages/logs/logs"],
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "Weixin",
    "navigationBarTextStyle": "black"
  },
  "tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/logs/logs",
        "text": "日志"
      }
    ]
  },
  "networkTimeout": {
    "request": 10000,
    "downloadFile": 10000
  },
  "debug": true,
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

各个配置项的含义

  • pages 字段 (opens new window):用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录。
  • window 字段 (opens new window):定义小程序所有页面的顶部背景颜色,文字颜色定义等。
  • tabBar 字段 (opens new window):如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。
  • networkTimeout 字段 (opens new window):各类网络请求的超时时间,单位均为毫秒。
  • debug 字段 (opens new window):可以在开发者工具中开启 debug 模式,在开发者工具的控制台面板,调试信息以 info 的形式给出,其信息有 Page 的注册,页面路由,数据更新,事件触发等
  • style 字段 (opens new window):微信客户端 7.0 开始,UI 界面进行了大改版。小程序也进行了基础组件的样式升级。app.json 中配置 "style": "v2" 可表明启用新版的组件样式。本次改动涉及的组件有 button icon radio checkbox switch slider 可前往小程序示例进行体验。
  • sitemapLocation 字段 (opens new window):指明 sitemap.json (opens new window) 的位置;默认为 sitemap.json 即在 app.json 同级目录下名字的 sitemap.json 文件

注:

当我们看到这么多的字段配置项,不可能都去记住,也记不住怎么办呢 ?

只需要找到小程序的开发者文档,开发 -> 框架 -> 小程序配置 -> 全局配置 (opens new window) ,其中可以看到所有的相关配置,现阶段可先做了解即可,知道需要用到相关配置时在哪里查询就 OK。

后期的学习和项目开发中还会反复使用和查询 !

# 3、project.config.json 项目配置文件

TIP

微信开发者工具配置文件

  • project.config.json 这个配置信息一般是给开发者用的,正常情况下不会去修改这个文件。
  • 通常大家在使用一个工具的时候,都会针对各自喜好做一些个性化配置,例如界面颜色、编译配置等等,当你换了另外一台电脑重新安装工具的时候,你还要重新配置。
  • 考虑到这点,小程序开发者工具在每个项目的根目录都会生成一个 project.config.json,你在工具上做的任何配置都会写入到这个文件,当你重新安装工具或者换电脑工作时,你只要载入同一个项目的代码包,开发者工具就自动会帮你恢复到当时你开发项目时的个性化配置,其中会包括编辑器的颜色、代码上传时自动压缩等等一系列选项。

其他配置项细节可以参考文档 开发者工具的配置 (opens new window)

image-20230329174453503

注:

project.config.json 是项目配置文件,用来记录我们小程序开发工具所做的个性化配置,重点只需要了解以下三点即可:

  • setting 中保存了编译相关的配置
  • projectname 中保存的是项目名称
  • appid 中保存的是小程序的账号 ID

# 4、project.private.config.json 项目私有配置文件

TIP

  • project.private.config.json 中的相同设置优先级高于 project.config.json
  • 可以在 project.config.json 文件中配置公共的配置,在 project.private.config.json 配置个人的配置
  • project.private.config.json 中有的字段,开发者工具内的设置修改会优先覆盖 project.private.config.json 的内容
  • 开发阶段相关的设置修改优先同步到 project.private.config.json 中,但与最终编译产物有关的设置无法在 project.private.config.json 中生效,界面上的改动也不会同步到 project.private.config.json 文件中。

# 5、sitemap.json 配置文件

TIP

微信现已开放小程序内搜索,效果类似 PC 端网页的 SEO 优化(sitemap.xml (opens new window)robots.txt (opens new window) 的结合)如下

开发者可以通过 sitemap.json 配置,或者管理后台页面收录开关来配置其小程序页面是否允许微信索引。当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索词条触发该索引时,小程序的页面将可能展示在搜索结果中。

image-20230329182121662

所有页面不被微信索引,配置如下

{
  "rules": [
    {
      "action": "disallow",
      "page": "*"
    }
  ]
}

注:

配置 sitemap 的目的是:让我们的小程序在微信里更容易被搜索到(SEO 搜索引擎优化排名)。

此时,我们就需要做相关的配置 !详细的优化配置,点击查看官方文档即可 (opens new window)

# 6、页面级别 .json 的配置

TIP

app.json 中的部分配置,也支持对单个页面进行配置,可以在页面对应的 .json 文件来对本页面的表现进行配置。

页面中配置项在当前页面会覆盖 app.json 中相同的配置项(样式相关的配置项属于 app.json 中的 window 属性,但这里不需要额外指定 window 字段),具体的取值和含义可参考全局配置文档 (opens new window)中说明。

官方文档:开发 -> 指南 -> 配置小程序 -> 页面配置 -> 小程序页面配置 (opens new window)

image-20230130222418592

注:

并不是所有 app.json 中的配置都可以在页面覆盖或单独指定,仅限于本文档包含的选项。

# 7、通过 JSON 配置文件新建小程序页面

TIP

只需要在 app.json -> pages 节点中新增页面的存放路径,小程序开发者工具即可帮我们自动创建对应的页面文件

app.json 中的 pages 数组节点中新增页面的存放路径,Ctrl + S 保存会自动快速创建 小程序的页面

image-20230329190052290

# 8、修改小程序项目的首页

TIP

只需要调整 app.json -> pages 数组中页面路径的前后顺序,即可修改项目的首页。小程序会把排在第一位的页面,当做项目首页进行渲染。

如下

image-20230329191041789

# 三、使用全局配置制作菜单栏

TIP

通过前面的学习,我们了解了小程序全局配置相关内容,接下来我们就使用全局配置来完成以下小程序的 tabBar 的配置。

如果我们只是开发一个移动端的网页,底部的 tabBar 是需要自己通过代码来实现的。我们开发小程序时,是可以通过全局的配置来配置的。不需要我们再手动开发了。

image-20230130171751129

# 1、tabBar 配置项

TIP

找到小程序官方文档:开发 -> 框架 -> 小程序配置 -> 全局配置 -> tabBar (opens new window) ,文档底部有相关的配置实例可参考

当我们需要用到对应的配置,就到这里来查询即可 (opens new window)

  • 小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
  • 如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。

重点学会如何通过查阅官方文档,来快速配置和应用

属性 类型 必填 默认值 描述 最低版本
color HexColor tab 上的文字默认颜色,仅支持十六进制颜色
selectedColor HexColor tab 上的文字选中时的颜色,仅支持十六进制颜色
backgroundColor HexColor tab 的背景色,仅支持十六进制颜色
borderStyle string black tabbar 上边框的颜色, 仅支持 black / white
list Array tab 的列表,详见 list 属性说明,最少 2 个、最多 5 个 tab
position string bottom tabBar 的位置,仅支持 bottom / top
custom boolean false 自定义 tabBar,见详情 (opens new window) 2.5.0 (opens new window)

注:

其中 list 接受一个数组,只能配置最少 2 个、最多 5 个 tab。tab 按数组的顺序排序,每个项都是一个对象。

其属性值如下:

属性 类型 必填 说明
pagePath string 页面路径,必须在 pages 中先定义
text string tab 上按钮文字
iconPath string 图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片。 positiontop 时,不显示 icon。
selectedIconPath string 选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片。 positiontop 时,不显示 icon。

image-20230130183708411

# 2、tabBar 制作菜单栏

TIP

配置小程序根目录下的 app.json

如下

{
  "pages": [
    "pages/index/index",
    "pages/menu/menu",
    "pages/order/order",
    "pages/cats/cats",
    "pages/me/me"
  ],
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "Weixin",
    "navigationBarTextStyle": "black"
  },
  "tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "iconPath": "./icon/index.png",
        "selectedIconPath": "./icon/selected-index.png",
        "text": "首页"
      },
      {
        "pagePath": "pages/menu/menu",
        "iconPath": "./icon/menu.png",
        "selectedIconPath": "./icon/selected-menu.png",
        "text": "菜单"
      },
      {
        "pagePath": "pages/order/order",
        "iconPath": "./icon/order.png",
        "selectedIconPath": "./icon/selected-order.png",
        "text": "订单"
      },
      {
        "pagePath": "pages/cats/cats",
        "iconPath": "./icon/cats.png",
        "selectedIconPath": "./icon/selected-cats.png",
        "text": "购物车"
      },
      {
        "pagePath": "pages/me/me",
        "iconPath": "./icon/me.png",
        "selectedIconPath": "./icon/selected-me.png",
        "text": "我的"
      }
    ],
    "color": "#a0a0a0",
    "selectedColor": "#ff5762",
    "position": "bottom",
    "borderStyle": "white"
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

`app.json` 文件配置信息解读

  • pages 中的配置信息为:页面路径,只要有页面路径就必须配置
  • window window 窗口样式
  • tabBar tab 选项卡

实现底部菜单栏效果和代码结构

image-20230130185449262

# 3、tabBar 的位置

TIP

  • position 属性是 tabBar 的位置,仅支持 bottom / top,默认值为 bottom
  • 当设置 position 的属性值为 top 时,底部的 icon 图标会自动隐藏,变成 tab 选项卡切换模式。

效果如下:

image-20230130214518929

# 4、自定义 tabBar

TIP

自定义 tabBar 可以让开发者更加灵活地设置 tabBar 样式,以满足更多个性化的场景。

详细使用流程,点击查看官方文档 (opens new window)

由于自定义 tabBar 需要将小程序的 视图层、逻辑层、配置层相关的知识储备才能实现,目前先做了解,等全部学完这些知识后再来实现。

# 四、视图层的标签和样式、逻辑层交互

TIP

深入浅出微信小程序的视图层标签 与 样式,完成常用页面布局必备知识的掌握与实践。

# 1、什么是 WXML

TIP

# 2、WXML 和 HTML 的区别

TIP

详细了解 WXML 和 HTML 标签之间的区别

# 2.1、标签名称不同

TIP

  • HTML(div,span,img,a ...... 等)
  • WXML(view,text,image,navigator ...... 等)

在小程序中我们将类似 HTML 的标签叫做 组件

小程序组件 描述 相当于 HTML 标签中的
<view></view> 视图容器 (opens new window) <div></div>
<text></text> 文本 (opens new window) <span></span>
<image></image> 图片 (opens new window) <img/>
<navigator url="#"></navigator > 页面链接 (opens new window) <a href="#"></a>

注:

其他表单元素、媒体标签、导航 组件等 ... 详细查看 小程序官方文档的组件部分 (opens new window)

# 2.2、属性节点不同

TIP

  • HTML 中 超链接:<a href="#">超链接</a>
  • WXML 中 页面链接:<navigator url="/pages/index/index"></navigator >

# 2.3、WXML 提供了类似 Vue 中的模板语法

# 3、什么 WXSS

TIP

WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。WXSS 用来决定 WXML 的组件应该怎么显示。

作用:类似于网页开发中的 CSS 样式。详细内容可查阅小程序 WXSS 文档 (opens new window)

注:在小程序中是没有 DOM 和 BOM 的

# 4、WXSS 和 CSS 的区别

TIP

为了适应广大的前端开发者,WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。

.wxss 文件相当于 .css 文件,但又有不同

# 4.1、小程序新增了 rpx 尺寸单位 和 样式导入

TIP

  • CSS 中需要手动进行像素单位(px)换算,例如 rem
  • WXSS 在底层支持新的尺寸单位 rpx ,在不同大小的屏幕上小程序会自动进行换算
  • 样式导入:使用@import语句可以导入外联样式表

# 4.2、提供全局的样式 和 局部样式

TIP

  • 项目根目录中的 app.wxss 会作用于所有小程序页面
  • 局部页面的 .wxss 样式仅对当前页面生效

定义在 app.wxss 中的样式为全局样式,作用于每一个页面。在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。

# 4.3、WXSS 仅支持部分 CSS 选择器

目前支持的选择器有

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

可对照 CSS 选择器 (opens new window) 查看回顾,基本一致,但目前支持的选择器有限。

WXSS 优先级与 CSS 类似

image-20230214132429095

权重越高越优先。在优先级相同的情况下,后设置的样式优先级高于先设置的样式。

view {
  // 权重为 1
  color: blue;
}

.ele {
  // 权重为 10
  color: red;
}

#ele {
  // 权重为 100
  color: pink;
}

view#ele {
  // 权重为 1 + 100 = 101,优先级最高,元素颜色为orange
  color: orange;
}

view.ele {
  // 权重为 1 + 10 = 11
  color: green;
}

# 5、小程序尺寸单位

TIP

rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx

如在 iPhone6 上,屏幕宽度为375px,共有 750 个物理像素,则750rpx = 375px = 750物理像素1rpx = 0.5px = 1物理像素

设备 rpx 换算 px (屏幕宽度/750) px 换算 rpx (750/屏幕宽度)
iPhone5 1rpx = 0.42px 1px = 2.34rpx
iPhone6 1rpx = 0.5px 1px = 2rpx
iPhone6 Plus 1rpx = 0.552px 1px = 1.81rpx

注:

  • 建议:开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准。

# 6、样式导入

TIP

使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。

定义全局样式

/** common.wxss **/
.com-text {
  background-color: skyblue;
}

app.wxss 中导入全局样式 common.wxss

/** app.wxss **/
@import "./common/common.wxss";
.com-text {
  background-color: red;
}

# 7、内联样式

TIP

框架组件上支持使用 styleclass 属性来控制组件的样式。

  • style:静态的样式统一写到 class 中。style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度
<!--index.wxml-->
<view class="container">
  <text style="color: {{color}};">arry老师</text>
</view>

index.js

Page({
  data: {
    color: "red",
  },
});
  • class:用于指定样式规则,其属性值是样式规则中类选择器名(样式类名)的集合,样式类名不需要带上.,样式类名之间用空格分隔。
<view class="container title"></view>

# 8、小程序 JS 逻辑层交互,文件分类

TIP

在小程序中的 JS 文件分为三大类

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

image-20230330185214161

# 五、小程序的宿主环境

TIP

宿主环境(Host Environment)指的是程序运行所必须的依赖环境

Android 系统 和 iOS 系统是两个不同的宿主环境,Android 版的微信 App 是不能在 IOS 环境下运行的。所以,Android 是基于 Android 系统开发的软件的宿主环境,脱离了宿主环境的软件就没有任何意义。

详细查阅 小程序官方文档 - 小程序宿主环境 (opens new window)

# 1、常见的软件宿主环境

TIP

了解在我们日常的软件开发或生活中常用的 App 应用的宿主环境。

传统模式 VS 云服务器 - 宿主环境

image-20230330200745106

Android 系统 VS IOS 系统 - 宿主环境

image-20230330202242026

注:

我们可以看到,Android 系统下只能安装 Android 版的 App 应用,IOS 系统下只能安装 IOS 版的 App 应用。脱离了宿主环境的 App 软件就没有任何意义,就无法正常运行了。

因此我们说:宿主环境是程序运行所必须的依赖环境

# 2、小程序 - 宿主环境

TIP

移动端、PC 端的微信 是我们小程序的宿主环境

image-20230330203714326

注:

  • 小程序是基于微信环境进行安装运行的,即 微信是小程序的宿主环境
  • 小程序借助宿主环境(微信)提供的能力,可以完成需要普通的网页无法完成的功能。

如:调用底层 API (摄像头、录音、通讯录、地理位置、ETC ... 等)即具体了部分原生 App 的能力

# 3、小程序宿主环境包含内容

TIP

  • 通信模型
  • 运行机制
  • 组件
  • API

总结:小程序的宿主环境就是 微信,小程序中的所有能力都是由微信提供的

# 4、小程序的宿主环境 - 通信模型

TIP

深入浅出小程序宿主环境中的通信模型:通信主体、通信模型

# 4.1、通信的主体

TIP

小程序中通信的主体是渲染层(视图层) 和 逻辑层

  • ①、WXML 模块 和 WXSS 样式工作在渲染层
  • ②、JS 脚本工作在逻辑层

image-20230331001838912

# 4.2、通信模型

TIP

小程序中的通信模型分为两部分

  • 渲染层 和 逻辑层之间的通信:由微信客户端进行转发
  • 逻辑层 和 第三方服务器之间的通信:由微信客户端进行转发

img

# 5、小程序的宿主环境 - 运行机制

TIP

深入浅出微信小程序宿主环境中运行机制:小程序启动的过程、页面渲染的过程

# 5.1、小程序启动的过程

TIP

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

# 5.2、小程序页面渲染的过程

TIP

  • ①、加载解析页面的 .json 配置文件
  • ②、加载页面的 .wxml 模板 和 .wxss 样式
  • ③、执行页面的 .js 文件,调用 Page() 函数创建页面实例
  • ④、页面渲染完成
上次更新时间: 6/8/2023, 9:23:17 PM

大厂最新技术学习分享群

大厂最新技术学习分享群

微信扫一扫进群,获取资料

X