初步接触小程序
首先学习使用小程序的开发者工具,并比较与chrome-dev-tools
的异同。
- 查看元素:需要首先选择
Wxml
; - 小程序的编辑功能,可以直接修改本地文件,但需要首先ctrl+s保存。
- 修改并保存后,页面会自动刷新。
然后是小程序自身的一些限制or规定。
- 打包文件大小小于1M。
- 页面头部底部的表现样式受限。均在page.json中设置而不是样式文件。
- 小程序目前不支持直接引入
node_modules
, 开发者需要使用到node_modules
时候建议拷贝出相关的代码到小程序的目录中。 - 不能使用
window
与document
对象:因为小程序的运行环境不是浏览器! - 无法使用嵌套方式书写样式。
- 支持的选择器是有限的!详情参考Wxss选择器部分。
- 各个页面的JS脚本文件的变量与函数独立,因此要设置全局的数据需要使用:
//App()方法,App是全局实例,可以通过getApp()获得。
//全局数据一般在app.js中定义。
//app.js
App({
globalData: 1
});
//login.js
var app = getApp();
app.globalData ++;
小程序对模块化Js的支持,使用CommonJS规范。
- 通过
module.exports
或者exports
来暴露模块的接口。 - 其他模块使用该模块的接口的方法:在js文件中,page方法之前通过
require(path)
方法引入。
var common = require('common.js');
Page({
helloMINASAN: function() {
common.sayHello('MINASAN');
},
goodByeMINASAN: function() {
common.sayGoobye('MINASAN');
}
});
详情参考模块化。
小程序对模板的支持,使用mustache语法。
关键词:mustache、name、is、data、include、import
一一说明:
- 使用模板内部使用Mustache语法。
- name作为模板名,在
template
标签中作为属性定义,为模板的标识/名称。 - is属性是在使用模板时,它的值表示选择使用的模板。
- data(object)模板暴露的接口,用以接收数据。
include
与import
都是用以引用外部Wxml文件的标签。
它们的区别是:- include引用Wxml文件除template标签以外的所有标签。(待验证)
- import仅引用template标签。(待验证)
详情参考模板。
小程序对css的支持,使用Wxss(即对css扩充、修改了一些规则)。
扩充:尺寸单位、样式导入。
修改:
- 不能使用嵌套写法书写Wxss样式。
- 部分选择器不支持。详情见Wxss样式部分。
- 全局样式在app.wxss中定义,局部样式由page.wxss定义,且局部样式权重高于全局。
现在主要来说一下小程序扩充的尺寸单位、样式导入部分。
尺寸单位
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。
如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,
则:750rpx = 375px = 750物理像素,
即:1rpx = 0.5px = 1物理像素。
使用rpx单位有个好处是:开发在按照iphone6尺寸制作的设计图上量出来的尺寸就是属性需要的rpx值,不需要经过换算。其他屏宽下的换算比例是:rpxToPx = 屏幕宽度/750 px;
然而rem单位如何在Wxss中使用呢,测试结果如下:
- 屏宽375px下(如iphone6):1rem = 18.75px;
- 屏宽320px下(如iphone5):1rem = 16px;
得到的换算公式是:remToPx = 屏幕宽度 / 320 * 16 px;
。
在安卓下适用。
例:
1. 测试用屏宽:411px;
2. 设置标签元素高度:`height = 1rem;`
3. 得到标签元素高度:`height = 20.5469px;`
4. 通过公式计算得到的结果:`height = 411/320 * 16 = 20.55px`;
结论:当rem、px、rpx相遇我们可以用这两个公式,
rpxToPx = 屏幕宽度/750 px;
remToPx = 屏幕宽度 / 320 * 16 px;
且重要的一点是:与在浏览器环境下不同,它的值是固定的,不会依据根节点(page标签)的fontSize大小变化。(也就是说更改Wxml的page标签的fontSize对rem不起作用)
样式导入
用法与less的import功能类似。
小程序的便利之处:
- 可以方便地调用微信的一些原生功能。详情见API文档。
- 数据绑定、列表渲染、条件渲染、模板、事件、引用等等。直观感受与Vue等框架类似,好上手。
- 页面相关的动作事件已经做好的包装,直接调用相关函数就能够使用。例如:页面下拉、上拉触底等事件。通过
page()
方法定义。这与小程序页面的生命周期相关。
需要思考的点:
-
JS有接口,Wxml有模板,而样式如何在不同的页面之间复用?
答:样式使用@import方式导入其他样式文件。
-
组件的使用?
答:组件存放在compenents文件夹下,每个组件有自己的
.wxml
与.wxss
。在需要引用组件的页面文件夹下,page.xml
通过<import src="..."/>
或者<include src = "..." />
等方法引入组件的模板.xml
文件,page.wxss
通过import "...";
方法引入组件的样式.wxss
文件。 -
...持续补充
time:2017/01/11
editor:zgatry
小程序随笔:
- 使用扩展运算符...来将一个对象展开。
<block/>
并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。text
标签设置hidden属性时,开发者工具(v0.12.130400
)中不会显示display:none
的样式,而view
标签可以;
time: 2017/01/17
editor: zgatry