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的设定

url的参数的传递:
?来分离path和query
&来连接多个参数
urlencode:转义特殊字符
urlencode怎么使用:

页面数据的传递和更新

setData()方法
注意点:
1、只设置不调用setData方法将无效且会造成数据不统一的后果
2、setData是异步的,第一个参数是要传递的变量,第二个参数是成功后的回调函数
3、只需要设置改变的值,所以要遵循一个原则:每次只设置需要改变的最小单位数据
4、不能设置变量为undefined

小程序快速入门:坏境和生命周期相关推荐

  1. 视频教程-微信小程序快速入门视频课程-微信开发

    微信小程序快速入门视频课程 北京八维研修学院技术工程师,5年大型项目实战开发经验,3年授课经验. 孟宪杰 ¥168.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 AP ...

  2. 微信小程序快速入门+四个实战小程序(一)——入门准备

    一)系列达成目标介绍 二)小程序创建的准备 1)注册开发者账号 2)下载编译器 ------------------------------------------------------ 一)系列达 ...

  3. 微信小程序快速入门【一】

    微信小程序快速入门[一] 文章目录 微信小程序快速入门[一]

  4. 小程序快速入门到项目开发 2(小程序appID获取和目录结构)

    你好,[程序职场]专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率 ...

  5. 微信小程序快速入门 --项目介绍

    小程序项目的基本构成 ① pages 用来存放所有小程序的页面 ② utils 用来存放工具性质的模块(例如:格式化时间的自定义模块) ③ app.js 小程序项目的入口文件 ④ app.json 小 ...

  6. 小程序快速入门到项目开发 7 (网络通讯和数据解析)

    你好,[程序职场]专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率 ...

  7. 微信小程序把玩(四)应用生命周期

    为什么80%的码农都做不了架构师?>>>    App() 函数用来注册一个小程序,注意必须在 app.js 中注册,且不能注册多个. 使用方式也跟Android中的Applicat ...

  8. 小程序初始化服务器数据,微信小程序 项目实战(一)生命周期 配置服务器信息 splash启动页...

    步骤一:小程序 生命周期 //app.js App({ onLaunch: function () { //当小程序初始化完成时,会触发onLaunch(全局只触发一次) }, onShow: fun ...

  9. 微信小程序开发---应用与页面的生命周期

    App App() App() 函数用来注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等. object参数说明: 属性 类型 描述 触发时机 onLaunch Functi ...

  10. 如何开发微信小程序?(入门须知)

    目录 小程序的介绍 什么是小程序? 小程序可以干什么? 相关资料 开始 申请帐号 安装开发工具 第一个小程序 编译预览 电商小程序案例项目演示 目录结构 小程序代码构成 JSON 配置 小程序配置 a ...

最新文章

  1. 008_Restfull请求风格
  2. Prometheus Targets动态配置
  3. copy 扩展名 包含子文件夹 文件 到某个 文件夹
  4. python 装饰器(可以接收多个值)
  5. vue.js环境部署
  6. oa 触发器导出流程html,哪些配套产品帮南京OA画龙点睛
  7. Dadroit JSON Viewer 查看json文件的利器
  8. i7 11800h参数
  9. 测试理论-代码的检查,走查(三)
  10. Liunx实现超级签名详细攻略(一)超级签名简介
  11. 常用电源管理稳压IC
  12. APP架构构思基本思路初稿
  13. table属于html标记吗,table标签是什么意思
  14. 如何选择创建Maven的archetype
  15. 微信小程序按钮实现点击复制功能的步骤
  16. 数据结构 实验一 熟悉C++的编程环境
  17. Eth 01 - Eth以太网控制器驱动概述和API讲解
  18. 震惊!!!史上最强 python 智能问答系统现世
  19. python apkg_Python 自动加固APK
  20. 解决[WARNING] Could not transfer metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metada

热门文章

  1. Spring Cloud Alibaba Sentinel之持久化篇
  2. Web开发之Cookie
  3. JavaScript 大小转化B KB MB GB等的转化
  4. MySQL完全自学手册
  5. 资深CTO带来的8条Serverless最佳实践
  6. MySQL5.6 新特性之GTID
  7. Excel工作簿的拆分
  8. VS2010编写动态链接库DLL及单元测试用例,调用DLL测试正确性
  9. [老老实实学WCF] 第五篇 再探通信--ClientBase
  10. element-ui自定义手机号的验证