小程序代码的构成
JSON配置文件
1、项目根目录的app.json
是当前小程序的全局配置,包含了小程序的所有页面路径、窗口外观、界面表现、底部tab等
配置项 |
作用 |
pages |
记录当前小程序所有页面的路径 |
window |
全局定义小程序所有页面的背景色、文字颜色等 |
style |
全局定义小程序组件所使用的样式版本 |
sitemapLocation |
用来指明sitemap.json的位置 |
2、project.config.json文件 |
|
用来记录我们对小程序开发工具所做的个性化配置 |
|
配置项 |
作用 |
– |
– |
setting |
保存了编译相关的配置 |
projectname |
保存的是项目名称 |
appid |
保存的是小程序的账号ID |
3、sitemap.json文件 |
|
微信开开放了小程序内搜索,效果类似于PC网页的SEO。该文件用来配置小程序页面是否允许微信索引,可以修改aciton配置为disallow修改为不允许索引。 |
|
4、页面的.json配置文件 |
|
可以使用每个页面的.json文件对本页面的窗口外观进行配置,页面中的配置会覆盖app.json的window中相同的配置项 |
|
WXSS文件
1、新增了rpx尺寸单位
2、app.wxss是全局小程序样式,页面的.wxss是页面自己的样式
JS文件
1、项目根目录的app.js是小程序的入口文件,通过调用App()函数来启动整个小程序。
2、页面的js文件通过调用Page()函数来创建并运行页面
模板语法
wxml文件:
1 2 3 4 5 6 7 8 9 10 11
| //内容 <view>{{value}}</view> //属性 <view class="{{active}}">选中</view> /*tap事件相当于电脑的click 需要传递的参数不能像vue一样@click="clickHandle(3)" 而是使用data-xxx属性传递,在事件对象的target.dataset.xxx可获取到*/ <button bind:tap="clickHandle" data-add="{{3}}">触发isClick函数</button> <button bindtap="clickHandle" data-add="{{3}}">同上</button> //input事件 <input type="text" bindinput="inputHandle"/>
|
js文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Page({ //data同vue2的data data: { value:0 }, //事件处理函数写在和生命周期钩子同级的位置就行 clickHandle(e){ //通过this.setData修改data中的数据,简单使用实例传入一个对象,这个对象中的属性名因为data中需要被修改的属性名 this.setData({ value:this.data.value+e.target.dataset.add; }) }, inputHandle(e){ //可以通过e.detail.value获取文本框的内容 console.log(e.detail.value) } })
|
条件渲染 wx:if
JS文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Page({
data: {
isShow:true,
val:2,
userList:[
{id:1,name:"张三"},
{id:2,name:"李四"},
{id:3,name:"王五"},
]
}
})
|
WXML文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <view wx:if="{{isShow}}">展示</view>
<view wx:else>隐藏</view>
<!-- else if -->
<view wx:if="{{val==1}}">val=1</view>
<view wx:elif="{{val==2}}">val=2</view>
<view wx:else>val=3</view>
<!-- hidden -->
<view hidden="{{!isShow}}">条件为true时隐藏</view>
|
wx:if会删除元素,hidden会修改元素样式为display:none,所以在需要频繁切换的时候建议时候用hidden减少性能消耗
列表渲染 wx:for
JS文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Page({
data: {
isShow:true,
val:2,
userList:[
{id:1,name:"张三"},
{id:2,name:"李四"},
{id:3,name:"王五"},
]
}
})
|
WXML文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <!-- 其中index默认为索引,item默认为成员 -->
<view wx:for="{{userList}}">
{{index}}:{{item.name}}
</view>
<!-- 可以通过wx:for-index和wx:for-item指定索引和成员的名字 -->
<view wx:for="{{userList}}" wx:for-index="idx" wx:for-item="user">
{{idx}}:{{user.name}}
</view>
<!-- 可以像vue一样指定key,如果不指定会有一个警告,指定key的时候不能用{{}} -->
<view wx:for="{{userList}}" wx:key="id">
{{index}}:{{item.id}}
</view>
|
WXSS模板样式
wxss支持rpx单位和@import样式引入
1 2 3 4 5 6
| //common.wxss .header{ color:red; } //index.wxss @import "/common/common.wxss"
|
wxss分为全局样式和局部样式
当局部样式和全局样式冲突时,局部样式会覆盖全局样式
当局部样式的权重大于或等于全局样式的权重时才会覆盖全局的样式