近段時間本人一直在思考如何基於vue搭建一箇中後端管理系統的通用基礎前端解決方案。思考的主要問題點以下:css
多餘的話不說,本人按照效果圖介紹下本身的拙建,強烈但願各位給予建議和指正。html
說明:前端
這塊沒什麼好說的,因爲本人只對sass比較熟悉,就引入了sass和compass。以及引入了gulp構建工具做爲總體構建流程的控制。vue
前端打包工具的選擇上,最終我選擇了rollup,而沒有選擇webpack的緣由有以下幾點:node
按需加載庫我選擇requirejs的理由以下:jquery
<div>{{title}}</div>
Jswebpack
define([],function(){ return { name: 'ctitle', data: function(){ return { title: '這是一個標題' } }, beforeMount:function(){ this.$store.dispatch('childs',[]); } }; });
注意:git
var _event = event, self = this; var chooseItem = function(item){ router.push(item.href); self.$store.dispatch('selectRootItem', item); } self.$store.dispatch('childs',[]); if(item.thridpart && !_cahce[item.id]){ _app.acquire(item.path).done(function(arg){ arg[0].install(_app.createContext()); _cahce[item.id] = true; chooseItem(item); }); }else{ chooseItem(item); }
此部分爲路由跳轉方法的源碼,特別點在於第三方業務模塊的加載,我須要require完成後纔會執行路由的跳轉。github
require(['./app'],function(app){ var _app = app.createApp(); _app.registerGlobalComponents(['title', 'route', 'layout/default']).done(function(){ var vue = _app.createVue(); vue.$mount('#app'); }); });
skin(皮膚樣式)的sass源碼,皮膚的編譯是經過gulp任務完成的。web
提供rollup打包的配置。配置文件以下:
var VueLoader = require('rollup-plugin-vue'); var Resolve = require('rollup-plugin-node-resolve'); var Commonjs = require("rollup-plugin-commonjs"); var path = require('path'); var babel = require('rollup-plugin-babel'); module.exports = { entry: path.resolve(__dirname, '../src/master/index.js'), external: ['vue'], plugins: [VueLoader(), babel(), Resolve(), Commonjs()] }
rollup打包調用:
var masterConfig = require('./rollup.dev.conf'); var rollup = require('rollup'); var path = require('path'); rollup.rollup(masterConfig).then(function(bundle){ bundle.write({ format: 'amd', dest: path.resolve(__dirname, '../dest/test.js') }); });
注意:
node ./build/runtime-server.js
。業務模塊的源碼目錄,此目錄下的代碼須要經過rollup編譯後,纔可以使用。master模塊是一個示例模塊。