小程序学习
首先,小程序是基于微信的,它的开发框架使用的是MINA。小程序框架提供了自己的视图层描述语言WXML和WXSS,以及JavaScript,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据和逻辑。
小程序文件结构与传统web对比
| 传统web | 微信小程序 | |
| 结构 | HTML | WXML |
| 样式 | CSS | WXSS |
| 逻辑 | JavaScript | JavaScript |
| 配置 | 无 | JSON |
即传统web是三层结构,而微信小程序是四层结构,多了一层配置.json
目录结构
pages --------------------页面文件夹
index----------------首页
index.js-----------------首页的逻辑文件
index.json-------------首页的配置文件
index.wxml---------------首页的结构文件
index.wxss----------------首页的样式文件
logs------------------日志
utils------------------------帮助文档,可以删除
util.js
app.js----------------------小程序的入口文件(全局文件)
app.json---------------------全局配置文件
app.wxss--------------------全局样式文件
project.config.json------------------项目的配置文件,即右侧设置代码化
sitemap.json-----------------------用来配置小程序及其页面是否允许被微信索引,相当于SEO,只在发布时使用
使用app.json来进行全局配置:
pages:页面路径列表。可以在这里添加页面文件;哪个文件在最前面,就默认显示哪个
windows:全局窗口的默认表现
常用:navigationBarBackgroundColor
navigationBarTextStyle
navigationBarTitleText
页面:
1.数据绑定:在js中写data,在wxml中调用;data的类型可以是字符串、数字、布尔值和对象
wxml中使用{{}}调用
注意:当布尔值充当属性时,一定不要在引号和大括号之间出现空格,否则会导致判断失效。
可以在花括号内写运算表达式:
{{1+1}}为2;{{‘1’+‘1’}}为11
可以写三元表达式:如{{10%2==0?'偶数':'奇数'}}
循环:wx:for="{{数组或对象}}" wx:for-item="循环项的名称" wx:for-index="循环项的索引"
wx:key="唯一的值" 用来提高列表渲染的性能
注意,有两种写法:1.wx:key绑定一个普通的字符串的时候,这个字符串名称一定是循环数组或对象的唯一属性
2.wx:key="*this" 表示你的数组为一个普通的数组,*this表示循环项,如数组[1,2,3,4,5]
当嵌套循环的时候,要注意wx:for-item="循环项的名称" wx:for-index="循环项的索引"绑定的名称不要重名
默认情况下,不写wx:for-item="循环项的名称" wx:for-index="循环项的索引",小程序也会把循环项的名称和循环项的索引设为item和index,因此只有一层循环的话,wx:for-item="循环项的名称" wx:for-index="循环项的索引"可以省略
循环对象时,最好改成wx:for-item="value" wx:for-index="key",读代码的时候会清楚一些
条件渲染:
wx:if
wx:elif
wx:else
hidden属性
哪个场景下使用:当标签频繁切换显示的时候优先使用hidden,因为hidden是通过添加样式的方式来切换显示,即display:none.这样就意味着hidden属性不能和display属性一起使用;当标签不频繁的切换显示的时候优先使用wx:if,因为wx:if是直接把标签从页面结构中移除掉,性能损耗较大。
事件绑定
绑定事件,如input标签关键字为bindinput=”函数"
获取绑定事件的值:通过事件源对象来获取,如上面函数(e)中的e,具体需要获取的值可以打印出来看
然后赋值,不能使用vue中的this.num=e.detail.value或者this.data.num=e.detail.value,而要使用this.setData({
num: e.detail.value
})
常用事件:
点击事件:bindtap
注意,在小程序中是无法直接在函数上传参的,要通过自定义属性的方式来传参,如
<button bindtap="handletap" data-operation="{{1}}">+<button>
然后从事件源e中获取该自定义属性,再在函数中操作该参数
轮播图组件 swiper
其中只可放置swiper-item组件,否则会导致未定义的行为
常用属性:indicator-dots 是否显示面板指示点
autoplay 是否自动切换
circular 是否采用衔接滑动
全局变量globalData(Vuex)
只能在app.js中定义,正常定义,即
//app.js App({ globalData: { name: '张三', age: 18 } })
// globalData中的数据可以作为共享数据在全局使用 // 在app.js中使用:this.globalData.name = '李四' // 在其他页面读取以及修改globalData。不论是读取还是修改,首先需要在应用的页面js文件中,引用app()实例,即const app = getApp() // 获取globalData:app.globalData.name // 在其他页面设置或修改globalData:getApp().globalData.favorite = "集邮";