微信小程序项目结构
app.js:页面逻辑实现
app.json: 标题栏,状态栏,页面的管理
wxml:页面内容编辑
wxss: 页面样式编辑
project.config.json:小程序配置文件依赖
程序文件结构
文件名 | 必需 | 作用 |
---|---|---|
app.js | 是 | 小程序逻辑 |
app.json | 是 | 小程序公共设置 |
app.wxss | 否 | 小程序公共样式表 |
页面文件结构
文件类型 | 必需 | 作用 |
---|---|---|
wxml | 是 | 页面结构 |
wxss | 否 | 页面样式 |
json | 否 | 页面配置 |
js | 是 | 页面逻辑 |
文件类型必需作用wxml是否否是 | ||
【注意:为了方便开发者减少配置项,规定描述页面的四个文件,必须具有相同的路径与文件名】 |
微信小程序
微信小程序的目录结构及作用
微信小程序
微信小程序的目录结构及作用
- pages 用来存放所有小程序的页面
- utils 用来存放工具类性质的模块(例如:格式化时间的自定义函数)
- app.js 小程序项目的入口文件
- app.json 小程序项目的全局配置文件
- app.wxss 小程序项目的全局样式文件
- project.config.json 项目的配置文件
- sitemap.json 用来配置小程序及其页面是否允许被微信索引
小程序 官方建议把所有小程序的页面,都存放在 pages 目录中,以单独的文件夹存在。
其构成文件结构及作用:
- . js 文件 (页面的脚本文件,存放页面的数据,事件处理函数等)
- .json 文件(当前页面的配置文件,配置窗口的外观,表现等)
- .wxml 文件(页面的模板结构文件)
- .wxss 文件(当前页面的样式表文件)
app.json
app.json 是当前小程序的全局配置,包括了小程序的所有页面路径,窗口外观,界面表现,底部 tabl 等
{
// 用来记录当前小程序所有页面的路径
"pages": [
"pages/index/index",
"pages/logs/logs"
],
// 全局定义小程序所有页面的背景色,文本颜色等
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "Weixin",
"navigationBarTextStyle": "black"
},
// 全局定义 小程序组件说使用的样式模板
"style": "v2",
// 用来指明 sitemap.json 的位置
"sitemapLocation": "sitemap.json",
"lazyCodeLoading": "requiredComponents"
}
project.config.json
projecr.config.json 是项目配置文件,用来记录我们对小程序开发工具所做的个性化配置
{
"description": "项目配置文件",
"packOptions": {
"ignore": [],
"include": []
},
"setting": {
"urlCheck": true,
"es6": true,
"enhance": false,
"postcss": true,
"preloadBackgroundData": false,
"minified": true,
"newFeature": false,
"coverView": true,
"nodeModules": false,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": false,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"useMultiFrameRuntime": true,
"useApiHook": true,
"useApiHostProcess": true,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"enableEngineNative": false,
"bundle": false,
"useIsolateContext": true,
"useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"userConfirmedBundleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true,
"condition": false
},
"compileType": "miniprogram",
"libVersion": "2.25.3",
"appid": "wx324c2513fd990469",
"projectname": "miniprogram-1",
"condition": {
},
"editorSetting": {
"tabIndent": "insertSpaces",
"tabSize": 2
}
}
- setiing 中保存了编译相关的配置
- projectname 中保存的是项目名称
- appid 中保存的是小程序的 账号ID
sitemap.json
sitemap.json 文件用来 配置小程序 页面 是否允许 微信索引。
小程序代码的构成 - WXML 模板
wxml 与 html 区别:
- 标签名称不同
- HTML (div, span,img,a)
- WXML (view,text,image,navigator)
- 属性节点不同
- <a href="#">超链接</a>
- <navigator url="/pages/home/home"></navigator>
- 提供了类似于 Vue 中的模板语法
- 数据绑定
- 列表渲染
- 条件渲染
小程序代码的构成 - WXSS 样式
wxss 与 css 的区别
- 新增 rpx 尺寸单位
- css 中 需要手动进行像素单位换算,例如 rem
- wxss 在底层支持 新的尺寸单位 rpx,在不同大小的屏幕上小程序会自动进行换算
- 提供了全局样式和局部样式
- 项目根目录中的app.wxss 会 作用于所有小程序页面
- 局部页面的 .wxss 样式仅对当前页面生效
- wxss 仅支持部分 CSS 选择器
- .class 和 #id
- element
- 并集选择器、后代选择器
- ::after 和 ::before 等伪类选择器
小程序代码的构成 - JS 逻辑交互
小程序中 .js 文件的分类:
- app.js
- 是整个小程序项目的入口文件,通过调用 App() 函数来启动整个小程序
- 页面的.js 文件
- 是页面的入口文件,通过调用 Page() 函数 来创建并运行页面
- 普通的.js 文件
- 是普通的功能模块文件,用来封装 公共的函数或属性 供页面使用
小程序的宿主环境
宿主 环境 (host environment) 指的是程序运行所必须的依赖环境。
小程序的宿主环境:
通信模型
小程序中通信的主体是 渲染层 和逻辑层:
- wxml 模板和 wxss 样式 工作在渲染层
- js 脚本工作在逻辑层
小程序中的 通信模型 分为两部分:
- 渲染层和逻辑层 之间的通信
- 由微信客户端进行转发
- 逻辑层和第三方服务器之间的通信
- 由微信客户端进行转发
运行机制
组件
API
小程序启动
- 把小程序的代码包下载到本地
- 解析 app.json 全局配置文件
- 执行 app.js 小程序入口文件,调用 App() 创建 小程序实例
- 渲染小程序首页
- 小程序启动完成
页面渲染
- 加载解析页面的 .json 配置文件