Vue項(xiàng)目構(gòu)建

一.初始化簡單demo

1.首先全局安裝vue-cli:

????$npm install -g vue-cli

2.使用vue-cli初始化項(xiàng)目,初始化項(xiàng)目時vue-cli官方(https://www.npmjs.com/package/vue-cli)已經(jīng)給提供了幾種模板供大家選擇,一般就用webpack

????$vue init ?webpack myProject

3.上一步執(zhí)行完畢,進(jìn)入到項(xiàng)目里:

????cd myProject

4.然后安裝項(xiàng)目依賴的包,也就是在package.json文件里處在"devDependencies"下的包

????$npm install

5.再安裝生產(chǎn)環(huán)境下需要用到的包,也就是在package.json文件里處在"dependencies"下的包

????$npm install? xxx (如果同時安裝多個包,中間用空格分開)

例如:

? ???$npm install? vuex?axios (同時安裝vuex和axios)

6.就緊接著再運(yùn)行,這一步依賴于package.json文件里"scripts"下的內(nèi)容

????$npm run dev?

7.就會看到瀏覽器里面自動打開一個頁面本地頁面 localhost:8080

此時一個簡單的vue demo已經(jīng)搭建成功了!

二.搭建完整的項(xiàng)目

1.路由

如果你構(gòu)建的是系統(tǒng)類項(xiàng)目,有上百個路由,這樣的話當(dāng)你用webpack hot進(jìn)行代碼熱更新的時候,速度就會超級慢,此時解決方法就是讓他在開發(fā)環(huán)境下不要懶加載,在生產(chǎn)環(huán)境下再進(jìn)行懶加載。

我們首先要定義一個變量

const _import = require('./_import_' + process.env.NODE_ENV);

process.env是讀取系統(tǒng)環(huán)境變量的,比如你在啟動服務(wù)的時候,設(shè)置環(huán)境變量為production或者development,那么在程序里面就可以通過process.env.NODE_ENV獲取。此時你就需要再寫兩個文件(注意文件的名稱命名)分別導(dǎo)出不同環(huán)境下的文件目錄如:

*_production.js:? ?module.exports = file => () => import('@/pages/' + file + '.vue')

*_develope.js:? ?module.exports = file =>? import('@/pages/' + file + '.vue')

import文件

然后將組件路徑定義為:

{path:'/app/customerSource',component:_import('customerSource')},

那么又是怎么設(shè)置環(huán)境變量為production或者development值的呢,是在配置文件index.js下

config/index.js

2.權(quán)限控制

main.js

這里使用了router.beforeEach注冊一個全局的before鉤子,來在導(dǎo)航觸發(fā)之前判斷是否有權(quán)限進(jìn)入改導(dǎo)航頁面。其中的“token”是用戶登錄成功,有服務(wù)器端返回的標(biāo)識,如果它存在,則證明用戶已經(jīng)登錄,所以

1.當(dāng)其再訪問登錄頁面(to.path === '/login')時,可直接重定向到首頁。

2.當(dāng)其訪問其他路由時,需要判斷用戶是否具有訪問這些路由的權(quán)限,首先將用戶所有的權(quán)限轉(zhuǎn)換城路由掛載到router上,接著當(dāng)訪問路由上未掛載的頁面時便會定向到404頁面,訪問掛載上的頁面時,則會正常跳轉(zhuǎn)。

3.設(shè)置白名單是避免一些頁面浪費(fèi)時間做重定向,比如404,login.

4.注意:這里還有一個小hack的地方,就是router.addRoutes之后的next()可能會失效,因?yàn)榭赡躰ext()的時候路由并沒有完全add完成,我們簡單的通過next(to)巧妙的避開這個問題

相關(guān)參考:http://www.itdecent.cn/p/87a4fe7bf0b1

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容