小程序与普通网页的区别 :
1.线程
网页开发是单线程的,js线程和渲染线程是互斥的。
小程序有一条js逻辑线程和多条渲染线程两种线程。
2.DOM
网页开发可以操作DOM。
小程序中不能操作DOM。
3.运行环境
网页是在PC 端和移动端的浏览器上运行
小程序是在android、iOS、小程序开发者工具上运行。
通信模型:
渲染层、逻辑层和服务端的通信都要由微信用户端转发。
小程序的渲染层由WebView 线程运行
小程序的逻辑层由JsCore 线程运行。
小程序的渲染层里有多个界面,一个界面对应一个WebView 线程。
逻辑层是单线程,只有的一个JsCore 线程。
常见的json 配置文件有3种:
小程序配置 app.json:做全局配置
页面配置 page.json:对小程序具体页面的配置
工具配置 project.config.json:对开发者工具的个性化配置,如域名校验、代码上传时自动压缩等
WXML 模板:
WXML 全称是 WeiXin Markup Language 微信标记语言,结合小程序的基础组件、事件系统,可以构建出页面的结构。
创建WXML 文件的方法:在app.json 中的“pages/index/index” 上新增一行 “pages/wxml/index” ,便会自动创建WXML 文件
注意:在WXML里的标签,就是组件的意思,这些组件是微信给封装好的。我们以后也可以自定义组件,这会在后面会详说。
数据绑定:
WXML 通过 {{ 变量名 }} 来映射js里的 data 数据。
变量名是大小写敏感的,也就是说 {{name}} 和 {{NAME}} 是两个不同的变量。
没有被定义的变量的或者是被设置为 undefined 的变量不会被同步到 wxml 中。
示例:
<text id="{{id}}">{{msg}}</text>
data: {
id:1,
msg:'开课吧’
},
注:{{}} 叫做Mustache 语法。
{{}} 中的语法逻辑:
{{}} 具有两种功能:动态渲染、逻辑运算。
{{}} 中除了变量名,还可以放置数字、字符串,并且做一些逻辑运算。
常见的逻辑运算的语法:
算数运算
字符串拼接
三元运算
文件组成:
项目公共样式:app.wxss,它会作用到小程序的每个页面。
页面样式:与app.json注册过的页面同名且位置同级的WXSS文件。
内联样式:在wxml 中,写在标签的style 属性里的样式
其它样式:可以被项目公共样式和页面样式引用的样式,比如模板文件里的样式。
注:小程序中不需要考虑样式文件的请求数量,不用像前端那样合并css 文件。
wxss和css区别:
wxss拥有相对的尺寸单位rpx,一个单位的rpx 是手机宽度的1/750
外联样式可用@import 导入
background-image 里的图片为网络图片时,其图片所在网络的域名要经过微信许可。
position 为absolute 的元素,需要position 为fixed 的容器。(这是由小程序的文档流中不存在window、document对象导致的)。
宿主环境是微信客户端给小程序提供的一种环境 。
宿主指的就是微信客户端,也就是官方API里的wx 对象。
宿主环境的作用是什么?
宿主环境会把我们写的各种文件整合到一起,进行解析,然后在微信APP 里显示出我们所看到的样子。
宿主环境可以为小程序提供微信客户端的能力,比如微信扫码,这是普通网页不具备的。
点开微信小程序的一瞬间,微信客户端做了些什么?
小程序的后台状态和前台状态:
后台状态:用户点击小程序右上角关闭按钮,或手机的home 键时,会离开小程序,但小程序并不会被销毁,而是进入后台状态。此时,APP构造器参数里的onHide 方法会被调用。
前台状态:用户再次小程序时,微信用户端会唤醒后台状态的微信小程序,微信小程序就进入了前台状态,onShow 方法会被调用。
注意:App的生命周期是由用户操作主动触发的,开发者不能在代码里主动调用