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


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实现动态CSS换肤技术的脚本
Jun 29 Javascript
Knockoutjs的环境搭建教程
Nov 26 Javascript
javascript初学者常用技巧
Sep 02 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
jQuery中Find选择器用法示例
Sep 21 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
jQuery基于cookie实现换肤功能实例
Oct 14 jQuery
node文件批量重命名的方法示例
Oct 23 Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 Javascript
JavaScript 作用域实例分析
Oct 02 Javascript
vue3实现v-model原理详解
Oct 09 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
DIY实用性框形天线
2021/03/02 无线电
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
《巨人的花园》教学反思
2014/02/12 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
志愿者活动总结报告
2014/06/27 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
Python一些基本的图像操作和处理总结
2021/06/23 Python
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python