1,配置文件.json小程序的全局配置app.json和页面配置page.json 每单页页面也有相应的.json文件,设置每个页面中.json配置,会覆盖与app.json相同的配置项。 如下:是一个包含了所有配置选项的简单配置app.json "pages": [
"pages/index/index",
"pages/logs/logs"
],
"window": {
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "微信接口功能演示",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light",
"enablePullDownRefresh":"false",
"disableScroll":true,
},
"tabBar": {
"list": [{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath":"../img/a.png",
"selectedIconPath": "../img/a.png"
}, {
"pagePath": "pages/logs/logs",
"text": "日志"
}] ,
"color":"red",
"selectedColor":"#673ab7",
"backgroundColor":"#2196f3",
"borderStyle":"white",
"position":"bottom"
},
"networkTimeout": {
"request": 10000,
"downloadFile": 10000,
"uploadFile":"10000",
"downloadFile":"10000"
},
"debug": true
}
2,逻辑层.js小程序的逻辑层是js编写,但因为小程序不是运动在浏览器中,所以js在web中的一些功能不能用,如document,windows等 。 app.js有全局的小程序生命周期,page.js有自己本页面的生命周期 2.1 注册小程序App.js 注意:
1,必须在app.js中注册微信小程序,全局只有一个
2,不能再定app()内的函数中调用getApp(),使用this就可以拿到app的实例。
3,不要在onLaunch的时候getCurrentPage(),此时page还没有生成
4,通过其他子页面调用getApp()获取实例后,不要私自调用小程序全局的生命周期方法
5,var app=getApp()获取小程序的实例
App ( {
onLaunch: function(){},
onShow: function(){},
onHide: function(){},
onError: function(){},
...
})
2.2 注册小程序的页面page.js Page()用来注册一个页面,维护该页面的生命周期以及数据。 Page({
data: {
text: 'init data',
array: [{msg: '1'}, {msg: '2'}]
},
onLoad: function(){},
onShow: function(){},
onReady: function(){},
onHide: function(){},
onUnload: function(){},
onPullDownRefresh: function(){},
onReachBottom: function(){},
onShareAppMessage: function(){
return {
title: '自定义分享标题',
desc: '自定义分享描述',
path: '/page/user?id=123'
}
},
customData: { hi: 'MINA' }
...
})
2.3,注意事项 setData() 不能直接数据 ,this.data.text="xxxxx" //这是错误的, this.setData ({ //在这里面修改数据的值,和react的setdata有些类似})//这是正确的 这里记住this有作用域的问题 ,如在局部函数中使用需.bind(this),或其他 getApp() 如果需要全局的数据可以在app.js中设置。如: App({
globalData: 1
})
console.log(getApp().globalData)
2.4,公共模块util.js 公共模块方法需要通过module.exports对外暴露接口。 使用的时候需要require(path)将文件引入。如: function sayHello(name) {
console.log(`Hello ${name} !`)
}
module.exports.sayHello = sayHello
var util = require('../../utils/util.js')
Page({
onLoad: function () {
util.sayHello('我是传的值');
}
})
3,视图层WXML视图层的数据绑定 均来自于Page中的data,修改值则是this.setData 数据绑定使用{{变量}}双大括号将变量包起来
<view wx:if="{{zhenjiaa=='123'}}">123334</view>
<view wx:if="{{zhanjia}}">123334</view>
<view wx:if="{{len > 5}}">大于5我就显示了 </view>
<view wx:if="{{length > 5}}"> 1 </view>
<view wx:elif="{{length > 2}}"> 2 </view>
<view wx:else> 3 </view>
<block wx:if="{{true}}">
<view> view1 </view>
<view> view2 </view>
</block>
wx:if vs hidden
wx:if 是惰性的,运行时不渲染,
《hidden 组件始终渲染,只是简单的显示隐藏,如果需要频繁切换则用hidden》
view wx:for="{{array}}"> {{index}}:{{item}} </view>
也可以另取名用wx:for-index=“xx”来指定当前数组下标的变量名
wx:for-item="xx" 来指定当前元素的变量名
page.jsPage({ data: { array: [1, 2, 3, 4, 5] }})
block wx:for
类似block wx:if,也可以将wx:for用在<block/>标签上
如果列表中的项需要动态添加到列表中,并希望项目保持原有的特征和状态使用wx:kay
wx:kay 有两种形式提供
1,字符串 wx:kay=“unique”
2,保留关键字 wx:kay="*this"
<view> {{a + b}} + {{c}} + d </view>
<view>{{"hello" + name}}</view>
也可以用扩展运算符 ... 来将一个对象展开
{{...obj1}}
obj1: {
a: 1,
b: 2
},
注意:上述方式可以随意组合,但是如有存在变量名相同的情况,后边的会覆盖前面
3.1,wxml模版的使用 name定义组件模版的名称,引用模版的时候使用is属性指定模版的名字,is可以进行简单的三木运算。需要传入模版需要的data数据。因为模版拥有自己的作用域,所以只能使用data传入数据,而不能直接{{}}使用。 <template name="msgItem">// 某个模板
<view>
<text> {{index}}: {{msg}} </text>
<text> Time: {{time}} </text>
</view>
</template>
----------------------------------
使用时:
<template is="msgItem" data="{{...item}}"/>//data里面需要传入name为msgItem 模板中所需要的值
3.2,WXML公共模块的引用 WXML提供两种文件引用方式1,import 。 2,include 如下: import有作用域的概念,不可以A import C,可以A import B,
<import src="a.wxml"/>//使用import标签
<template name="A">
<text> A template </text>
</template>
include可以多重引用
<include src="header.wxml"/>//引用header、其中header.wxml中也引用了footer.wxml
<view> body </view>
<view> header </view>
<include src="footer.wxml"/>
3.2,事件 1, bind开头不阻止冒泡,用catch开头可以阻止冒泡。如catchtap~
冒泡的定义:点击子组件会触发父组件,所有父组件,先子后父的触发 2,无特殊情况自带事件的各个事件对象以及对象属性列表 3,dataset,在wxml组件中可以定义data数据,会通过事件传递。以data-开头,多个单词以为-链接,如data-a-b,但是不能有大写,它会自动转成驼峰命名,调取的时候去驼峰命名的名字。 4, wxss用法类似于css,扩展尺寸单位和样式导入 1,尺寸单位rpx,1rpx=0.5px。 2,样式导入。以逗号结束。 @import "common.wxss";//引入的时候import后面跟引入文件的相对路径 可以使用内联样式,但不建议,会影响渲染速度。 page.wxss的样式会覆盖全局样式app.wxss 5,组件1,所有组件和属性都是小写,以-连接 2,image默认宽300px高度225px 3,~~和html类似(巴拉巴拉) 6,API官网超详细。。。。 (以后再分享demo~~) -------------------以下是开发中的整理-------------------------------**navigator相当于a标签**
<navigator url="../index/index">点击跳转不关闭当前页面</navigator>
<navigator url="../logs/logs" redirect="true" >点击跳转关闭当前页面</navigator>
|