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


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 20 Javascript
javascript表单验证使用示例(javascript验证邮箱)
Jan 07 Javascript
使用jquery实现IE下按backspace相当于返回操作
Mar 18 Javascript
JQuery控制radio选中和不选中方法总结
Apr 15 Javascript
jQuery满屏焦点图左右滚动特效代码分享
Sep 07 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
Aug 24 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
JS库之wow.js使用方法
Sep 14 Javascript
在HTML文档中嵌入JavaScript的四种方法
May 07 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
Apr 08 Javascript
vue-cli4项目开启eslint保存时自动格式问题
Jul 13 Javascript
JS常用跨域方法实现原理解析
Dec 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
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
初识php MVC
2014/09/10 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
非常好的js代码
2006/06/27 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
js实现简单的打印表格
2020/01/15 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
python操作MySQL数据库具体方法
2013/10/28 Python
Python读写Excel文件方法介绍
2014/11/22 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
python pytest进阶之fixture详解
2019/06/27 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
python openssl模块安装及用法
2020/12/06 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
海外淘书首选:AbeBooks
2017/07/31 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
学生会主席演讲稿
2014/04/25 职场文书
出租车拒载检讨书
2015/01/28 职场文书
村官2015年度工作总结
2015/10/14 职场文书
七年级生物教学反思
2016/02/20 职场文书
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL