微信小程序的线程架构【推荐】


Posted in Javascript onMay 14, 2019

小程序的线程架构

每个小程序包含一个描述整体程序的app实例多个描述页面的page

其中app由3个文件构成:

app.json 公共配置文件

app.wxss 公共样式文件

app.js 主体逻辑文件

page页面最多由4个文件构成:

page.jason 页面配置

page.wxml 页面结构

page.wxss 页面样式

page.js 页面主体逻辑

app.js和page.js中包含小程序在生命周期的每个阶段相应的事件。

典型的app.js代码结构如下:

App({
 onLaunch:function(){
  //小程序启动时执行的初始化工作
 },
 onShow:function(){
  //程序启动或从后台进入前台时,触发执行的操作
 },
 onHide:function(){
  //程序从前台进入后台时,触发执行的操作
 },
globalConf:{
 indexDate:'',
 matchData:''
},
dataCache:{},
globalData:''
})

典型的page.js代码结构如下:

Page({
 Data:{
}
 onLoad:function(){
  //页面加载时,执行的初始化工作
 },
 onReady:function(){
  //页面就绪后,触发执行的操作
 },
 onShow:function(){
  //页面打开时,触发执行的操作
 },
 onHide:function(){
  //页面隐藏时,触发执行的操作
 },
 onUnload:function(){
  //页面关闭时,触发执行的操作
 },
 //Events handler
  viewTap:function(){
   this.setData({
    text:'set some data for updating view.'
   })
}
})

 一个完整的小程序执行的过程或生命周期如下:

app.onLaunch-->app.onShow-->page1.onLoad-->page1.onShow-->page1.onReady
(打开程序,第一个页面page1加载完成)
-->page1.onHide-->page2.onLoad-->page2.onShow-->page2.onReady 
(从第1个页面打开第2个页面)
-->page2.onUnload-->page1.onShow-->...-->app.onUnload 
(关闭page2,返回page1...退出小程序)

一个page的生命周期开始于onLoad事件,在整个生命周期内onLoad、onReady、onUnload这三个事件各执行一次,onHide和onShow事件在每次页面隐藏和显示时都会触发。

当用户手动触发小程序的退出箭头时,小程序仅触发app.Hide,下次进入小程序时会触发app.onShow以及当前页的page.onShow。仅当小程序在后台运行超过一定时间未被唤起、或者用户手动在小程序的控制栏里点击退出程序、或者小程序内存占用过大被系统关闭时,小程序将被销毁,会触发app.onUnload事件。

每个小程序分为2个线程,view与appServer。

view 线程   appServer线程
.wxml + wxss   ios:safari Android:X5浏览器 开发工具:chrome .js   ios:JavaScriptCore Android:X5内核 开发工具:nwjs

view线程负责解析渲染页面(wxml和wxss文件)。

appServer线程负责运行js。appServer线程运行在jsCore(安卓下运行在X5中,开发工具运行在nwjs中)。由于js不跑在WebView里,就不能直接操纵DOM和BOM,这就是小程序没有window全局变量的原因。

总结

以上所述是小编给大家介绍的微信小程序的线程架构,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
Apr 27 Javascript
Javascript操作URL函数修改版
Nov 07 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
Dec 12 Javascript
JS实现隔行换色的表格排序
Mar 27 Javascript
微信小程序商品到详情的实现
Jun 27 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
Jul 16 Javascript
node中使用log4js4.x版本记录日志的方法
Aug 20 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
Aug 21 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
Sep 20 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
Openlayers实现图形绘制
Sep 28 Javascript
jquery实现选项卡切换代码实例
May 14 #jQuery
Vue表单之v-model绑定下拉列表功能
May 14 #Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 #jQuery
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 #Javascript
vue实现动态按钮功能
May 13 #Javascript
详解小程序之简单登录注册表单验证
May 13 #Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
May 13 #Javascript
You might like
PHP初学者头疼问题总结
2006/10/09 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
javascript模拟map输出与去除重复项的方法
2015/02/09 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
js如何验证密码强度
2020/03/18 Javascript
Python基类函数的重载与调用实例分析
2015/01/12 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
python实现随机漫步算法
2018/08/27 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
Pygame框架实现飞机大战
2020/08/07 Python
努比亚手机官网:nubia
2016/10/06 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
事业单位绩效考核实施方案
2014/03/27 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
史上最牛辞职信
2015/05/13 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL