01
什(shén)麽是(shì)UNIAPP,介紹UNIAPP 用(yòng)途和§↑×(hé)技(jì)術(shù)基本原理(lǐ)
1. uni-app 是(shì)一(yī)個(gè)使用(yòng) V♥α↔ue.js 開(kāi)發所有(yǒu)前端應用(yòn≈↓<g)的(de)框架,開(kāi)發者編寫一(yī)套代碼,可(kě£δ•σ)發布到(dào)iOS、Android、H5、以及各種£×小(xiǎo)程序(微(wēi)信/支付寶/百度/頭條/εQQ/釘釘/淘寶)、快(kuài)應用(yòng)等多(duō¶γ)個(gè)平台。
2. 據 DCloud 稱, uni-app 在手,做(zu←÷<←ò)啥都(dōu)不(bù)愁。即使不(bù)跨端,uni-app也(y€←∑ě)是(shì)更好(hǎo)的(de)小(xiǎo)程序開(π™kāi)發框架、更好(hǎo)的(de)App跨平台框架、更方便的(de)H¶"∏5開(kāi)發框架。不(bù)管領導安×&↔排什(shén)麽樣的(de)項目,都(dōu)可(kě)以快(kuài)速Ω₽¥交付,不(bù)需要(yào)轉換開(kāi)發思維、不(bù)需要(yào§π)更改開(kāi)發習(xí)慣。
3. 據 DCloud 稱,很(hěn)多(duō ↑)人(rén)以為(wèi)小(xiǎo)程序是(shì)微(wēi®↔)信先推出的(de),其實 DCloud 才是(shì)這(zhè)個(g ♥è)行(xíng)業(yè)的(de)始作(z¥&↔$uò)俑者。DCloud于2012年(nián)♣<&☆開(kāi)始研發小(xiǎo)程序技(jì)術(shù),優化(huà)₽☆ webview的(de)功能(néng)和(hé)性能(néng☆♦£),并加入W3C和(hé)HTML5中國(guó)産業(yè)聯☆₽✔盟,推出了(le)HBuilder開(kāi)♣←♣×發工(gōng)具,為(wèi)後續産業(yè)化(huà)做(zuò)準備•'。2015年(nián),DCloud正式商用(yòσ♠ng)了(le)自(zì)己的(de)小(xiǎo)程序,産品名為(wèi)§δ“流應用(yòng)”,它不(bù)是(shì) ₽ ←B/S模式的(de)輕應用(yòng),而是(shìσ"π')能(néng)接近(jìn)原生(shēng)功<♦&能(néng)、性能(néng)的(de)動态App,并≠♠且即點即用(yòng)。
02
功能(néng)架構圖
4.編譯到(dào)小(xiǎo)程序能(néng)力通(tōng)過縫合美↑♦©(měi)團前端團隊的(de)mp-vue實現(xiàn)。
5.原生(shēng)渲染能(néng)力通(tōng→↓↑)過縫合阿裡(lǐ)巴巴團隊的(de)weex實現(xiàn≥₩£™)。
6.uniapp提供向微(wēi)信小(xiǎo)程序看(kàn)齊的(de)內(nèi)置組件(jiàn)和(hé)api。
7.得(de)益于雙線程模型導緻的(de)渲染性能(n☆λφ©éng)劣勢,uniapp使用(yòng)webview渲染APP時(s♠×¥≤hí)性能(néng)亦不(bù)如(rú)傳統的(de)5+Hybr€✘αid模式
03
創建項目及初始化(huà)步驟
04
啓動小(xiǎo)程序
最好(hǎo)現(xiàn)在uniapp中配置一<↕¥(yī)下(xià)小(xiǎo)程序的(de)appid 否則可(kě)能(®∑↑₽néng)會(huì)出現(xiàn)啓動不(bù•ε)了(le)的(de)情況
步驟:
微(wēi)信公衆平台查看(kàn)自(zì)己的(de)小(xiǎo)↕"£<程序id 開(kāi)發 → 開(kāi)發管理(π'™lǐ) → 開(kāi)發設置 → 找到(dào)appσ£∏₩id
05
目錄結構
1)pages
更多(duō)詳細介紹:uni-app官網
每次想要(yào)在pages裡(lǐ)新加一(yī)個(gè)頁面 都(¥λdōu)要(yào)在pages.json裡(lǐ)配置一(yī)下(xiα αà)
下(xià)面列舉一(yī)些(xiē)常用(↑λyòng) style 配置項,一(yī)般★×±情況下(xià)足以開(kāi)發,更多(duō)✘ε↕:uni-app官網
2)APP.vue
●onLunch隻會(huì)在進入程序的↕≤×↕(de)時(shí)候執行(xíng)一(yī)次,一(yī)般搭配搭建或♥↓等獲取微(wēi)信公衆号的(de)code,想要(yào)app.§ ↕vue調取methods 的(de)方法記得(de)用(yòn↑ γg) getApp.方法名( )。
●globalData:常用(yòng)于定義一(yī)些(x♠δΩiē)公共的(de)變量、例如(rú)圖片路(lù)徑♠♥資源、手機(jī)是(shì)否是(shì)ios©"€或安卓。
使用(yòng) :現(xiàn)在js中引入
1.import app from ‘@/Ap≈ p.vue’
2.platform: app.globalData.platform
●style 定義公共的(de)全局樣式,例如(rú)垂直€$ ←水(shuǐ)平居中、布局、公共類目樣式都(dōu)可(kě)以定義。
3)頁面生(shēng)命周期
4)組件(jiàn)生(shēng)命周期
uni-app 組件(jiàn)支持的(de)生(shē→÷ γng)命周期,與vue标準組件(jiàn)的(de)生(shēng)命$γ₹周期相(xiàng)同。這(zhè)裡(lǐ)沒有(yǒu)頁面級的(de)o"≠'nLoad等生(shēng)命周期 如(rú)果想要(yào)發送請(qǐ♦•←ng)求 可(kě)以在子(zǐ)組件(jiàn)的(de)生(sh✔ε&ēng)命周期去(qù)執行(xíng)
5)底部導航
官方文(wén)檔:uni-app官網
06
uniapp使用(yòng)的(de)優點和(hé)缺點
●優點:
1)多(duō)端支持
當然是(shì)多(duō)端開(kāi)發™×啦,uni-app是(shì)一(yī)套可(kě)以适用(yòng)多(σ₽±•duō)端的(de)開(kāi)源框架,一(yī)套代碼可(σ'↔φkě)以同時(shí)生(shēng)成ios,♣♥Android,H5,微(wēi)信小(xiǎo)程α÷γ序,支付寶小(xiǎo)程序,百度小(xiǎo)程序等。
2)更新叠代快(kuài)
用(yòng)了(le)它的(de)Hbx你(nǐ)就(ji"§ ù)知(zhī)道(dào),經常會(huì)右下(xiΩ¥à)角會(huì)彈出讓你(nǐ)更新,沒錯(cuò),看(kàφ•n)到(dào)它經常更新,這(zhè)麽努力的(de)在先進與優化(∞♥huà),還(hái)是(shì)選良心的(de)了(le)。
3)擴張強
你(nǐ)可(kě)以把輕松的(de)把uniapp編譯到(dào)你(nǐ∏$Ω)想要(yào)的(de)端,也(yě)可(kě)以把其它端的™∏≈↔(de)轉換成uniapp,例如(rú)微(wēi)信小(xiǎo)→程序,h5等;如(rú)果開(kāi)發a>≈pp的(de)時(shí)候,前端表現(xiàn)π≈∏不(bù)夠,你(nǐ)還(hái)可(kě∑£§≠)以原生(shēng)嵌套開(kāi)發。
4)開(kāi)發成本、門(mén)檻低(dī)
不(bù)管你(nǐ)是(shì)公司也(yě)εγ好(hǎo),個(gè)人(rén)也(yě)好(×₽↔hǎo),如(rú)果你(nǐ)想開(kāi)發多(d♠✔ ★uō)終端兼容的(de)移動端,那(nà)uniapp就(jiù)很≤α×↔(hěn)适合你(nǐ)。
5)組件(jiàn)豐富
社區(qū)還(hái)是(shì)比較成∑±•∞熟,生(shēng)态好(hǎo),組件(jià•★±n)豐富,支持npm方式安裝第三方包,兼容mpvue,↓DCloud有(yǒu)大(dà)量的(de)組件(jiàn)供你(n>Ω§ǐ)使用(yòng)。
●缺點:
1)爬坑
每個(gè)程序前期肯定都(dōu)會(huì)有(yǒ★Ω∑↑u)很(hěn)多(duō)的(de)坑,一(yī)般的(de)都(d"®ōu)有(yǒu)人(rén)解決了(le),沒解決&β 的(de),你(nǐ)就(jiù)要(yào)慢(màn)慢(màn)的(<≤<de)去(qù)琢磨了(le),官方bug的(de)話(↓₽§εhuà),提交反饋,等官方修複。
2)某些(xiē)組件(jiàn)不(bù)成熟
我說(shuō)的(de)是(shì)某些(xiē)官方組件(jiàn)"•,像什(shén)麽地(dì)圖組件(jiàn),直播組件(↕↔jiàn)等,你(nǐ)要(yào)在上(shàng)面開(kāi)∏£發一(yī)些(xiē)特别功能(néng)的(de)話(huà),可(kě↑>₩)能(néng)還(hái)要(yào)話(huà)費(fèi)很(hα±↑ěn)多(duō)時(shí)間(jiān)。
3)nvue有(yǒu)點蛋疼
某些(xiē)組件(jiàn)或某些(xiē)功能±✔α(néng),官方明(míng)确說(shuō),建議(yì)用(yòng)®"nvue開(kāi)發,那(nà)麽問(wèn)題來(l∞α&•ái)了(le),nvue有(yǒu)很(hěn)多(duō)的(de™×)局限,特别是(shì)css,很(hěnβσ≤)多(duō)都(dōu)不(bù)支持,什(shén)麽文(wén↑σφ)字隻能(néng)是(shì)text,隻支持class樣式,很(hěn)多 ±&(duō)都(dōu)需要(yào)看(kàn)文φ↕(wén)檔。
07
開(kāi)發規範
uni-app 使用(yòng)vue的(de)語法結合小(xiǎo)程序↕≠的(de)标簽和(hé)API。為(wèi)了(le)實現(xiàσ♠®¶n)多(duō)端兼容,綜合考慮編譯速度、運行≤∞→★(xíng)性能(néng)等因素,uni-₽app 約定了(le)如(rú)下(xià)開(kāi)發規範:
1.uniapp的(de)頁面開(kāi)發遵循≤€ Vue 單文(wén)件(jiàn)組件(jiàn) (SFC) 規範。另外≥≠×λ(wài),uniapp不(bù)能(néng)使用(yòng)js進行(xíσ↓σng)html文(wén)檔的(de)DOM操作✔&¥β(zuò),請(qǐng)嚴格遵循vue的(de)MVVM的(de)數(¥★shù)據綁定開(kāi)發方式。
●一(yī)個(gè)vue的(de)文(wén)件(jiàn)α↔中隻能(néng)包含一(yī)個(gè)頂級的(de$↔δ¶)模闆
●一(yī)個(gè)vue文(wén)件(jiàn)隻✘₩↑α能(néng)包含一(yī)個(gè)腳本定義
●一(yī)個(gè)vue文(wén)件(jiàn)可(kě)以包含一(yβ♥ī)個(gè)或多(duō)個(gè)樣式&₽₽÷定義
2.組件(jiàn)标簽靠近(jìn)小(xiǎo)程序規範,需♦£要(yào)注意的(de)是(shì),在uniapp中不( εbù)能(néng)使用(yòng)标準的(de)html标簽,uni®¶app組件(jiàn)名稱及使用(yòng)方式的(de)定義更貼近(jì'∏®®n)微(wēi)信小(xiǎo)程序,優先參考:uni-app 組件(jiàn™σ)文(wén)檔,可(kě)以輔助參考微(wēi)信小(δ↔ πxiǎo)程序組件(jiàn)文(wén)檔。比如(rú):
●<view>标簽在uniapp中的(de)含義與标準html中φ•的(de)标簽能(néng)力相(xiàng•> →)當
●如(rú)果你(nǐ)希望定義圖片,不(bù)能(néng)直接使用(y♦↑&∞òng)html中的(de)img,你(nπ±$ǐ)應該使用(yòng)uniapp的(de)組件(₽≠÷jiàn)标簽image。
uniapp的(de)接口能(néng)力(JS API)非常→♥♥§接近(jìn)微(wēi)信小(xiǎo)程序規範,但(d♦δπàn)需将前綴 wx 替換為(wèi) uni,詳見(jiàn)uni-ap✔≈δp接口規範
3.Css樣式規範
uni.scss文(wén)件(jiàn)中預置了(le)一(yī)些(π ∏σxiē)全局樣式scss變量,這(zhè)些(xiē)變量用(yòng)于定義↑♦應用(yòng)的(de)整體(tǐ)樣式風(fēn↓₩→≠g)格,比如(rú):文(wén)字顔色、背景顔色、邊框顔 ✘ε≤色等等。需要(yào)注意的(de)是(shì)這(zhè)個(g∑$→★è)文(wén)件(jiàn)不(bù)要(yào)随意修改,如(rú)果πδ 要(yào)更改的(de)話(huà)隻能(nénγε∏g)修改變量的(de)值,不(bù)要(♦☆yào)修改變量的(de)名。那(nà)麽如(rú)果我們希望增加一(y♠ ©₩ī)些(xiē)自(zì)定義的(de)全局樣式,₽≤應該怎麽去(qù)做(zuò)呢(ne)?參考下(xià)面±$的(de)方法:
●首先,自(zì)己寫一(yī)個(gè) ©樣式文(wén)件(jiàn),比如(rú):app•∑.scss ,該文(wén)件(jiàn)中自(zì)定義樣式ε✘α書(shū)寫。将該文(wén)件(jiàn)放(fàng)置于/stat©★Ω↕ic/style目錄下(xià);
●其次在app.scss文(wén)件(jiàn)的(de)開(kāi) →頭,引入uni.scss文(wén)件(jiàn),引入語句為(wèi) :@import '~@/uni.scss';
●最後在App,vue的(de)樣式中,引入這(zhè)個(gè)自(z←βì)定義全局樣式文(wén)件(jiàn)數(shù)據綁定及事(shì)件(♠✘←↓jiàn)處理(lǐ)同 Vue.js 規範,同時(shí)補充了(le↓β→)App及頁面的(de)生(shēng)命周期。
uniapp的(de)局部樣式實現(xiàn)是(sh∑×₽ì)以vue文(wén)件(jiàn)為(wèi)單位的(de≠),在某個(gè)vue文(wén)件(j÷≠¶✘iàn)內(nèi)定義的(de)樣式,隻在該vue≥÷♦的(de)渲染範圍內(nèi)生(shēng)效。
4.為(wèi)兼容多(duō)端運行(xín&g),建議(yì)使用(yòng)fle±α≈←x布局進行(xíng)開(kāi)發
5.字體(tǐ)的(de)使用(yòng)
uniapp支持字體(tǐ)的(de)引用(yòng)方式λ×↔分(fēn)為(wèi)2種情況,如(rú)↕α♣果字體(tǐ)文(wén)件(jiàn)小(xiǎo)于≠♠ 40kb,uniapp會(huì)自(•¶®£zì)動将其轉化(huà)為(wèi) base64 格式;将字體₽$(tǐ)文(wén)件(jiàn)放(fàng)置到(dào)φ∑∞static目錄下(xià),然後通(tōng)過fo&αnt-face定義字體(tǐ)。
如(rú)果字體(tǐ)文(wén)件(jiàn)大(dà)λ于等于 40kb, 需開(kāi)發者自(zì ÷ )己轉換将字體(tǐ)文(wén)件(jiàn)轉換成Base∑✘64字符串,否則使用(yòng)将不(bù)生(shē$×®®ng)效;将轉換之後的(de)Base64字符串粘貼到(dào)下(xi≈<♥à)文(wén)的(de)位置,完成字體(→™§tǐ)的(de)定義。
字體(tǐ)的(de)使用(yòng)方式是(ελshì)通(tōng)用(yòng)的(de)css樣式,使☆£☆φ用(yòng)font-family即可(kě)。
08
UI組件(jiàn)庫推薦
●uView框架
官網鏈接:
https://www.uviewui.×σ ☆com/
●uni-ui
官網地(dì)址
uniapp官網:
https://uniapp.dclouαd.net.cn/component/uniui/quickstar'$↑₩t.html
下(xià)載地(dì)址:
https://ext.dcloud.net'₹' .cn/plugin?id=55
微(wēi)信公衆号
業(yè)務咨詢:400-996¶®®9-069(24小(xiǎo)時(shí)服務) 0∑≤↓28-86052918
售後熱(rè)線:028-86052836
公司地(dì)址:成都(dōu)市(shì)武侯區(q§ ū)天益街(jiē)38号理(lǐ)想中心3棟1810