小程序生命周期

小程序并不是 HTML5 应用,而是更偏向于传统的 CS 架构,它是基于数据驱动的模式,一切皆组件(视图组件)。下面是小程序与普通 Web App 的对比。 普通 HTML5 都是执行在浏览器的宿主环境,浏览器提供 window、document 等 BOM 对象,但小程序没有 window、document,它更像是一个类似 Node.js 的宿主环境;因此在小程序内不能使用 document.querySelector 这类 DOM 选择器,也不支持 XMLHttpRequest、location、localStorage 等这些浏览器提供的 API,只能使用小程序自己实现的 API 小程序并非是直接通过 URL 访问的,而是通过信道服务进行通信和会话管理,所以它不支持 Cookie 存储,同时访问资源使用 wx.request 则不存在跨域的问题 小程序在 JavaScript 的模块化上支持 CommonJS,通过 require 加载,跟 Node.js 类似 小程序的页面样式完全继承了 CSS 的语法,但是在选择器上面会少一些,布局支持 flex 布局 小程序的整体框架采用面向状态编程方式,状态管理从 API 来看采用类似 Redux 的设计方式;单向数据绑定方式,当 View 在 Action 操作后,只能通过 Action 的业务处理来更新 View 页面组件模块上,WXML 提供了一整套的「自定义 UI 组件标签」,有些组件实际是 HTML5 实现的,有些组件为了解决权限、性能和适配等问题实际是 Native 实现的(如 map、input、canvas、video)

小程序生命周期包括应用的生命周期(逻辑层 App Service)和页面的生命周期(视图层 View),两者支持的事件不同,详见官方文档中的这张配图。

掌握了上面小程序实现原理的内容,再来看小程序的生命周期就很好理解了。 小程序启动时,会同时启动两个线程,一个负责页面渲染的 WebView(实际不止一个,后面讲解),一个负责逻辑的 JavaScriptCore。逻辑层初始化后会将初始化数据(app.js 中的 global data)通过 JSBridge 传递给渲染层进行渲染,渲染层 WebView 页面渲染完之后又会跟逻辑层通信。 理解了小程序架构和启动流程,小程序整个生命周期的流程只需要对着上面的流程图就可以很容易理解。

文章内容参照 https://juejin.im 掘金

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏移动开发面面观

React Native 一个开始

11520
来自专栏云瓣

[译]React 在服务端渲染的实现

原文地址:Server-Side React Rendering 原文作者:Roger Jin React 在服务端渲染的实现 React是最受欢迎的客户...

32570
来自专栏咸鱼不闲

python爬虫之初恋 selenium

selenium 是一个web应用测试工具,能够真正的模拟人去操作浏览器。 用她来爬数据比较直观,灵活,和传统的爬虫不同的是, 她真的是打开浏览器,输入表单,点...

15210
来自专栏数据小魔方

excel中的超链接函数

今天跟大家分享在excel中超链接函数的用法! ▼ 其实excel中想要达到超链接效果有很多种方法:直接手工设置、超链接函数、开发工具、VBA等都可以实现。但是...

52990
来自专栏iKcamp

微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具

第二章:小程序中级实战教程之预备篇    项目结构设计 教学视频地址:https://v.qq.com/x/page/q05544lzelw.html ...

23270
来自专栏前端架构与工程

Node.js建站笔记-使用react和react-router取代Backbone

斟酌之后,决定在《嗨猫》项目中引入react,整体项目偏重spa模式,舍弃部分server端的模板渲染,将一部分渲染工作交给前端react实现。 react拥有...

27190
来自专栏前端杂货铺

iframe编程的一些问题

前几天做一个用iframe显示曲线图的demo,发现对iframe的contentDocument绑定 onclick事件都无效,而在页面中对iframe.co...

35160
来自专栏极客编程

简单介绍一下vue2.0

Vue是用于构建用户界面的渐进框架。作者尤雨熙特别强调它与其他的框架不同,Vue是渐进式的框架,可以逐步采用,不必一下就通过框架去重构项目。 另外Vue的核心库...

19620
来自专栏前端杂谈

移动端引入的字体文件过大处理方法

1.1K220
来自专栏思考的代码世界

Python网络数据采集之采集JavaScript|第09天

21850

扫码关注云+社区

领取腾讯云代金券