第2講 改造由vue-cli 3.x創(chuàng)建的模板項目

這個簡單的模板文件此時還不能滿足實際的開發(fā)需求仿野,接下來就是對其進(jìn)行實際的改造以便于我們開發(fā)vue項目,首先說明卡啰,下文中所有的修改基本上是在src這個主文件夾里進(jìn)行

  1. 在src里新增api文件夾静稻,項目里ajax請求都寫在這里面,以便于管理
  2. 在src/assets文件夾匈辱,新增img文件夾振湾,新增font文件夾
  3. 在src里新增directive文件夾,用來放vue的自定義指令
  4. 在src里新增lib文件夾亡脸,并且新增src/lib/util.js(存放一些與業(yè)務(wù)結(jié)合的工具方法)押搪,新增src/lib/tool.js(存放一些與業(yè)務(wù)無關(guān)的工具方法)

舉個簡單的例子

// util.js

// tool.js
/*
 * 將空數(shù)據(jù)顯示為--
 * @params val {all} 需要處理的值
 * @params unit {String} 單位
 * @return {String} 處理后的值
 * @author 宗強(qiáng) 2020/09/09
 */
export function handleEmpty (val, unit) {
    if (val !== 0) {
        if (typeof val === 'undefined' || val === null || val === '' || val === 'null' || val === '--') {
            return '--'
        }
    }
    if (unit) {
        return val + unit
    } else {
        return val
    }
}

在某一個頁面使用這個函數(shù)

import { handleEmpty } from '@/lib/tool'
  1. 在src里新增config文件夾佛南,項目里的配置都可以寫在這里

舉個例子,比如項目里有很多地方嵌言,需要對電信,移動及穗,聯(lián)通摧茴,這三個運營商進(jìn)行顏色區(qū)別,那我就可以在config文件夾里新增color.js文件

// color.js
export default {
    '電信': 'red',
    '移動': 'yellow',
    '聯(lián)通': 'green'
}

在某一個頁面使用這個配置埂陆,只需要引入即可

import colorConfig from '@/config/color'
  1. 在src里新增errorpage文件夾苛白,當(dāng)出現(xiàn)路由出錯,服務(wù)器出錯焚虱,瀏覽器兼容等問題的時候购裙,能夠跳轉(zhuǎn)到相應(yīng)的頁面提示用戶

具體實現(xiàn)方法如下:在src/errorpage文件夾下新增4個文件

1. browser_check.vue // 瀏覽器兼容
2. extra_401_option.vue // 未登錄或登錄超時
3. extra_404_option.vue // 訪問的頁面未找到
4. extra_500_option.vue // 訪問接口出錯

具體這幾個頁面里的內(nèi)容,代碼已上傳至git鹃栽,可以直接找到src/errorpage這個文件夾查看vue-base-frame

現(xiàn)在4個頁面有了躏率,接下來就是配置這幾個頁面的路由了

找到項目里,src/router這個文件夾新增error-router.js文件民鼓,配置路由如下:

// router/error-router.js
export default [
    {
        path: '/compatible',
        name: 'compatible',
        meta: { title: '兼容'},
        component: resolve => require(['@/errorpage/browser_check.vue'], resolve),
    },
    {
        path: '/notLogin',
        name: 'notLogin',
        meta: { title: '未登錄或超時'},
        component: resolve => require(['@/errorpage/extra_401_option.vue'], resolve),
    },
    {
        path: '/notFound',
        name: '404',
        meta: { title: '頁面不存在'},
        component: resolve => require(['@/errorpage/extra_404_option.vue'], resolve),
    },
    {
        path: '/abnormal',
        name: 'abnormal',
        meta: { title: '服務(wù)器異常'},
        component: resolve => require(['@/errorpage/extra_500_option.vue'], resolve),
    },
]

修改router/index.js文件

// router/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import errorRoutes from './error-router'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
  },
  ...errorRoutes
]

const router = new VueRouter({
  routes
})

const whitelist = ['login', 'error401', 'error500', 'notFound', 'compatible', 'notLogin', '404', 'abnormal']

