通用uni-appMD

通用框架介紹

目錄介紹

  src
    api 編寫接口請求方法目錄
    common 公共樣式目錄
    components-global 全局組件目錄厦酬,可以通過js 喚起組件
    locale 國際化目錄
    mix  抽象 page 和 功能組件公共方法和屬性的目錄
    mock  網(wǎng)絡(luò)請求 mock 目錄 在此可以模擬接口請求返回等
    pages 項目頁面
    static 文件資源 圖片 資源等存放目錄
    store Vuex 編寫目錄
    utils 網(wǎng)絡(luò)請求 插件等工具方法目錄
  App.vue 全局 app
  main.js 入口文件
  manifest.json 應(yīng)用配置  https://uniapp.dcloud.net.cn/collocation/manifest.html#
  pages.json 頁面注冊文件 也可以稱之為路由文件

了解更多


插件

借助Vue 原型鏈的方式架专,全局掛在一些函數(shù)

  • $util

  目錄:src/utils/util/index

在這里可以編寫通用插件方法渤昌,例如時間處理,路由處理等等, 非業(yè)務(wù)相關(guān)的方法。

使用方式:

  this.$util.[function name](options)

  // navTo 路由跳轉(zhuǎn)方法
  this.$util.navTo({
    url: 'pages/target/index', // 目標路由地址
    params: { // 添加到URL后的參數(shù)
      a:1,
      b:2
    }
  });
  // 等效于: 'pages/target/index?a=1&b=2'
  // 獲取url 參數(shù)
  const { a, b } = this.$util.getParams(); // a = 1  b = 2
  const a = this.$util.getParams('a'); // a = 1
  const b = this.$util.getParams('b'); // b = 2
  • $b

  目錄:src/utils/business/index

可以編寫業(yè)務(wù)方法豹休,例如處理一些通用復(fù)雜業(yè)務(wù)

  • $r

  目錄:src/utils/global/index

全局組件的編寫,可以通過 $r.toast(options) 全局彈出唯一的 提示框
目前有 Toast Modal 兩種全局組件

  this.$r.toast(options) 
  this.$r.modal(options)

具體 options 內(nèi)容參考 uView-Toast uView-Modal
具體使用方式:

 <button @click="() => {
    $r.toast({
      message: '這是提示'桨吊,// 提示的內(nèi)容
      type: 'success', // 提示的類型
    })
  }">
  打開Toast
</button>

function test () {
   this.$r.toast({
      message: '這是提示'威根,// 提示的內(nèi)容
      type: 'success', // 提示的類型
    })
}


國際化

方便項目切換語言

方案: 前端項目掛載 后端提供的script 腳本 用來請求后端語言包數(shù)據(jù),并掛在到 window 變量下视乐,方便業(yè)務(wù)自行編輯語言包內(nèi)容

