小程序快速入门:坏境和生命周期
1、JSCore到底是个什么东西?
动态渲染原理和过程:
1、wxml会被转换成js对象来表达这个page
2、js对象会被转化成dom
3、逻辑层数据发生改变,调用setData
4、对比新旧dom,将差异应用到原来的dom中,从而实现动态渲染
小程序宿主环境的三个部分:
渲染层:和数据绑定,展示页面;
逻辑层:产生数据,操作数据,发起数据传递请求,发起网络请求;
native:从逻辑层接收数据传递请求并转发到渲染层、从逻辑层接收网络请求并通过native发送请求;
说白了,就是微信把操作dom对象的一系列操作封装在了setData方法中,省去了操作dom的同时,还提供了wxml+wxss+api的环境,使开发者不用重复造轮子,实现快速、简单的开发方式。
生命周期
1、app的生命周期
小程序通过app.js中的App()函数注册一个小程序app,可以通过getApp()获取到这个单例对象,类似于iOS中的Appdelegate。
App()函数中默认注册了onLaunch、onShow、onHide、onError四个回调函数:
onLaunch:初始化完成,全局只有一次
onShow:加载完成或者从后台进入前台
onHide:从前台进入后台
onError:脚本错误、api调用失败
App()函数中还可以注册任意的自定义函数和变量,都可以通过getApp().xxx获取到;
onLauch和onShow可以通过参数获取小程序启动或者显示的一些信息:
App({onLaunch: function(options) { console.log(options) },onShow: function(options) { console.log(options) }
})
线程问题
1、每个页面都有一个独立的webview线程渲染页面
2、所有的js脚本都运行在jscore线程中
由此,需要注意几个问题:
1、页面跳转时,在跳转之前需要清楚无效的定时器,比如setTimeout()、setInterval()等
2、如果是同一个jscore线程,那么多个page.js之间是如何实现模块化的呢?是否会相互影响?
经测试,确实是不想不影响。如果在page2.js中打印page1.js中的全局变量,直接会报错,变量未定义,程序无法继续运行
2、页面的生命周期
小程序中,app通过Page()函数来注册页面,前提是当前页面需要在app.json中的pages中声明。
一个页面是分三部分组成:界面、配置和逻辑。界面由WXML文件和WXSS文件来负责描述,配置由JSON文件进行描述,页面逻辑则是由JS脚本文件负责。一个页面的文件需要放置在同一个目录下,其中WXML文件和JS文件是必须存在的,JSON和WXSS文件是可选的。
页面跳转/切换
跳转url的特殊之处:url是相对url,且以当前js文件所处的文件夹为起始路径,例子:
url的参数的传递:
?来分离path和query
&来连接多个参数
urlencode:转义特殊字符
urlencode怎么使用:
页面数据的传递和更新
setData()方法
注意点:
1、只设置不调用setData方法将无效且会造成数据不统一的后果
2、setData是异步的,第一个参数是要传递的变量,第二个参数是成功后的回调函数
3、只需要设置改变的值,所以要遵循一个原则:每次只设置需要改变的最小单位数据
4、不能设置变量为undefined
小程序快速入门:坏境和生命周期相关推荐
- 视频教程-微信小程序快速入门视频课程-微信开发
微信小程序快速入门视频课程 北京八维研修学院技术工程师,5年大型项目实战开发经验,3年授课经验. 孟宪杰 ¥168.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 AP ...
- 微信小程序快速入门+四个实战小程序(一)——入门准备
一)系列达成目标介绍 二)小程序创建的准备 1)注册开发者账号 2)下载编译器 ------------------------------------------------------ 一)系列达 ...
- 微信小程序快速入门【一】
微信小程序快速入门[一] 文章目录 微信小程序快速入门[一]
- 小程序快速入门到项目开发 2(小程序appID获取和目录结构)
你好,[程序职场]专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率 ...
- 微信小程序快速入门 --项目介绍
小程序项目的基本构成 ① pages 用来存放所有小程序的页面 ② utils 用来存放工具性质的模块(例如:格式化时间的自定义模块) ③ app.js 小程序项目的入口文件 ④ app.json 小 ...
- 小程序快速入门到项目开发 7 (网络通讯和数据解析)
你好,[程序职场]专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率 ...
- 微信小程序把玩(四)应用生命周期
为什么80%的码农都做不了架构师?>>> App() 函数用来注册一个小程序,注意必须在 app.js 中注册,且不能注册多个. 使用方式也跟Android中的Applicat ...
- 小程序初始化服务器数据,微信小程序 项目实战(一)生命周期 配置服务器信息 splash启动页...
步骤一:小程序 生命周期 //app.js App({ onLaunch: function () { //当小程序初始化完成时,会触发onLaunch(全局只触发一次) }, onShow: fun ...
- 微信小程序开发---应用与页面的生命周期
App App() App() 函数用来注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等. object参数说明: 属性 类型 描述 触发时机 onLaunch Functi ...
- 如何开发微信小程序?(入门须知)
目录 小程序的介绍 什么是小程序? 小程序可以干什么? 相关资料 开始 申请帐号 安装开发工具 第一个小程序 编译预览 电商小程序案例项目演示 目录结构 小程序代码构成 JSON 配置 小程序配置 a ...
最新文章
- 008_Restfull请求风格
- Prometheus Targets动态配置
- copy 扩展名 包含子文件夹 文件 到某个 文件夹
- python 装饰器(可以接收多个值)
- vue.js环境部署
- oa 触发器导出流程html,哪些配套产品帮南京OA画龙点睛
- Dadroit JSON Viewer 查看json文件的利器
- i7 11800h参数
- 测试理论-代码的检查,走查(三)
- Liunx实现超级签名详细攻略(一)超级签名简介
- 常用电源管理稳压IC
- APP架构构思基本思路初稿
- table属于html标记吗,table标签是什么意思
- 如何选择创建Maven的archetype
- 微信小程序按钮实现点击复制功能的步骤
- 数据结构 实验一 熟悉C++的编程环境
- Eth 01 - Eth以太网控制器驱动概述和API讲解
- 震惊!!!史上最强 python 智能问答系统现世
- python apkg_Python 自动加固APK
- 解决[WARNING] Could not transfer metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metada