【⼩程序】开发⽂档摘要
此篇⽂章⽤于⼩程序的开发⽂档摘要,主要记录概念性的,或者说理解性的东西,对于那些硬性代码,反⽽不做太多汇总。
⼀、⼩程序简介
⼩程序是⼀种全新的连接⽤户与服务的⽅式,它可以在内被便捷地获取和传播,同时具有出⾊的使⽤体验。
⼆、 Web 资源离线存储是⾯向 Web 开发者提供的基于内的 Web 加速⽅案。
通过使⽤离线存储,Web 开发者可借助提供的资源存储能⼒,直接从本地加载 Web 资源⽽不需要再从服务端拉取,从⽽减少⽹页加载时间,为⽤户提供更优质的⽹页浏览体验。每个下所有 Web App 累计最多可缓存 5M 的资源。
三、⼩程序与普通⽹页开发的区别
1. ⼩程序的主要开发语⾔是 JavaScript ,⼩程序的开发同普通的⽹页开发相⽐有很⼤的相似性。
2. ⽹页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运⾏可能会导致页⾯失去响应,⽽在⼩程序中,⼆者是分开的,
分别运⾏在不同的线程中。⽹页开发者可以使⽤到各种浏览器暴露出来的 DOM API,进⾏ DOM 选中和操作。⼩程序的逻辑层和渲染层是分开的,逻辑层运⾏在 JSCore 中,并没有⼀个完整浏览器对象,因⽽缺少相关的DOM API和BOM API。这⼀区别导致了前端开发⾮常熟悉的⼀些库,例如 jQuery、 Zepto 等,在⼩程序中是⽆法运⾏的。
四、⼩程序的JSON配置
JSON 是⼀种数据格式,并不是编程语⾔,在⼩程序中,JSON扮演的静态配置的⾓⾊。
项⽬的根⽬录有⼀个 app.json 和 fig.json
每个页⾯⽬录下都有⼀个相应的 page.json
1. app.json 是当前⼩程序的全局配置,包括了⼩程序的所有页⾯路径、界⾯表现、⽹络超时时间、底部 tab 等。
2. fig.json,你在⼯具上做的任何配置都会写⼊到这个⽂件,当你重新安装⼯具或者换电脑⼯作时,你只要载⼊同⼀个项⽬
的代码包,开发者⼯具就⾃动会帮你恢复到当时你开发项⽬时的个性化配置,其中会包括编辑器的颜⾊、代码上传时⾃动压缩等等⼀系列选项。
3. page.json,让开发者可以独⽴定义每个页⾯的⼀些属性,例如顶部颜⾊、是否允许下拉刷新等等。
五、MVVM的开发⽅式
写文章的小程序MVVM 的开发模式(例如 React, Vue),提倡把渲染和逻辑分离。简单来说就是不要再让 JS 直接操控 DOM,JS 只需要管理状态即可,然后再通过⼀种模板语法来描述状态和界⾯结构的关系即可。
⼩程序的框架也是⽤到了这个思路。
六、宿主环境
我们称客户端给⼩程序所提供的环境为宿主环境。⼩程序借助宿主环境提供的能⼒,可以完成许多普通⽹页⽆法完成的功能。
七、渲染层和逻辑层
⼩程序的运⾏环境分成渲染层和逻辑层,其中 WXML 模板和 WXSS 样式⼯作在渲染层,JS 脚本⼯作在逻辑层。
渲染层就是页⾯框架和样式,逻辑层就是动态交互js。
⼩程序的渲染层和逻辑层分别由2个线程管理:渲染层的界⾯使⽤了WebView 进⾏渲染;逻辑层采⽤JsCore线程运⾏JS脚本。⼀个⼩程序存在多个界⾯,所以渲染层存在多个 WebView线程,这两个线程的通信会经由客户端(下⽂中也会采⽤Native来代指客户端)做中转,逻辑层发送⽹络请求也经由Native转发,⼩程序的通信模型下图所⽰。
⼋、客户端在打开⼩程序之前,会把整个⼩程序的代码包下载到本地。
九、⼩程序启动之后,在 app.js 定义的 App 实例的 onLaunch 回调会被执⾏
⼗、页⾯配置加载顺序
客户端会先根据 .json 配置⽣成⼀个界⾯,紧接着客户端就会装载这个页⾯的 WXML 结构和 WXSS 样式。最后客户端会装载 .js,可以看到.js⽂件中就是⼀个page构造器,Page 页⾯构造器,这个构造器就⽣成了⼀个页⾯。在⽣成页⾯的时候,⼩程序框架会把 data 数据和 index.wxml ⼀起渲染出最终的结构,在渲染完界⾯之后,页⾯实例就会收到⼀个 onLoad 的回调。
⼗⼀、sitemap
现已开放⼩程序内搜索,开发者可以通过 sitemap.json 配置,或者管理后台页⾯收录开关来配置其⼩程序页⾯是否允许索引。当开发者允许索引时,会通过爬⾍的形式,为⼩程序的页⾯内容建⽴索引。当⽤户的搜索词条触发该索引时,⼩程序的页⾯将可能展⽰在搜索结果中。 爬⾍访问⼩程序内页⾯时,会携带特定的 user-agent:mpcrawler 及场景值:1129。需要注意的是,若⼩程序爬⾍发现的页⾯数据和真实⽤户的呈现不⼀致,那么该页⾯将不会进⼊索引中。
⼗⼆、逻辑层 App Service
⼩程序开发框架的逻辑层使⽤ JavaScript 引擎为⼩程序提供开发者 JavaScript 代码的运⾏环境以及⼩程序的特有功能。逻辑层将数据进⾏处理后发送给视图层,同时接受视图层的事件反馈。
开发者写的所有代码最终将会打包成⼀份 JavaScript ⽂件,并在⼩程序启动的时候运⾏,直到⼩程序销毁。这⼀⾏为类似ServiceWorker,所以逻辑层也称之为 App Service。
在 JavaScript 的基础上,我们增加了⼀些功能,以⽅便⼩程序的开发:
1. 增加 App 和 Page ⽅法,进⾏程序注册和页⾯注册。
2. 增加 getApp 和 getCurrentPages ⽅法,分别⽤来获取 App 实例和当前页⾯栈。
3. 提供丰富的 API,如⽤户数据,扫⼀扫,⽀付等特有能⼒。
4. 提供模块化能⼒,每个页⾯有独⽴的作⽤域。
注意:⼩程序框架的逻辑层并⾮运⾏在浏览器中,因此 JavaScript 在 web 中⼀些能⼒都⽆法使⽤,如 window,document 等。
⼗三、APP.js中的⽣命周期函数(⼩程序的⽣命周期回调)
其中错误监听,页⾯不存在监听,系统主题变化监听函数均在APP函数中。
App() 必须在 app.js 中调⽤,必须调⽤且只能调⽤⼀次。不然会出现⽆法预期的后果。
整个⼩程序只有⼀个 App 实例,是全部页⾯共享的。开发者可以通过 getApp ⽅法获取到全局唯⼀的 App 实例,获取App上的数据或调⽤开发者注册在 App 上的函数。
⼗四、page构造器
对于⼩程序中的每个页⾯,都需要在页⾯对应的 js ⽂件中进⾏注册,指定页⾯的初始数据、⽣命周期回调、事件处理函数等。简单的页⾯可以使⽤ Page() 进⾏构造。
onLoad(Object query) 页⾯加载时触发。⼀个页⾯只会调⽤⼀次,可以在 onLoad 的参数中获取打开
当前页⾯路径中的参数。onShow() 页⾯显⽰/切⼊前台时触发。
onReady() 页⾯初次渲染完成时触发。⼀个页⾯只会调⽤⼀次,代表页⾯已经准备妥当,可以和视图层进⾏交互。
onHide() 页⾯隐藏/切⼊后台时触发。
onUnload() 页⾯卸载时触发。
页⾯page的⽣命周期:
⼗五、不要在 Launch 的时候调⽤ getCurrentPages(),此时 page 还没有⽣成。
⼗六、Component() 构造器
Page 构造器适⽤于简单的页⾯。但对于复杂的页⾯, Page 构造器可能并不好⽤。
此时,可以使⽤ Component 构造器来构造页⾯。 Component 构造器的主要区别是:⽅法需要放在 methods: { } ⾥⾯。
⼗七、页⾯可以引⽤ behaviors 。 behaviors 可以⽤来让多个页⾯有相同的数据字段和⽅法。
⼗⼋、页⾯路由
在⼩程序中所有页⾯的路由全部由框架进⾏管理。框架以页⾯栈的形式维护了当前的所有页⾯。开发者可以使⽤ getCurrentPages() 函数获取当前页⾯栈。
⼗九、模块化
可以使⽤ports导出公共模板函数或数据。
⼆⼗、⼩程序api
⼩程序开发框架提供丰富的原⽣ API,可以⽅便的调起提供的能⼒,如获取⽤户信息,本地存储,⽀付功能等。通常分为⼏种类型:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。