国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

分享一個vue項目“腳手架”項目的實現步驟

2019-11-19 11:28:10
字體:
來源:轉載
供稿:網友

搭建緣由

源于公司每次新啟動一個由多人協同開發的項目都由負責人初始化項目之后,每個人再去從私服pull一下項目才開始開發。但是每次初始化工程都是一步步的造輪子,一個個依賴去安裝,新建一個個不同功能的文件夾,而每個負責人所初始化的項目目錄、以及模塊引入方式參差不齊,以至于開發中后期因每個人開發風格的不同導致git提交時總會產生各種各樣的“沖突”,也會產生后期代碼維護成本增加,所以就有必要考慮一下做一個統一的類似“腳手架”的功能了,用來給團隊開發帶來便捷的、統一的、易擴展的項目基礎。

預實現的功能

  • 公共樣式統一管理,全局sass的友好引入
  • 公共js統一管理
  • 解決vue腳手架初始化的部分問題
  • 路由形式、接口統一管理
  • store模塊化管理
  • 定義vue前端項目必用的方法
  • 修改好統一的config配置
  • 全局混入/指令的封裝

必要的依賴項

  • node-sass sass sass-resources sass-loader sass-recources-loader
  • vuex vuex-persistedstate
  • axios
  • babel-polyfill

項目目錄如下

配置公共sass

目錄assets>scss文件形式

mixin.scss內容詳見@import './icomoon.css'; //字體圖標
@import './wvue-cli.scss'; //項目公共樣式

修改utils.js引入commom.css,就不用在main.js 或其他項目中的頁面引入了

接口統一管理

js目錄下的urlConfig.js

頁面使用方式例如:

全局混入管理

全局混入主要用于項目中每個頁面或模塊都會用到的函數方法、計算屬性、過濾方法等。

文件所屬components>common>mixins>index.js

在main.js中引入

全局指令管理

全局指令主要用于各個項目中由于vue指令不能滿足需求,自定義的指令形式,在頁面編寫過程中可以帶來很多的便利。

文件所屬components>common>directive>index.js

在main.js中引入

store 模塊化管理

store模塊化管理主要是滿足不同開發人員的需求、避免使用單一store文件導致命名沖突。同時在main里定義了統一的模塊文件滿足大多數項目開發的場景需求。

文件所屬store>main.js

import Vue from 'vue'import Vuex from 'vuex'import router from '@/router'import Axios from 'axios'import createPersistedState from 'vuex-persistedstate'import baseInfo_store from './baseInfo'Vue.use(Vuex)const store = new Vuex.Store({// 用不同的模塊管理vuex存儲數據 modules: {  baseInfoStore: baseInfo_store, //userInfo模塊 }, plugins: [createPersistedState({   storage: window.sessionStorage  })]})//切換頁面一般需要的loading動畫狀態store.registerModule('pageSwitch', { state: {  isLoading: false }, mutations: {  updateLoadingStatus (state, payload) {   state.isLoading = payload.isLoading  } }})//切換路由的同時切換titlerouter.beforeEach(function (to, from, next) { if(to.meta.title){  document.title = to.meta.title } store.commit('updateLoadingStatus', {isLoading: true}) next()})router.afterEach(function (to) { store.commit('updateLoadingStatus', {isLoading: false})})//ajax請求的動畫狀態store.registerModule('ajaxSwitch', { state: {  ajaxIsLoading: false,  ajaxIsPrompt: false, }, mutations: {  ajaxStar (state) {   state.ajaxIsLoading = true  },  ajaxEnd (state) {   state.ajaxIsLoading = false  },  ajaxPromptShow (state) {   state.ajaxIsPrompt = true  },  ajaxPromptHide (state) {   state.ajaxIsPrompt = false  } }, getter : {  ajaxIsLoading: state => state.ajaxIsLoading }})//請求攔截Axios.interceptors.request.use(config => { store.commit('ajaxStar') return config;})//響應攔截Axios.interceptors.response.use(config => { //需要攔截的請求頭 return config})export default store;

在main.js引入

main.js的最終形式

解決vue-cli 初始配置的打包路徑問題

其實這個在上面文件中已經有體現了,在這里再次提及一下。

步驟1:修改config>index.js文件

將build{ }下的assetsPublicPath改為如下

步驟2:修改build>utils.js文件

找到 fallback: 'vue-style-loader',在其下加入下面這一行

結語

至此,一個基本完備的vue項目“腳手架”就完成了,以后每次初始化項目都可以按照這套方案來進行,省去了很多協作開發的交流環節,形成了能夠滿足大多數項目的目錄及文件構成形式,將此項目托管至私服每次初始化項目只需拉取這個“腳手架”便能省區不少初始化項目的時間,豈不美哉!

此“腳手架”項目已開源至github,歡迎大家提出建議和互相交流,同時也可隨意將項目拉下來進行使用。

A scaffolding based on vue.js

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇左市| 信丰县| 乃东县| 铅山县| 威远县| 宜良县| 开江县| 资兴市| 泗阳县| 罗城| 巨鹿县| 五家渠市| 水富县| 寻乌县| 合川市| 油尖旺区| 礼泉县| 汤原县| 丹寨县| 周口市| 黑水县| 新疆| 伊宁市| 南陵县| 禹州市| 呼玛县| 穆棱市| 龙口市| 南部县| 永济市| 宜都市| 鄂伦春自治旗| 湘西| 墨脱县| 兴宁市| 河北区| 安塞县| 昌黎县| 文成县| 绥德县| 庆城县|