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


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 相关文章推荐
来自chinaz的ajax获取评论代码
May 03 Javascript
用js模拟JQuery的show与hide动画函数代码
Sep 20 Javascript
web css实现整站样式互相切换
Oct 29 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
Jun 09 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
Jul 08 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
bootstrap中的 form表单属性role="form"的作用详解
Jan 20 Javascript
微信小程序如何获取openid及用户信息
Jan 26 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
Sep 04 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
Sep 29 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备份数据库类分享
2015/04/14 PHP
纯php生成随机密码
2015/10/30 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
JS阻止用户多次提交示例代码
2014/03/26 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
Python使用django搭建web开发环境
2017/06/09 Python
python如何定义带参数的装饰器
2018/03/20 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
2014年两会学习心得体会
2014/03/17 职场文书
2014年信用社工作总结
2014/11/25 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
Python中的嵌套循环详情
2022/03/23 Python