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


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 相关文章推荐
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
Mar 17 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
Nov 30 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
Dec 12 Javascript
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
jquery自定义插件——window的实现【示例代码】
May 06 Javascript
jQuery滚动新闻实现代码
Jun 26 Javascript
JS实现添加,替换,删除节点元素的方法
Jun 30 Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
Dec 29 Javascript
jQuery解析json格式数据示例
Sep 01 jQuery
express如何解决ajax跨域访问session失效问题详解
Jun 20 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
php whois查询API制作方法
2011/06/23 PHP
PHP中each与list用法分析
2016/01/08 PHP
php中__toString()方法用法示例
2016/12/07 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
python字典排序的方法
2019/10/12 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
构建高效的python requests长连接池详解
2020/05/02 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
自我评价是什么
2014/01/04 职场文书
讲座主持词
2014/03/20 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
对讲机知识
2022/04/07 无线电