目錄
-locale
├─ lang
|    ├─en
|    |  └─index.js
|    |
|    ├─tw
|    |  └─index.js
|    |
|    └─index.js
|
├─ uni-app.en.json
|
├─ uni-app.tw.json
  • 自定義自帶組件國際化內(nèi)容
    uni-app.[language].json
    locale/uni-app.語言地區(qū)代碼.json洛搀,如:uni-app.en.json,uni-app.tw.json
    可以替換 uni-app 框架內(nèi)部組件的一些詞條
    例如:

      {
      "common": {
        "uni.app.quit": "再按一次退出應(yīng)用",
        "uni.async.error": "連接服務(wù)器超時佑淀,點擊屏幕重試",
        "uni.showActionSheet.cancel": "取消",
        "uni.showToast.unpaired": "請注意 showToast 與 hideToast 必須配對使用",
        "uni.showLoading.unpaired": "請注意 showLoading 與 hideLoading 必須配對使用",
        "uni.showModal.cancel": "取消",
        "uni.showModal.confirm": "確定",
        "uni.chooseImage.cancel": "取消",
        "uni.chooseImage.sourceType.album": "從相冊選擇",
        "uni.chooseImage.sourceType.camera": "拍攝",
        "uni.chooseVideo.cancel": "取消",
        "uni.chooseVideo.sourceType.album": "從相冊選擇",
        "uni.chooseVideo.sourceType.camera": "拍攝",
        "uni.previewImage.cancel": "取消",
        "uni.previewImage.button.save": "保存圖像",
        "uni.previewImage.save.success": "保存圖像到相冊成功",
        "uni.previewImage.save.fail": "保存圖像到相冊失敗",
        "uni.setClipboardData.success": "內(nèi)容已復(fù)制",
        "uni.scanCode.title": "掃碼",
        "uni.scanCode.album": "相冊",
        "uni.scanCode.fail": "識別失敗",
        "uni.scanCode.flash.on": "輕觸照亮",
        "uni.scanCode.flash.off": "輕觸關(guān)閉",
        "uni.startSoterAuthentication.authContent": "指紋識別中...",
        "uni.picker.done": "完成",
        "uni.picker.cancel": "取消",
        "uni.video.danmu": "彈幕",
        "uni.video.volume": "音量",
        "uni.button.feedback.title": "問題反饋",
        "uni.button.feedback.send": "發(fā)送"
      },
      "ios": {},
      "android": {}
    }
    

    更多細節(jié)請查看文檔

  • 自定義業(yè)務(wù)詞條
    lang 目錄下 根據(jù)項目需求 創(chuàng)建對應(yīng)的語言包 例如 英文:en; 簡體 tw
    在對應(yīng)語言包下的 index.js 文件內(nèi) 注冊具體的詞條條目
    例如:

     // src/locale/lang/en/index.js
    
      {
        ...SYS_LABEL.en,
      // 也可以在本地添加自定義內(nèi)容
        test: {
          name: 'this is test'
        }
      }
     // src/locale/lang/tw/index.js
      {
        ...SYS_LABEL.tw,
      // 也可以在本地添加自定義內(nèi)容
        test: {
          name: '這是測試'
        }
      }
    

    SYS_LABEL 為后端掛在到 window 上的 語言對象
    (針對于一些選項的國際化 可以參加源碼中的 SYS_DICT

  • 創(chuàng)建并注冊i18n 對象

    1. 創(chuàng)建
      // src/locale/lang/index.js
      import Vue from 'vue'
      import VueI18n from 'vue-i18n'
      import TW from './tw'
      import EN from './en'
      Vue.use(VueI18n)
      const messages = {
        TW: {
          ...TW
        },
        EN: {
          ... EN
        },
      }
      const i18n = new VueI18n({
        locale: localStorage.getItem('lang') || 'TW',
        messages,
        silentTranslationWarn: true
      })
      Vue.prototype._i18n = i18n
      export default i18n
    
    1. 注冊
      // src/main.js
      import i18n from './locale/lang'
      const app = Vue({
        i18n,
        ... other options
      })
    
  • 使用i18n

      <span>{{ $t('test.name') }}</span>
    
      const name = this.$t('test.name')
    
  • 切換語言

    切換語言的方法已封裝在插件 $util 中,詳情見 src/utils/util/index.js switchLan 方法

       $util.switchLan('en', $vm)
       this.$util.switchLan('en', this)
    

網(wǎng)絡(luò)請求

  • request

      目錄 src/utils/http/request.js
    

    了解更多 Request

  • api

    按照模塊創(chuàng)建api 目錄 定義對應(yīng)模塊的接口api留美,在需要使用的地方 導(dǎo)入對應(yīng)模塊的接口方法

      目錄 src/api/xxx/index.js
      xxx 對應(yīng)模塊名
      例如: user 模塊的接口全部定義在 src/api/user/index.js 中
      import request from '@utils/http/request'
      export async function getUserInfo(data){
        return request({
          url: `/api/user/userInfo`,
          data,
          method: 'GET'
        })
      }
     export async function xxx(){
      ... 
    }
    
  • mock

    模擬接口請求,項目初期沒有接口的時候伸刃,可以約定返回規(guī)范和數(shù)據(jù)谎砾,進行快速開發(fā) (框架中已集成對應(yīng)功能 按照要求創(chuàng)建目錄即可)

      目錄 
      src/mock/index.js mock 入口文件 (無需修改)
      src/mock/xxx/index.js  對應(yīng)xxx模塊的模擬文件,在里面去編寫接口請求的url 方法 還有返回內(nèi)容
    
    

    mock 入口文件 會按照對應(yīng)的規(guī)則掃描所有 src/mock 目錄下的index.js 文件 所以 所有的api 編寫應(yīng)該寫在 index.js 文件中
    了解更多 Mock

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捧颅,一起剝皮案震驚了整個濱河市景图,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碉哑,老刑警劉巖挚币,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谭梗,居然都是意外死亡,警方通過查閱死者的電腦和手機宛蚓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門激捏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凄吏,你說我怎么就攤上這事远舅∪蚧祝” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵图柏,是天一觀的道長序六。 經(jīng)常有香客問我,道長蚤吹,這世上最難降的妖魔是什么例诀? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮裁着,結(jié)果婚禮上繁涂,老公的妹妹穿的比我還像新娘。我一直安慰自己二驰,他們只是感情好扔罪,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桶雀,像睡著了一般矿酵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上矗积,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天全肮,我揣著相機與錄音,去河邊找鬼漠魏。 笑死倔矾,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的柱锹。 我是一名探鬼主播哪自,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼禁熏!你這毒婦竟也來了壤巷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瞧毙,失蹤者是張志新(化名)和其女友劉穎胧华,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宙彪,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡矩动,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了释漆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悲没。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖男图,靈堂內(nèi)的尸體忽然破棺而出示姿,到底是詐尸還是另有隱情甜橱,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布栈戳,位于F島的核電站岂傲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏子檀。R本人自食惡果不足惜镊掖,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望命锄。 院中可真熱鬧堰乔,春花似錦、人聲如沸脐恩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驶冒。三九已至苟翻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骗污,已是汗流浹背崇猫。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留需忿,地道東北人诅炉。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像屋厘,于是被迫代替她去往敵國和親涕烧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容