使用uni-app開發(fā)微信小程序的實(shí)現(xiàn)
前言
9月份,開始開發(fā)微信小程序,也曾調(diào)研過(guò)wepy
/mpvue
,考慮到后期跨端的需求,最終選擇使用了uni-app
,本文主要介紹如何使用uni-app
搭建小程序項(xiàng)目,以及自己對(duì)框架的補(bǔ)充,包括封裝request
接口,引用color-ui
,動(dòng)態(tài)設(shè)置底部tab
頁(yè)等,詳情見(jiàn)下文
uni-app 介紹(官網(wǎng))
uni-app
是一個(gè)使用Vue.js
開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS
、Android
、H5
、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘)等多個(gè)平臺(tái)。
即使不跨端,uni-app
同時(shí)也是更好的小程序開發(fā)框架。詳見(jiàn)評(píng)測(cè)
好處如圖:
我使用uni-app
框架主要用來(lái)開發(fā)微信小程序,我使用過(guò)程中感覺(jué)的好處是:
- uni-app框架使用的開發(fā)工具 HBuilderX,HBuilderX 內(nèi)置相關(guān)環(huán)境,開箱即用,無(wú)需配置nodejs, 需要什么插件可直接下載,測(cè)試、打包、發(fā)布特別方便。
- uni-app采用Vue.js語(yǔ)法,基本支持vue大部分語(yǔ)法(vue的動(dòng)態(tài)組件component不支持)。
- PC端使用vue封裝的一些js方法,以及建構(gòu)思想,可直接移植到uni-app中,比如:本人pc項(xiàng)目中api接口js文件,可直接復(fù)制到小程序框架api文件夾中(PS:api文件夾維護(hù)后端請(qǐng)求路徑)
- uni-app 周邊生態(tài)豐富,插件市場(chǎng)可用的組件特別多,也可使用vue語(yǔ)法自己封裝一些組件。
開發(fā)工具(HBuilderX)
HBuilderX
: 官網(wǎng)IDE下載地址;HBuilderX
是通用的前端開發(fā)工具,但為uni-app
做了特別強(qiáng)化。HBuilderX
提供了一些插件,可直接下載安裝,具體如下圖:工具
>插件安裝
項(xiàng)目結(jié)構(gòu)
首先我們通過(guò)HBuilderx
> 文件
> 項(xiàng)目
,選擇uni-app
項(xiàng)目,模板我選擇的是默認(rèn)模板,當(dāng)然你也可選擇其他模板,接著確認(rèn)創(chuàng)建,如果你選擇的是默認(rèn)模板,此時(shí)你的文件夾應(yīng)該如下圖:
接著我根據(jù)自己的項(xiàng)目需求,以及為了與vue
的pc
項(xiàng)目結(jié)構(gòu)保持一下,分別添加如下文件夾
具體代碼可參考GitHub:weixin-start
+-- api -- (頁(yè)面接口路徑) | +-- login.js | +-- tools.js +-- colorui -- (color-ui 樣式) +-- common -- (通用的js方法) +-- components -- (通用的組件) +-- pages -- (主要頁(yè)面) +-- services -- (通用的服務(wù)) | +-- auth.service.js -- (主要封裝了一些保存用戶的token方法) | +-- config.service.js -- (存放全局通用的變量) | +-- request.service.js -- (封裝了uni.request的方法) +-- static -- (靜態(tài)文件) +-- unpackage -- (在小程序模擬器運(yùn)行的文件) +-- App.vue -- (應(yīng)用配置,用來(lái)配置App全局樣式以及監(jiān)聽 ) +-- main.js -- ( Vue初始化入口文件) +-- manifest.json -- (配置應(yīng)用名稱、appid、logo、版本等打包信息) +-- pages.json -- (配置頁(yè)面路由、導(dǎo)航條、選項(xiàng)卡等頁(yè)面類信息) +-- uni.scss -- (這里是uni-app內(nèi)置的常用樣式變量)
主要文件介紹:
- api 文件夾中存放的是各個(gè)頁(yè)面的請(qǐng)求路徑,引入request.service.js暴露出來(lái)的api,
- colorui 使用了color-ui樣式,個(gè)人認(rèn)為樣式非常好看,非常感謝,詳情:color-ui
- common 存放全局通用的js方法
- components 存放全局組件,包括uni-ui以及自己封裝的組件
- pages 主要頁(yè)面, 其中pages文件夾中 index文件中可布局底部的tab頁(yè)面,通過(guò)v-if判斷顯示不同的tab頁(yè)
- services 通用的服務(wù)文件(我不知道這種描述是否準(zhǔn)確,原來(lái)用的Angular4,Angular中服務(wù)概念對(duì)我有一定的影響)
- auth.service.js 通過(guò)使用uni.setStorageSync簡(jiǎn)單封裝了一些保存用戶的token方法
- config.service.js 保存全局的變量 例如:apiUrl請(qǐng)求接口的IP, storage_key 是token 的鍵值,全局引用的變量都可定義在這個(gè)文件內(nèi),后期如果需要改動(dòng),只需要修改這個(gè)文件中對(duì)用的值
- request.service.js 使用Promise對(duì)uni.request進(jìn)行封裝,將get、post、delete請(qǐng)求方式暴露出來(lái),在api文件夾中引用這個(gè)文件即可使用get、post、delete方法
- static 靜態(tài)文件,我主要用來(lái)放圖片
- unpackage (在小程序模擬器運(yùn)行的文件)
- App 應(yīng)用配置,用來(lái)配置App全局樣式以及監(jiān)聽
如何自定義底部tab導(dǎo)航欄
本人項(xiàng)目中需要根據(jù)不同的角色顯示不同的底圖tab頁(yè)
,那么原來(lái)在pages.json
設(shè)置的tab
頁(yè),不夠靈活,也不好擴(kuò)展,因此自定義tab
頁(yè),具體如下
在pages
文件夾中,新建一個(gè)index
文件夾并創(chuàng)建一個(gè)index.vue
頁(yè)面,在這個(gè)頁(yè)面可布局底部tab
, 根據(jù)點(diǎn)擊不同的tab
顯示對(duì)應(yīng)的tab頁(yè), 如圖:
注意:
如果每個(gè)tab點(diǎn)擊是切換不同的view,這個(gè)就相當(dāng)于單頁(yè)應(yīng)用了,當(dāng)頁(yè)面比較復(fù)雜時(shí),切換過(guò)程可能存在卡。所以使用自定義組件的tabbar就盡量避免太多復(fù)雜頁(yè)面。
當(dāng)然原生tabbar雖然體驗(yàn)好,但自定義性不足。這個(gè)需要開發(fā)者根據(jù)自己的需求來(lái)平衡選擇。
如何使用colorui
引入
ColorUI是一個(gè)css庫(kù)?。。≡谀阋霕邮胶罂梢愿鶕?jù)class來(lái)調(diào)用組件
下載源碼解壓獲得/Colorui-UniApp文件夾,復(fù)制目錄下的 /colorui 文件夾到你的項(xiàng)目根目錄
App.vue
引入關(guān)鍵Css
main.css
icon.css
<style> @import "colorui/main.css"; @import "colorui/icon.css"; @import "app.css"; /* 你的項(xiàng)目css */ .... </style>
此時(shí)你可以使用colorUI提供的css樣式了,
因?yàn)閏olorUI的文檔說(shuō)明正在完善中,具體樣式對(duì)應(yīng)的類名可能不清楚,那么你可將color-ui下載下來(lái),使用HBuilderX
運(yùn)行在瀏覽器中,打開調(diào)試工具,找到對(duì)應(yīng)的節(jié)點(diǎn)即可獲取對(duì)應(yīng)的類名,(當(dāng)然你也可能會(huì)有其他好的方法)。
使用colorui自定義導(dǎo)航欄
pages.json
配置取消系統(tǒng)導(dǎo)航欄
"globalStyle": { "navigationStyle": "custom" },
App.vue
獲得系統(tǒng)信息
"globalStyle": { "navigationStyle": "custom" },
在main.js
引入cu-custom
組件
import cuCustom from './colorui/components/cu-custom.vue' Vue.component('cu-custom',cuCustom)
在需要的頁(yè)面可以直接使用了,如下:
<cu-custom bgColor="bg-gradual-blue" :isBack="true"> <block slot="backText">返回</block> <block slot="content">導(dǎo)航欄</block> </cu-custom>
跨端兼容(如何你只是開發(fā)小程序,就不需要考慮)
根據(jù)平臺(tái)特性,uni-app
提供了條件編譯手段,在一個(gè)工程里優(yōu)雅的完成了平臺(tái)個(gè)性化實(shí)現(xiàn)。
<view class="content"> <! -- #ifdef APP-PLUS --> <view>僅出現(xiàn)在 5+App 平臺(tái)下的代碼</view> <! -- #endif --> <! -- #ifndef H5 --> <view>除了 H5 平臺(tái),其它平臺(tái)均存在的代碼</view> <! -- #endif --> <! -- #ifdef H5 || MP-WEIXIN --> <view>僅在 H5 平臺(tái)或微信小程序平臺(tái)存在的代碼</view> <! -- #endif --> </view>
發(fā)布微信小程序
服務(wù)器域名必須是https
合法域名
進(jìn)入開發(fā)頁(yè)面 開發(fā)
> 開發(fā)設(shè)置
,設(shè)置服務(wù)器域名, 如圖
發(fā)布小程序之前需要配置appid
,應(yīng)用名稱、logo,可登錄微信公眾平臺(tái)進(jìn)入設(shè)置頁(yè),設(shè)置小程序的基本信息
使用HBuilderx
找到發(fā)行
> 小程序-微信
,點(diǎn)擊后稍等片刻會(huì)啟動(dòng)微信開發(fā)工具,點(diǎn)擊微信開發(fā)工具上傳
,填寫上傳信息即可,此時(shí)上傳到微信公共平臺(tái)是體驗(yàn)版,需要在版本管理
>提交審核
,等待后臺(tái)審核,審核完成后,小程序也就上線成功了,如圖:
總結(jié)
本文主要介紹了使用uni-app框架開發(fā)微信小程序,自己對(duì)默認(rèn)模板的補(bǔ)充,包括封裝request
接口,引用color-ui
,動(dòng)態(tài)設(shè)置底部tab
頁(yè),還有通過(guò)color-ui
提供的導(dǎo)航欄組件,自定義導(dǎo)航欄。本人才疏學(xué)淺,表達(dá)能力有限,書寫過(guò)程如有錯(cuò)誤歡迎指正,也請(qǐng)點(diǎn)贊評(píng)論鼓勵(lì)(ps: 內(nèi)心怕怕的)
關(guān)于uni-app
更多信息可參考官方文檔 https://uniapp.dcloud.io
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS實(shí)現(xiàn)選擇TextArea內(nèi)文本的方法
這篇文章主要介紹了JS實(shí)現(xiàn)選擇TextArea內(nèi)文本的方法,涉及javascript針對(duì)頁(yè)面TextArea元素焦點(diǎn)設(shè)置及文本獲取的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08bootstrap 模態(tài)框(modal)實(shí)現(xiàn)水平垂直居中顯示
這篇文章主要為大家詳細(xì)介紹了bootstrap 模態(tài)框modal實(shí)現(xiàn)水平垂直居中顯示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01JavaScript性能優(yōu)化之小知識(shí)總結(jié)
JavaScript的性能問(wèn)題不容小覷,這就需要我們開發(fā)人員在編寫JavaScript程序時(shí)多注意一些細(xì)節(jié),本文給大家介紹javascript性能優(yōu)化之小知識(shí)總結(jié),需要的朋友可以參考下2015-11-11JavaScript原生對(duì)象之String對(duì)象的屬性和方法詳解
這篇文章主要介紹了JavaScript原生對(duì)象之String對(duì)象的屬性和方法詳解,本文講解了length、charAt()、charCodeAt()、concat()、indexOf()、lastIndexOf()等方法屬性,需要的朋友可以參考下2015-03-03avaScript基礎(chǔ)學(xué)習(xí)-基本的語(yǔ)法規(guī)則
這篇文章主要介紹了avaScript的語(yǔ)法規(guī)則,本文的語(yǔ)法講解主要講一下與其他語(yǔ)言的區(qū)別,下面詳細(xì)的介紹內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你有所幫助2022-02-02javascript實(shí)現(xiàn)二級(jí)級(jí)聯(lián)菜單的簡(jiǎn)單制作
這篇文章主要介紹了javascript實(shí)現(xiàn)二級(jí)級(jí)聯(lián)菜單的簡(jiǎn)單制作,感興趣的小伙伴們可以參考一下2015-11-11JS獲取子節(jié)點(diǎn)、父節(jié)點(diǎn)和兄弟節(jié)點(diǎn)的方法實(shí)例總結(jié)
這篇文章主要介紹了JS獲取子節(jié)點(diǎn)、父節(jié)點(diǎn)和兄弟節(jié)點(diǎn)的方法,結(jié)合實(shí)例形式總結(jié)分析了JavaScript針對(duì)子節(jié)點(diǎn)、父節(jié)點(diǎn)和兄弟節(jié)點(diǎn)獲取相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2018-07-07