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


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 构造函数,公有,私有特权和静态成员定义方法
Nov 30 Javascript
js实现幻灯片播放图片示例代码
Nov 07 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
Mar 04 Javascript
浏览器兼容的JS写法总结
Apr 27 Javascript
JavaScript中原型链存在的问题解析
Sep 25 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
jQuery实现模拟flash头像裁切上传功能示例
Dec 11 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
vue动画打包后失效问题的解决方法
Sep 18 Javascript
BootStrap模态框闪退问题实例代码详解
Dec 10 Javascript
详解Vue.js中引入图片路径的几种方式
Jun 17 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
Jun 21 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中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
php目录操作实例代码
2014/02/21 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
Python提取网页中超链接的方法
2016/09/18 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
django的csrf实现过程详解
2019/07/26 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
中学教师管理制度
2014/01/14 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
python 解决微分方程的操作(数值解法)
2021/05/26 Python
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers