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


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验证图片类型(扩展名)的函数分享
May 05 Javascript
JavaScript中的原型链prototype介绍
Dec 30 Javascript
js中flexible.js实现淘宝弹性布局方案
Jun 23 Javascript
AngularJS基础 ng-mouseleave 指令详解
Aug 02 Javascript
原生js更改css样式的两种方式
Mar 15 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
React Native 通告消息竖向轮播组件的封装
Aug 25 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
Oct 08 Javascript
vue实现与安卓、IOS交互的方法
Nov 02 Javascript
Electron实现应用打包、自动升级过程解析
Jul 07 Javascript
小程序自定义圆形进度条
Nov 17 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常用文件函数和目录函数整理
2017/08/17 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Python实现单词拼写检查
2015/04/25 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
Python面向对象编程基础实例分析
2020/01/17 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
Python如何获取文件路径/目录
2020/09/22 Python
Python list和str互转的实现示例
2020/11/16 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
一套英文Java笔试题面试题
2016/04/21 面试题
自荐书模板
2013/12/19 职场文书
大学军训通讯稿
2014/01/13 职场文书
安全保证书范文
2014/04/29 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
JavaScript流程控制(分支)
2021/12/06 Javascript
python 远程执行命令的详细代码
2022/02/15 Python