Wepy框架
它是一款類Vue框架,在代碼風格上借鑒了Vue,本身和Vue沒有任何關系。
mpVue框架
它是從整個Vue的核心代碼上經過二次開發而形成的一個框架,相當於是給Vue本身賦能,增加了開發微信小程序的能力。
三者的區別圖:
使用mpVue時需要注意的點:
1. 在模板中,動態插入HTML的v-html指令不可用
這條很好理解,小程序的界面並不是基於瀏覽器的BOM/DOM的,所以不能動態的在界面模板里直接插入HTML片段來顯示。
題外話,如果有在小程序里插入html片段的需求怎么辦?可以用
2. 在模板中,用於數據綁定的雙括號語法{{}}中的表達式功能存在諸多限制
在Vue本身的模板內雙括號語法中,我們可以對綁定變量進行比較豐富的處理,比如:
- 可以調用methods下的函數, 例如:
<template>
<div>{{ formatMessage(msg) }}</div>
</template>
<script>
export default {
data() {
return {
msg: "Hello,World"
}
},
methods: {
formatMessage(str) {
return str.trim().split(',').join('#')
}
}
}
</script>
- 如果變量是對象的話,也可以調用對象的成員方法
<div>{{ msg.trim().split(',').join('#') }}</div>
- 可以使用過濾器來處理變量,最有用的場景算是格式化數據了
<div>{{ msg | format }}</div>
以上這些好用的功能,在mpvue中,記得都是通通不能用的哦!!!
我們只能在雙括號中使用一些簡單的運算符運算(+ - * % ?: ! == === > < [] .)。
可以考慮使用計算屬性(computed)來做。
3. 在模板中,除事件監聽外,其余地方都不能調用methods下的函數
可用的替代方案: 計算屬性
4. 在模板中,不支持直接綁定一個對象到style或class屬性上
最好的方案: 計算屬性
<template>
<div :class="classStr"></div>
</template>
<script>
export default {
data() {
return {
classObject: {
active: true,
'text-danger': false
}
}
},
computed: {
classStr() {
let arr = []
for (let p in this.classObject) {
if (this.classObject[p]) {
arr.push(p)
}
}
return arr.join(' ')
}
}
}
</script>
5. 在模板中,嵌套使用v-for時,必須指定索引index
通常,我們在Vue模板中嵌套循環渲染數組的時候,一般是這個樣子的:
<template>
<ul v-for="category in categories">
<li v-for="product in category.products">{{product.name}}</li>
</ul>
</template>
但在mpvue中使用這種嵌套結構的v-for時,則必須每層的v-for上都給出索引,且索引需取不同名字:
<template>
<ul v-for="(category, index) in categories">
<li v-for="(product, productIndex) in category.products">{{product.name}}</li>
</ul>
</template>
6. 事件處理中的注意點
在mpvue中,一般可以使用Web的DOM事件名來綁定事件,mpvue會將Web事件名映射成對應的小程序事件名,對應列表如下:
// 左側為WEB事件 : 右側為對應的小程序事件
{
click: 'tap',
touchstart: 'touchstart',
touchmove: 'touchmove',
touchcancel: 'touchcancel',
touchend: 'touchend',
tap: 'tap',
longtap: 'longtap',
input: 'input',
change: 'change',
submit: 'submit',
blur: 'blur',
focus: 'focus',
reset: 'reset',
confirm: 'confirm',
columnchange: 'columnchange',
linechange: 'linechange',
error: 'error',
scrolltoupper: 'scrolltoupper',
scrolltolower: 'scrolltolower',
scroll: 'scroll'
}
除了上面的之外,Web表單組件<input>
和<textarea>
的change事件會被轉為blur事件。
然后,像keydown、keypress之類的鍵盤事件也沒有了,因為小程序沒有鍵盤,所以不需要這些事件。
7. 對於表單,請直接使用小程序原生的表單組件
其他注意事項
另外,在Vue開發Web應用的時候,通常使用vue-router來進行頁面路由。但是在mpvue小程序開發中,不能用這種方式,請使用標簽和小程序原生API wx.navigateTo等來做路由功能。
還有就是請求后端數據,我們通常在Web開發中使用axios等ajax庫來實現,但是在小程序開發中也是不能用的,也請使用小程序的原生API wx.request等來進行。
微信小程序的UI組件庫
- WeUI
- iView
- ZanUI
- MinUI
- Wux
- ColorUI