let app;
router.beforeEach((to, from, next) => {
    // const isLogin = !!sessionStorage.getItem('accessToken');
    const isLogin = true

    if (isLogin) {
        if (to.name === 'login') {
            next({
                name: 'home'
            });
        } else {
            next()
        }
    } else {
        if (whitelist.indexOf(to.name) !== -1) {
            next()
        } else {
            next({
                name: 'login'
            })
        }
    }
});


router.afterEach((to, from, next) => {
    app = document.querySelector('.app-content-inner')
    app && app.scrollTo(0, 0)
})

export default router

然后npm run serve啟動項目薇芝,瀏覽器輸入啟動地址,比如:http://localhost:4000/#/abnormal丰嘉,就可以看到新增的幾個頁面了

  1. 在src/store文件夾下新增幾個文件(關(guān)于vue的狀態(tài)管理夯到,我會單獨寫一篇文章放在vue理論里面講,搞清楚vuex到低是什么以及怎么用)
state.js
mutations.js
actions.js

然后在index.js里面引入這幾個文件

// index.js
import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import mutations from './mutations'
import actions from './actions'

Vue.use(Vuex)

export default new Vuex.Store({
  state,
  mutations,
  actions,
  modules: {
  }
})

如果你的項目比較負(fù)載有可能需要對state進(jìn)行模塊化管理饮亏,這個時候就需要在src/store下新增module文件

舉個例子

在src/store/module下新增user.js文件耍贾,內(nèi)容如下:

// user.js
const state = {}
const mutations = {}
const actions = {}

export default {
    state,
    mutations,
    actions
}

然后在index.js里面引入這個文件

import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import mutations from './mutations'
import actions from './actions'
import user from './module/user'

Vue.use(Vuex)

export default new Vuex.Store({
  state,
  mutations,
  actions,
  modules: {
    user
  }
})
  1. 在src下新增mock,在我們開發(fā)的時候可以用來模擬數(shù)據(jù)用路幸,并新增src/mock/index.js文件荐开,在里面添加兩行代碼:
import Mock from 'mockjs'


export default Mock

這里需要在項目里安裝mockjs依賴,cmd執(zhí)行如下命令:

cnpm/npm install mockjs -D // 此依賴只作為開發(fā)環(huán)境使用劝赔,所以后綴不是--save 而是-D誓焦,而且打包的時候這個依賴不會打包進(jìn)去

OK,完成上述步驟着帽,一個真正滿足開發(fā)需求的vue項目框架已經(jīng)搭建完成杂伟,接下里的文章,我都會在這個框架之上修修補(bǔ)補(bǔ)仍翰,來搭建起一個功能更加豐富的項目

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赫粥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子予借,更是在濱河造成了極大的恐慌越平,老刑警劉巖频蛔,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秦叛,居然都是意外死亡晦溪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門挣跋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來三圆,“玉大人,你說我怎么就攤上這事避咆≈廴猓” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵查库,是天一觀的道長路媚。 經(jīng)常有香客問我,道長樊销,這世上最難降的妖魔是什么整慎? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮围苫,結(jié)果婚禮上院领,老公的妹妹穿的比我還像新娘。我一直安慰自己够吩,他們只是感情好比然,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著周循,像睡著了一般强法。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上湾笛,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天饮怯,我揣著相機(jī)與錄音,去河邊找鬼嚎研。 笑死蓖墅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的临扮。 我是一名探鬼主播论矾,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杆勇!你這毒婦竟也來了贪壳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蚜退,失蹤者是張志新(化名)和其女友劉穎闰靴,沒想到半個月后彪笼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蚂且,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年配猫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杏死。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡章姓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出识埋,到底是詐尸還是另有隱情,我是刑警寧澤零渐,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布窒舟,位于F島的核電站,受9級特大地震影響诵盼,放射性物質(zhì)發(fā)生泄漏惠豺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一风宁、第九天 我趴在偏房一處隱蔽的房頂上張望洁墙。 院中可真熱鬧,春花似錦戒财、人聲如沸热监。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孝扛。三九已至,卻和暖如春幽崩,著一層夾襖步出監(jiān)牢的瞬間苦始,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工慌申, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留陌选,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓蹄溉,卻偏偏與公主長得像咨油,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子柒爵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348