uni app是什么?
uni-app
是一個使用 Vue.js 開發(fā)所有前端應(yīng)用的框架龙考,開發(fā)者編寫一套代碼蟆肆,可發(fā)布到iOS矾睦、Android晦款、Web(響應(yīng)式)、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘/淘寶)枚冗、快應(yīng)用等多個平臺缓溅。
快速上手(vscode編輯器)
1.安裝腳手架
cnpm i -g @vue/cli
2.創(chuàng)建uniapp
- tips:dcloudio/uni-preset-vue 如果安裝不成功,可以去github下載到本地進(jìn)行安裝創(chuàng)建項(xiàng)目
vue create -p dcloudio/uni-preset-vue uniapp-demo
3.選擇模板赁温,生成項(xiàng)目
項(xiàng)目目錄
tips:生成以下目錄樹坛怪,首先安裝tree, brew install tree ,執(zhí)行tree -L 3 -I "node_modules" ,具體參數(shù)可看tree文檔
├── README.md //說明
├── babel.config.js //babel 的配置文件
├── package.json //依賴模塊
├── postcss.config.js //postcss 配置文件股囊,autoprefixer插件可以自動生成瀏覽器前綴袜匿;
├── public //發(fā)布頁面入口
│ └── index.html
├── src
│ ├── App.vue //應(yīng)用配置,用來配置App全局樣式以及監(jiān)聽
│ ├── main.ts //Vue初始化入口文件
│ ├── manifest.json //配置應(yīng)用名稱稚疹、appid居灯、logo、版本等打包信息
│ ├── pages //頁面
│ │ └── index
│ │ └── index.vue
│ ├── pages.json //配置頁面路由内狗、導(dǎo)航條怪嫌、選項(xiàng)卡等頁面類信息
│ ├── sfc.d.ts
│ ├── static // 公共靜態(tài)資源
│ │ └── logo.png
│ └── uni.scss //通用樣式
├── tsconfig.json
└── yarn.lock
生命周期
- 應(yīng)用生命周期
tips:應(yīng)用生命周期僅可在App.vue中監(jiān)聽,在其它頁面監(jiān)聽無效柳沙。
函數(shù)名 | 說明 |
---|---|
onLaunch | 當(dāng)uni-app 初始化完成時觸發(fā)(全局只觸發(fā)一次) |
onShow | 當(dāng) uni-app 啟動岩灭,或從后臺進(jìn)入前臺顯示 |
onHide | 當(dāng) uni-app 從前臺進(jìn)入后臺 |
- 頁面生命周期
tips:先觸發(fā) uni-app onReady ,后觸發(fā) vue 的 mounted 建議使用uni-app的onLoad 代替 vue的 created
函數(shù)名 | 說明 |
---|---|
onLoad | 監(jiān)聽頁面加載赂鲤,其參數(shù)為上個頁面?zhèn)鬟f的數(shù)據(jù)噪径,參數(shù)類型為Object(用于頁面?zhèn)鲄ⅲ┲簦瑓⒖?a target="_blank">示例 |
onShow | 監(jiān)聽頁面顯示。頁面每次出現(xiàn)在屏幕上都觸發(fā)找爱,包括從下級頁面點(diǎn)返回露出當(dāng)前頁面 |
onReady | 監(jiān)聽頁面初次渲染完成膨更。注意如果渲染速度快,會在頁面進(jìn)入動畫完成前觸發(fā) |
onHide | 監(jiān)聽頁面隱藏 |
onUnload | 監(jiān)聽頁面卸載 |
onResize | 監(jiān)聽窗口尺寸變化 |
onPullDownRefresh | 監(jiān)聽用戶下拉動作缴允,一般用于下拉刷新荚守,參考示例 |
onReachBottom | 頁面滾動到底部的事件(不是scroll-view滾到底),常用于下拉下一頁數(shù)據(jù)练般。具體見下方注意事項(xiàng) |
onTabItemTap | 點(diǎn)擊 tab 時觸發(fā)矗漾,參數(shù)為Object,具體見下方注意事項(xiàng) |
onShareAppMessage | 用戶點(diǎn)擊右上角分享 |
onPageScroll | 監(jiān)聽頁面滾動薄料,參數(shù)為Object |
onNavigationBarButtonTap | 監(jiān)聽原生標(biāo)題欄按鈕點(diǎn)擊事件 |
onBackPress | 監(jiān)聽頁面返回敞贡,返回 event = {from:backbutton、 navigateBack} 摄职,backbutton 表示來源是左上角返回按鈕或 android 返回鍵誊役;navigateBack表示來源是 uni.navigateBack ;詳細(xì)說明及使用:onBackPress 詳解谷市。支付寶小程序只有真機(jī)能觸發(fā)蛔垢,只能監(jiān)聽非navigateBack引起的返回,不可阻止默認(rèn)行為迫悠。 |
onNavigationBarSearchInputChanged | 監(jiān)聽原生標(biāo)題欄搜索輸入框輸入內(nèi)容變化事件 |
onNavigationBarSearchInputConfirmed | 監(jiān)聽原生標(biāo)題欄搜索輸入框搜索事件鹏漆,用戶點(diǎn)擊軟鍵盤上的“搜索”按鈕時觸發(fā)。 |
onNavigationBarSearchInputClicked | 監(jiān)聽原生標(biāo)題欄搜索輸入框點(diǎn)擊事件 |
onShareTimeline | 監(jiān)聽用戶點(diǎn)擊右上角轉(zhuǎn)發(fā)到朋友圈 |
onAddToFavorites | 監(jiān)聽用戶點(diǎn)擊右上角收藏 |
- 組件生命周期
函數(shù)名 | 說明 |
---|---|
beforeCreate | 在實(shí)例初始化之后被調(diào)用 |
created | 在實(shí)例創(chuàng)建完成后被立即調(diào)用 |
beforeMount | 在掛載開始之前被調(diào)用 |
mounted | 掛載到實(shí)例上去之后調(diào)用 |
beforeDestroy | 實(shí)例銷毀之前調(diào)用创泄。在這一步艺玲,實(shí)例仍然完全可用 |
destroyed | Vue 實(shí)例銷毀后調(diào)用。調(diào)用后鞠抑,Vue 實(shí)例指示的所有東西都會解綁定饭聚,所有的事件監(jiān)聽器會被移除,所有的子實(shí)例也會被銷毀 |
頁面適配
uni-app 支持的通用 css 單位包括 px搁拙、rpx
- rpx 是由微信小程序提出一種方案秒梳,解決自適應(yīng)屏幕尺寸的尺寸單位,即響應(yīng)式 px感混,一種根據(jù)屏幕寬度自適應(yīng)的動態(tài)單位端幼。以750寬的屏幕為基準(zhǔn),750rpx恰好為屏幕寬度弧满。屏幕變寬婆跑,rpx 實(shí)際顯示效果會等比放大,但在 App 端和 H5 端屏幕寬度達(dá)到 960px 時庭呜,默認(rèn)將按照 375px(iphone6) 的屏幕寬度進(jìn)行計(jì)算
// px換算rpx
1px = 2rpx //舉個例子滑进,字體大小是12px,換算為rpx應(yīng)該是24rpx
標(biāo)簽與組件相關(guān)
文件配置相關(guān)
頁面跳轉(zhuǎn)及路由
uniapp 有自己一套路由管理機(jī)制犀忱,而未采用vue-route方案
函數(shù)名 | 說明 |
---|---|
uni.navigateTo | 保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面扶关,使用uni.navigateBack可以返回到原頁面阴汇。 |
uni.redirectTo | 關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面节槐。 |
uni.reLaunch | 關(guān)閉所有頁面搀庶,打開到應(yīng)用內(nèi)的某個頁面。 |
uni.switchTab | 跳轉(zhuǎn)到 tabBar 頁面铜异,并關(guān)閉其他所有非 tabBar 頁面哥倔。 |
uni.navigateBack | 關(guān)閉當(dāng)前頁面,返回上一頁面或多級頁面揍庄∨剌铮可通過 getCurrentPages() 獲取當(dāng)前的頁面棧,決定需要返回幾層蚂子。 |
uni.preloadPage | 預(yù)加載頁面沃测,是一種性能優(yōu)化技術(shù)。被預(yù)載的頁面食茎,在打開時速度更快蒂破。 |
uni. navigateTo({
url:'/pages/index/index',
success(){
console.log('成功跳轉(zhuǎn)頁面')
}
})
請求
uniapp
提供網(wǎng)絡(luò)請求的 api
是 uni.request
,具體支持的請求方法可以參考官網(wǎng)
在各個小程序平臺運(yùn)行時董瞻,網(wǎng)絡(luò)相關(guān)的 API 在使用前需要配置域名白名單寞蚌。
不支持jsonp田巴,跨域問題需要再mainfest.json中配置跨域代理
uni.request({
url: 'https://xxx.xxx.xxx/request', //僅為示例钠糊,并非真實(shí)接口地址。
data: {
text: 'demo'
},
method:'POST',
header: {
'Content-Type' : 'application/json',
},
success: (res) => {
console.log(res.data);
}
});
補(bǔ)充
- 如果不需要支持app端壹哺,則文件可以直接是.vue抄伍,如需支持則是.nvue
- uniapp支持兩種渲染引擎
- h5,小程序走的是webview渲染
- app走的是weex渲染【原生】
- uni-app在打包成h5時,默認(rèn)是不支持直接打開的管宵,因?yàn)榇虬鰜硎?(/xxx/xxx)這種格式截珍,可在vue.config中配置publicPath,把它配置成(./),但在uni-app中找不到這個文件的箩朴。其中官網(wǎng)有提到 點(diǎn)擊查看publPath岗喉。
"h5" : {
"publicPath":"./"
}