mpvue + iview 項目分包優化

爲了增長開發效率,小程序選用了 mpvue 做爲框架配合 iview 小程序端的 UI 庫進行開發。起初是使用 cli 中官方的腳手架進行開發,可是有一些缺點。 首先,目錄結構不是特別的方便。每建立一個頁面,要在一個文件夾下分別建立 index.vue 和 main.js。而後,官方的腳手架是不支持小程序分包的。因此引入 mpvue-entry 用來統一頁面配置到 page.js,同時也讓 mpvue 支持了分包。做者整合了一個 mpvue-quickstart 可以直接使用。vue

如下爲相關網址:git

mpvue:http://mpvue.com/github

mpvue-quickstart:https://github.com/F-loat/mpvue-quickstart小程序

mpvue-entry:https://github.com/F-loat/mpvue-entrybash

iview:https://weapp.iviewui.com/app

mpvue 相關插件彙總:https://github.com/mpvue/awesome-mpvue 框架

mpvue
mpvue-quickstart

##Tips: ###1.使用 mpvue-entry 後帶來的一些配置問題 1)全部頁面都集中到 page.js 中進行配置,若是想要配置首頁~「首頁默認爲 pages.js 中的第一項,但會被 main.js 中的配置覆蓋(你能夠把你的首頁寫在 main.js 的 pages 的相關配置中)」同時支持新增頁面的熱更新,省去了從新 start 的步驟。 PS: 寫一些東西前仍是要好好讀讀文檔,遇到問題先看文檔。不要養成張嘴就問的習慣哈(說給本身聽)iview

2)引入後能夠很方便的配置這個頁面是否須要分包、是否須要編譯。 分包的時候須要注意一些問題。tab 相關的頁面是必須放在主包中的,分包的目錄須要跟 pages 文件夾同級,分包後跳轉時儘可能使用絕對路徑防止相關頁面沒法找到。以下圖,就會生成三個包:pages、packageA 和 packageB。 關於 mpvue 如何實現分包:https://github.com/Meituan-Dianping/mpvue/issues/590 ui

###2.關於 iview 的引入 在分包以前由於對項目大小的限制,我只把須要的文件引入到靜態文件夾中,而後在個頁面的相關配置中引入使用就能夠了。(小程序更新後最大支持8M,頁面路徑最多可以十層)spa

import Vue from 'vue'
import App from './index'

const app = new Vue(App)
app.$mount()

export default {
  config: {
    navigationBarTitleText: '編輯標籤',
    navigationBarTextStyle: 'white',
    navigationBarBackgroundColor: '#4F87E4',
    usingComponents: {
      'i-tag': '/static/iview/tag/index',
      'i-toast': '/static/iview/toast/index'
    }
  }
}
複製代碼

當時爲了使用方便把 toast 的方法掛在了 vue 下,可是在設置分包後一下代碼出現了問題。 分包前:

const { $Toast } = require('../static/iview/base/index')
Vue.prototype.$Toast = $Toast
複製代碼

分包後:

const { $Toast } = require('../static/iview/base/index.js') // app-only
Vue.prototype.$Toast = $Toast // app-only
複製代碼

以上可以看到在代碼後加了一段註釋 app-only。用來指定 main.js 中特有的代碼(文檔也有寫過...當時沒理解)

相關文章
相關標籤/搜索