W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本節(jié)主要介紹如何使用 Vue 框架來開發(fā)快應(yīng)用,方便開發(fā)者利用自己更熟悉的 DSL(domain-specific language,領(lǐng)域特定語言)特性來加快項(xiàng)目上線。
官方發(fā)布的快應(yīng)用平臺(tái)的 1060 版本內(nèi)部集成了 Vue 框架,使用的版本為:?2.5.3
?,這樣開發(fā)者在快應(yīng)用官方技術(shù)規(guī)范基礎(chǔ)上,使用 Vue 開發(fā)出來的項(xiàng)目就可以無縫運(yùn)行;
整體的開發(fā)流程與標(biāo)準(zhǔn) UX 文件后綴的開發(fā)基本一致,使用?hap-toolkit
?腳手架初始化一個(gè) Vue DSL 下的快應(yīng)用項(xiàng)目,然后使用相同的命令,完成項(xiàng)目啟動(dòng)、編譯構(gòu)建等工作;
最后將對(duì)應(yīng)的項(xiàng)目產(chǎn)出文件提交到審核平臺(tái)即可;
提示:華為快應(yīng)用平臺(tái)未集成 Vue 框架,因此不支持 Vue DSL 的運(yùn)行;
Vue 是一個(gè)廣受歡迎的前端開發(fā)框架,規(guī)范的設(shè)計(jì)原則、優(yōu)雅的開放 API、簡單易用的特性,得到開發(fā)者的一致喜愛;
站在底層渲染的角度上,它仍然建立在 DOM 模型之上,為開發(fā)者提供了一套定制的 DSL,就像標(biāo)準(zhǔn)的 UX 文件一樣,也是一種 DSL;
支持 Vue 運(yùn)行在快應(yīng)用平臺(tái)之上,意味著快應(yīng)用的底層設(shè)計(jì),具備支持任何一種前端 DSL 的能力,甚至:基于小程序衍生出來的新型框架;
開發(fā)者可以通過下面的介紹,了解如何在平臺(tái)上運(yùn)行 Vue 項(xiàng)目,提升項(xiàng)目的移植能力;
確保 PC 環(huán)境上,全局或本地安裝 npm 類庫?hap-toolkit
?,保證版本號(hào)大于 0.6.1,推薦使用 0.6.4 以上版本。
新建快應(yīng)用項(xiàng)目?quickapp-vue-demo
?
npx hap init quickapp-vue-demo --dsl=vue
進(jìn)入到?quickapp-vue-demo
?目錄,執(zhí)行?npm i -d
?安裝依賴包。安裝完成后執(zhí)行可以開啟兩個(gè)終端執(zhí)行
npx hap servernpx hap watch --include-dsl-from-lib
打開調(diào)試器可以看到以下結(jié)果
在 UX 文件中引入的各種接口可以放心遷移至 Vue 文件中,接口的使用與 UX 一致。 除此之外,使用 Vue 開發(fā)快應(yīng)用的時(shí)候需要注意以下幾點(diǎn)。
在 Vue 的原始的生命周期的基礎(chǔ)上,增加了底層原生能力的生命周期 ?onInit
?、?onShow
?、?onHide
?、?onMenuPress
?、?onBackPress
?、?onRefresh
?、?onConfigurationChanged
?。
請(qǐng)不要在 Vue 語法中混用快應(yīng)用原始語法,包括 template 標(biāo)簽內(nèi)的各種綁定語法(for、if 等)以及block等標(biāo)簽。如使用slot等標(biāo)簽請(qǐng)遵循 Vue 的使用規(guī)則。
依舊可以在方法內(nèi)部調(diào)用?this.$app
?獲取到 App 相關(guān)信息、?this.$page.setTitleBar
?修改 titlebar 文字;也可以執(zhí)行特定 DOM 元素的方法,比如獲取元素并聚焦?this.$refs.input.focus()
?。這些原生能力在 Vue 中得以保留,可以在放心使用。
項(xiàng)目打包生成 rpk 后綴文件,與標(biāo)準(zhǔn) UX 文件一致,使用:npm run build與npm run release分別完成打包;
使用 Vue 開發(fā) web 應(yīng)用的時(shí)候也會(huì)發(fā)生樣式覆蓋的問題,所以在組件內(nèi)部會(huì)使用 scoped 進(jìn)行隔離
目前快應(yīng)用暫不支持屬性選擇器樣式,使用 scoped 編譯會(huì)出錯(cuò)
所以建議開發(fā)者使用 css 模塊化bem進(jìn)行解決?;蛘呷忠茫ㄈ绻謽邮教嘁矔?huì)產(chǎn)生性能問題,建議使用頁面和組件模塊化 css)
有的開發(fā)者希望引入 less 預(yù)編譯 css。
hap-toolkit目前支持自定義resolve、module和plugins配置,這里演示如何讓 Vue 項(xiàng)目支持 less。
在quickapp-vue-demo的根目錄新增文件hap.config.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, 'css-loader']
},
{
test: /\.less$/,
use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader']
},
{
test: /\.vue$/,
use: [
{
loader: 'vue-loader',
options: {
hotReload: false, // 關(guān)閉熱重載
compilerOptions: {
preserveWhitespace: false
}
}
}
]
}
]
},
plugins: [
new VueLoaderPlugin(),
new MiniCssExtractPlugin({
filename: '[name].css.json'
})
]
}
由于添加了依賴,所以需要安裝。命令行執(zhí)行
npm i -D less-loader less
命令行再次執(zhí)行
npx hap servernpx hap --watch --include-dsl-from-lib
在單文件index.vue內(nèi)的 style 標(biāo)簽使用lang="less"正常運(yùn)行
注意,目前的 hap.config.js 支持 resolve、module 和 plugins 字段的配置,語法同 webpack
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: