一惠拭、uni-app的由來
提到小程序,大多數(shù)人第一反應該都是聯(lián)想到微信江滨。其實 Dcloud 才是小程序行業(yè)的開創(chuàng)者铛纬。
DCloud,數(shù)字天堂(北京)網(wǎng)絡技術有限公司牙寞,是W3C 成員及 HTML5 中國產業(yè)聯(lián)盟發(fā)起單位饺鹃。
2012年莫秆,DCloud 開始研發(fā)小程序技術间雀,優(yōu)化 webview 的功能和性能。
2015年镊屎,DCloud 正式商用了自己的小程序惹挟,產品名為“流應用”,并且將技術標準貢獻給工信部旗下的HTML5中國產業(yè)聯(lián)盟缝驳,并推進各家流量巨頭接入該標準连锯,開展小程序業(yè)務。360手機助手率先接入用狱,緊隨其后的包括了大眾點評运怖、攜程、京東夏伊、有道詞典等摇展。
2015年9月,DCloud 推進微信團隊開展小程序溺忧,并在2016年出上線小程序業(yè)務咏连,但是微信并沒有接入聯(lián)盟的標準盯孙,而是制定了自己的一套標準。
隨著 DCloud 持續(xù)普及小程序理念祟滴,越來越多的大流量巨頭公司紛紛開始加入其行列振惰,但是接入聯(lián)盟標準的僅有部分公司,大部分會因為商業(yè)利益而制定了私有標準垄懂,從而造成標準無法統(tǒng)一骑晶,十分混亂。
面對這種混亂局面草慧,DCloud 決定開發(fā)一個免費開源的框架透罢,通過這個框架為開發(fā)者抹平各大平臺的差異,這個框架就是 uni-app冠蒋,這就是它的由來羽圃。
二、html抖剿、vue朽寞、小程序的區(qū)別
此處引用一下官網(wǎng)推薦的《白話uni-app》,特別適合像我這樣的新手閱讀斩郎。
文章中講述了許多編碼方式的變化以及 uni-app 中對比于 html 標簽所改變及保留的一些標簽內容脑融,除此之外還有寫出新增的針對于手機端常用的新組建,內容干貨巨多缩宜,寫的十分詳細易懂肘迎。
三、框架簡介
1锻煌、目錄結構
┌─cloudfunctions 云函數(shù)目錄(阿里云為aliyun妓布,騰訊云為tcb,詳見uniCloud)
│─components 符合vue組件規(guī)范的uni-app組件目錄
│ └─comp-a.vue 可復用的a組件
├─hybrid 存放本地網(wǎng)頁的目錄宋梧,詳見
├─platforms 存放各平臺專用頁面的目錄匣沼,詳見
├─pages 業(yè)務頁面文件存放的目錄
│ ├─index
│ │ └─index.vue index頁面
│ └─list
│ └─list.vue list頁面
├─static 存放應用引用靜態(tài)資源(如圖片、視頻等)的目錄捂龄,注意:靜態(tài)資源只能存放于此
├─wxcomponents 存放小程序組件的目錄释涛,詳見
├─main.js Vue初始化入口文件
├─App.vue 應用配置,用來配置App全局樣式以及監(jiān)聽 應用生命周期
├─manifest.json 配置應用名稱倦沧、appid唇撬、logo、版本等打包信息展融,詳見
└─pages.json 配置頁面路由窖认、導航條、選項卡等頁面類信息,詳見
Tips
static
目錄為靜態(tài)資源存放文件夾耀态,該目錄下的js
文件不會被編譯轮傍,若文件中存放有二手
代碼,不會經>過轉換直接運行首装,在手機設備上會報錯css创夜、less/sass
等資源也不要放在目錄下,這類公共資源建議放在common
目錄下
2仙逻、資源路徑說明
- 模板內引入靜態(tài)資源
<!-- template內引入靜態(tài)資源驰吓,如image、video等標簽的src屬性時系奉,可以使用相對路徑或者絕對路徑 -->
<!-- 絕對路徑檬贰,/static指根目錄下的static目錄,在cli項目中/static指src目錄下的static目錄 -->
<image class="logo" src="/static/logo.png"></image>
<image class="logo" src="@/static/logo.png"></image>
<!-- 相對路徑 -->
<image class="logo" src="../../static/logo.png"></image>
- js文件引入
// js文件或script標簽內(包括renderjs等)引入js文件時缺亮,可以使用相對路徑和絕對路徑
// 絕對路徑翁涤,@指向項目根目錄,在cli項目中@指向src目錄
import add from '@/common/add.js'
// 相對路徑萌踱,js文件不支持使用/開頭的方式引入
import add from '../../common/add.js'
- css引入靜態(tài)資源
/* 絕對路徑 */
background-image: url(/static/logo.png);
background-image: url(@/static/logo.png);
/* 相對路徑 */
background-image: url(../../static/logo.png);
3葵礼、應用的生命周期
- onLaunch:當
uni-app
初始化時完成,全局只完成一次并鸵。 - onShow:當
uni-app
啟動鸳粉,或從后臺進入前臺顯示,即從隱藏到顯示 - onHide:當
uni-app
從前臺進入到后臺园担,即從顯示到隱藏 - onError:當
uni-app
報錯時觸發(fā) - onUniNViewMessage:對
nvue
頁面發(fā)送的數(shù)據(jù)進行監(jiān)聽 - onUnhandledRejection:對未處理的 Promise 拒絕事件監(jiān)聽函數(shù)
- onPageNotFound:頁面不存在監(jiān)聽函數(shù)
- onThemeChange:監(jiān)聽系統(tǒng)主題變化
4届谈、頁面的生命周期
函數(shù)名 | 說明 | 平臺差異說明 | 最低版本 |
---|---|---|---|
onLoad | 監(jiān)聽頁面加載,其參數(shù)為上個頁面?zhèn)鬟f的數(shù)據(jù)弯汰,參數(shù)類型為Object(用于頁面?zhèn)鲄ⅲ┘枭剑瑓⒖?a target="_blank">示例 | ||
onShow | 監(jiān)聽頁面顯示。頁面每次出現(xiàn)在屏幕上都觸發(fā)蝙泼,包括從下級頁面點返回露出當前頁面 | ||
onReady | 監(jiān)聽頁面初次渲染完成程剥。注意如果渲染速度快劝枣,會在頁面進入動畫完成前觸發(fā) | ||
onHide | 監(jiān)聽頁面隱藏 | ||
onUnload | 監(jiān)聽頁面卸載 | ||
onResize | 監(jiān)聽窗口尺寸變化 | App汤踏、微信小程序 | |
onPullDownRefresh | 監(jiān)聽用戶下拉動作,一般用于下拉刷新舔腾,參考示例 | ||
onReachBottom | 頁面上拉觸底事件的處理函數(shù) | ||
onTabItemTap | 點擊 tab 時觸發(fā)溪胶,參數(shù)為Object,具體見下方注意事項 | 微信小程序稳诚、百度小程序哗脖、H5、App(自定義組件模式) | |
onShareAppMessage | 用戶點擊右上角分享 | 微信小程序、百度小程序才避、字節(jié)跳動小程序橱夭、支付寶小程序 | |
onPageScroll | 監(jiān)聽頁面滾動,參數(shù)為Object | ||
onNavigationBarButtonTap | 監(jiān)聽原生標題欄按鈕點擊事件桑逝,參數(shù)為Object | 5+ App棘劣、H5 | |
onBackPress | 監(jiān)聽頁面返回,返回 event = {from:backbutton楞遏、 navigateBack} 茬暇,backbutton 表示來源是左上角返回按鈕或 android 返回鍵;navigateBack表示來源是 uni.navigateBack 寡喝;詳細說明及使用:onBackPress 詳解 | App糙俗、H5 | |
onNavigationBarSearchInputChanged | 監(jiān)聽原生標題欄搜索輸入框輸入內容變化事件 | App、H5 | 1.6.0 |
onNavigationBarSearchInputConfirmed | 監(jiān)聽原生標題欄搜索輸入框搜索事件预鬓,用戶點擊軟鍵盤上的“搜索”按鈕時觸發(fā)巧骚。 | App、H5 | 1.6.0 |
onNavigationBarSearchInputClicked | 監(jiān)聽原生標題欄搜索輸入框點擊事件 | App格二、H5 | 1.6.0 |
onShareTimeline | 監(jiān)聽用戶點擊右上角轉發(fā)到朋友圈 | 微信小程序 | 2.8.1+ |
onAddToFavorites | 監(jiān)聽用戶點擊右上角收藏 | 微信小程序 | 2.8.1+ |
5网缝、頁面棧
框架以棧的形式管理當前所有頁面, 當發(fā)生路由切換的時候蟋定,頁面棧的表現(xiàn)如下:
路由方式 | 頁面棧表現(xiàn) | 觸發(fā)時機 |
---|---|---|
初始化 | 新頁面入棧 | uni-app 打開的第一個頁面 |
打開新頁面 | 新頁面入棧 | 調用 API uni.navigateTo 粉臊、使用組件<navigator open-type="navigate"/>
|
頁面重定向 | 當前頁面出棧,新頁面入棧 | 調用 APIuni.redirectTo 驶兜、使用組件<navigator open-type="redirectTo"/>
|
頁面返回 | 頁面不斷出棧扼仲,直到目標返回頁 | 調用 APIuni.navigateBack 、使用組件<navigator open-type="navigateBack"/> 抄淑、用戶按左上角返回按鈕屠凶、安卓用戶點擊物理back按鍵 |
Tab 切換 | 頁面全部出棧,只留下新的 Tab 頁面 | 調用 APIuni.switchTab 肆资、使用組件<navigator open-type="switchTab"/> 矗愧、用戶切換 Tab |
重加載 | 頁面全部出棧,只留下新的頁面 | 調用 APIuni.reLaunch 郑原、使用組件<navigator open-type="reLaunch"/>
|
6唉韭、官方文檔
page.json
配置 的官方文檔
uni-app
的官方組件文檔
內容很詳細,可作為工具文檔使用
2020.10.30