一、HBuilderX - uni-app發(fā)布
1、uni-app發(fā)布為H5
1、在 manifest.json 的可視化界面進(jìn)行編輯;
2、在HBuilderX工具欄,點(diǎn)擊發(fā)行,選擇網(wǎng)站-H5手機(jī)版,如下圖,點(diǎn)擊即可生成 H5 的相關(guān)資源文件,保存于 unpackage 目錄。
2、uni-app發(fā)布為小程序
1、申請(qǐng)微信小程序AppID
2、在HBuilderX中頂部菜單依次點(diǎn)擊 "發(fā)行" => "小程序-微信",輸入小程序名稱(chēng)和appid點(diǎn)擊發(fā)行即可在
unpackage/dist/build/mp-weixin 生成微信小程序項(xiàng)目代碼。
3、在微信小程序開(kāi)發(fā)者工具中,導(dǎo)入生成的微信小程序項(xiàng)目,測(cè)試項(xiàng)目代碼運(yùn)行正常后,點(diǎn)擊“上傳”按鈕,之后按照 “提交審核” => “發(fā)布” 小程序標(biāo)準(zhǔn)流程,逐步操作即可。

二、vue-cli -uni-app發(fā)布
1、運(yùn)行、發(fā)布uni-app
npm run dev:%PLATFORM% npm run build:%PLATFORM%
1、%PLATFORM% 可取值如下:h5、mp-weixin
三、平臺(tái)規(guī)則
1、H5端的瀏覽器有跨域限制;
2、微信小程序會(huì)強(qiáng)制要求https鏈接,并且所有要聯(lián)網(wǎng)的服務(wù)器域名都要配到微信的白名單中;
3、iOS對(duì)隱私控制和虛擬支付控制非常嚴(yán)格;
4、App要使用三方sdk,比如定位、地圖、支付、推送...還要遵循他們的規(guī)則和限制;
四、開(kāi)發(fā)規(guī)范
1、頁(yè)面文件規(guī)范:https://vue-loader.vuejs.org/zh/spec.html#%E7%AE%80%E4%BB%8B
2、組件規(guī)范:https://uniapp.dcloud.io/component/README
view/scroll-view/swiper/icon/text/rich-text/progress/button/form/input/checkbox/radio
/picker/picker-view/slider/switch/label/nacigator/audio/camera/image/video/live-player/live-pusher
/map/canvas/web-view
3、微信小程序規(guī)范:wx --> uni
4、vue的是數(shù)據(jù)綁定和事件處理,補(bǔ)充了App及頁(yè)面的生面周期
5、flex布局 uni-ui
五、tips
1、任意平臺(tái),static 目錄下的文件均會(huì)被打包進(jìn)去,非 static 目錄下的文件(vue、js、css 等)被引用到才會(huì)被包含進(jìn)去。
2、static目錄下的js文件不會(huì)被編譯,如果里面有es6的代碼,不經(jīng)過(guò)轉(zhuǎn)換直接運(yùn)行,在手機(jī)設(shè)備上會(huì)報(bào)錯(cuò)。
3、css、less/scss等資源同樣不要放在static目錄下,建議這些公用的資源放在common目錄下。
六、js文件引入
1、js文件不支持使用 / 開(kāi)頭的方式引入
七、生命周期
1、應(yīng)用生命周期:onLaunch、onShow、onHide、onError、onUniNViewMessage、onUnhandleRejection
onPageNotFound、onThemeChange,僅可在App.vue中監(jiān)聽(tīng)。
2、頁(yè)面生命周期:onLoad、onShow、onReady、onHide、onUnload、onResize、onPullDownRefresh
、onReachBottom、onShareAppMessage、onpagescroll......
八、路由:路由為框架統(tǒng)一管理,開(kāi)發(fā)者需要在pages.json里配置每個(gè)路由頁(yè)面的路徑及頁(yè)面樣式。
九、判斷平臺(tái)
1、在編譯期判斷,條件編譯:https://uniapp.dcloud.io/platform
2、在運(yùn)行時(shí)判斷,uni.getSystemInfoSync().platform
十、尺寸單位
1、App端,在 pages.json 里的 titleNView 或頁(yè)面里寫(xiě)的 plus api 中涉及的單位,只支持 px。
2、rpx 是和寬度相關(guān)的單位,屏幕越寬,該值實(shí)際像素越大。
3、如果開(kāi)發(fā)者在字體或高度中使用了 rpx ,那么需注意這樣的寫(xiě)法意味著隨著屏幕變寬,字體會(huì)變大、高度會(huì)變大。如果你需要固定高度,則應(yīng)該使用 px 。
4、rpx不支持動(dòng)態(tài)橫豎屏切換計(jì)算,使用rpx建議鎖定屏幕方向
十一、選擇器
1、在uni-app中不能使用*選擇器;
2、微信小程序自定義組件中僅支持class選擇器;
3、定義在App.vue中的樣式為全局樣式。
十二、背景圖片
1、小程序不支持在css中使用本地文件,包括本地的背景圖片和文字;
2、本地背景圖片的引用路徑推薦使用以 ~@ 開(kāi)頭的絕對(duì)路徑。
3、微信小程序不支持相對(duì)路徑。
十二、字體圖標(biāo)
1、小程序不支持在css中使用本地文件;
2、網(wǎng)絡(luò)路徑必須加協(xié)議頭https;
十四、安裝依賴(lài)
1、uni-app插件市場(chǎng)。
2、 H5 端不支持使用含有 dom、window 等操作的 vue 組件和 js 模塊
npm install packageName --save
import package from 'packageName' const package = require('packageName')
3、node_modules 目錄必須在項(xiàng)目根目錄下。
4、module所指定的模塊名不可與data、methods、computed屬性重名。
十五、使用vue.js在uni-app中注意事項(xiàng)
1、data 必須聲明為返回一個(gè)初始數(shù)據(jù)對(duì)象的函數(shù)(注意函數(shù)內(nèi)返回的數(shù)據(jù)對(duì)象不要直接引用函數(shù)外的對(duì)象);
2、由于小程序端不支持更新屬性值為 undefined,框架內(nèi)部將替換 undefined 為 null,此時(shí)可能出現(xiàn)預(yù)期之外的情況(相關(guān)反饋,需要自行判斷一下。
3、非H5端不支持 Vue官方文檔:Class 與 Style 綁定 中的 classObject 和 styleObject 語(yǔ)法;
4、非H5端(非自定義組件編譯模式)暫不支持在自定義組件上使用 Class 與 Style 綁定;
5、在H5平臺(tái) 使用 v-for 循環(huán)整數(shù)時(shí)和其他平臺(tái)存在差異,如v-for="(item, index) in 10"中,在H5平臺(tái) item 從 1 開(kāi)始,其他平臺(tái) item 從 0 開(kāi)始,可使用第二個(gè)參數(shù) index 來(lái)保持一致。
6、在非H5平臺(tái) 循環(huán)對(duì)象時(shí)不支持第三個(gè)參數(shù),如v-for="(value, name, index) in object"中,index 參數(shù)是不支持的。
7、小程序端數(shù)據(jù)為差量更新方式,由于小程序不支持刪除對(duì)象屬性,使用的設(shè)置值為 null 的方式替代,導(dǎo)致遍歷時(shí)可能出現(xiàn)不符合預(yù)期的情況,需要自行過(guò)濾一下值為 null 的數(shù)據(jù);
8、為兼容各端,事件需使用 v-on 或 @ 的方式綁定;