關(guān)于VUE創(chuàng)建使用過程

從18年7月16號入職到現(xiàn)在已經(jīng)5個月多了咖摹,入職之后就一直使用vue,來這邊溫習(xí)記錄下使用的步驟顽悼。在我的理解中vue其實每個組件都是有同一個根父組件app孝赫,這個app父組件是掛在html文件上的较木,頁面的轉(zhuǎn)換只是html文件里面組件的轉(zhuǎn)換,所以形成了靜態(tài)頁面青柄。如果有什么理解誤區(qū)伐债,望各位大佬可以指點出來,不勝感激致开。

項目創(chuàng)建使用等步驟

全局安裝vue腳手架vue-cli
npm install --global vue-cli
創(chuàng)建一個基于webpack 模板的新項目(切換路徑到創(chuàng)建的文件夾下)
vue init webpack myproject (myproject項目的名稱)

之后會出現(xiàn)創(chuàng)建項目一些選擇信息vue
Project name (項目名稱,不可以大寫)
Project description (項目描述)
Author (作者)
Vue build (
vue創(chuàng)建的方式)
Install vue-router (
是否安裝路由,vue的頁面內(nèi)容的變換基本都是路由的變化,這個是必須安裝的,也可以手動在項目里面安裝, npm i vue-router)
Use ESLint to lint your code (是否使用ESLint檢測你的代碼,是一種語法規(guī)則建議使用)
Pick an EESLint preset (選擇分支風(fēng)格,我一般都是選擇第一個:standard(https://github.com/feross/standard) js的標(biāo)準(zhǔn))
Set up unit tests (是否安裝單元測試,這個我也是默認(rèn)安裝的,但是基本沒有使用過峰锁,哈哈)
Pick a test runner (選擇一個單元測試運行器,這個也是同上哈~~)
Setup e2e tests with Nightwatch (是否安裝E2E測試框架NightWatch,E2E就是End to End,即消費端對產(chǎn)品端的商業(yè)模式)
Should we run 'npm install' for you after the project has been created? (在項目創(chuàng)建后,我們需要為您運行“NPM安裝”嗎双戳?有三個選項,我選擇的是第一個npm)
我基本上創(chuàng)建的時候一路回車到底虹蒋,全部默認(rèn),感覺那個單元測試我可以省略不安裝~~~

創(chuàng)建完成之后使用WebStorm打開(我用的開發(fā)工具是webstorm)
打開之后的目錄結(jié)構(gòu)大概是這個樣子:

初始結(jié)構(gòu)

assets中一般存放靜態(tài)資源文件
components中存放些vue組件(我一般都是把導(dǎo)航欄、菜單欄魄衅、頁腳峭竣、路由主要顯示部分、和一些多處使用的組件放在里面)
router中有一個index.js文件晃虫,里面就是路由的注冊皆撩,先引入文件,然后注冊
const 組件名稱= resolve => require.ensure([], () => r(require('@/組件地址')), resolve)
{
????path:'/example', name:'example',
????meta: {
????????requireAuth: true;(這邊我基本上都是用來判斷這個路由是否需要登錄)
????},
????component:example
},

還有一種注冊方式哲银,路由的懶加載扛吞,不需要引入組件了 (這種方式還是比較不錯的雖然我用的比較少,畢竟項目文件不是很大荆责,比較推薦這種)
{
????path:'/example', name:'example',
????meta: {
????????requireAuth: true;(這邊我基本上都是用來判斷這個路由是否需要登錄)
????},
????component (resolve) {
????????require(['@/組件地址'], resolve)
????}
},

每次我都是會重新創(chuàng)建文件夾自定義我自己喜歡的目錄結(jié)構(gòu):

自定義結(jié)構(gòu)

assets文件夾里面添加了images(圖片資源),scss(scss樣式文件),temp(臨時文件,項目上線之前刪除)
components文件夾里面加了一個layout文件夾,我都是存放導(dǎo)航欄,頁腳,左側(cè)菜單欄,路有部分內(nèi)容
http只要是axios請求的文件配置封裝文件
util存放一些工具配置文件滥比,比如富文本(我一般也只用在這里了。草巡。守呜。)
variable是全部變量的統(tǒng)一處理的文件我把需要用到的全局變量全部封裝到這個文件夾下的js中了
views就是主要的路由組件了

結(jié)構(gòu)弄完了型酥,下面就需要做些配置了(main.js文件)

Element(https://element.faas.ele.me/#/zh-CN)

配合vue使用的頁面樣式我一般都是用的Element山憨,下面安裝Element(https://element.faas.ele.me/#/zh-CN)
npm i element-ui -S
安裝完成之后引入樣式和組件庫
import 'element-ui/lib/theme-chalk/index.css'
注冊
Vue.use(ElementUI)

router

如果創(chuàng)建項目的時候沒有安裝路由就需要安裝了
npm i vue-router
在創(chuàng)建vue實例的時候加上router

sass(https://www.sass.hk/)

之后在安裝一個sass,一個CSS擴展語言
安裝sass依賴包
npm install --save-dev sass-loader
npm install --save-dev node-sass
由于會使用sass的全局變量需要安裝一個依賴包
npm install --save-dev sass-resources-loader
在build文件夾下的webpack.base.conf.js的rules里面添加配置(這邊我沒有配置弥喉,也是ok的郁竟,不明所以)
{test:/\.sass$/, loaders: ['style','css','sass']}
在assets下的scss文件夾中新建index.scss文件(里面寫全局樣式)
在新建_variable.scss文件(全局變量,sass規(guī)定部分樣式引入文件名前面需要加下劃線)
在index.scss中引入_variable.scss
@import "variables";
我在gitHub上看到了一個頁面標(biāo)準(zhǔn)化文件,被我copy下來導(dǎo)入(https://github.com/necolas/normalize.css/blob/master/normalize.css)
_normalize.scss文件導(dǎo)入index.scss
@import "normalize";
在mian.js文件中引入scss全局樣式
import '@/assets/scss/index.scss'
由于樣式變量不可以在組件中直接使用由境,需要引包棚亩,覺得有點low,就查資料最后找到了方法
在build文件夾下的utils.js文件cssLoaders中加上這些代碼:

并且將下面的sass和scss替換掉:

全局變量

之后在搞一下全局變量虏杰,我一般用來存接口請求IP和端口號
在variable下創(chuàng)建index.js讥蟆,格式如下
export default{
? ? host: '',
}?

如果有其他的全局變量可以繼續(xù)往下寫
mian.js 引入
import Variablefrom './variable/index.js'
Vue.prototype.variable = Variable

Quill富文本(https://www.npmjs.com/package/vue-quill-editor)

如果需要使用富文本,我使用的是Quill
安裝依賴
npm install vue-quill-editor --save
在mian.js中引入纺阔,并且引入樣式
import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
注冊
Vue.use(VueQuillEditor)
Quill是可以自定義配置的瘸彤,我是將配置文件放到了util文件中的然后在使用的頁面引入配置,因為它自帶的圖片上傳是base64,直接入庫的話笛钝,請求頭太長质况,導(dǎo)致網(wǎng)頁十分的卡,文件上傳的處理十分非常有必要的玻靡,下面是我在上一個項目中富文本的配置

Quill富文本配置

下面的是圖片上傳處理

圖片處理
圖片處理

Distpicker地區(qū)插件(https://www.npmjs.com/package/v-distpicker)

下面是地區(qū)組件结榄,一般來說地區(qū)存在數(shù)據(jù)庫中,但是有些項目比較小所以會在前臺使用地區(qū)組件囤捻,我使用的是Distpicker
安裝
npm install v-distpicker --save
在mian.js中引入
import Distpicker from 'v-distpicker'
注冊
Vue.use(Distpicker)
Vue.component('v-distpicker', Distpicker)

axios (https://www.npmjs.com/package/axios)

接下來就是axios請求的封裝處理了
安裝
npm install? --save axios
在mian.js中引入
import axios 'axios' (axios不需要使用vue.use()臼朗,我也是不明所以然啊
到這里我都會對axios進(jìn)行二次封裝
在http文件夾中新建api.js 文件
引入axios
import axios 'axios'?
對post,get請求進(jìn)行封裝
get請求:

get請求封裝

postJson請求:

postJson請求封裝

postForm請求:

postForm請求封裝

文件請求:(這個其實不怎么用到Element有文件上傳的插件)

文件請求封裝

封裝完成了之后對它們進(jìn)行輸出(install 方法將被作為 Vue 的參數(shù)調(diào)用):

輸出

在mian.js中引入并且注冊
import axiosApi from '@/http/api.js'
Vue.use(axiosApi)
axios有兩個攔截器請求攔截器,響應(yīng)攔截器可以進(jìn)行處理
響應(yīng)攔截器:

響應(yīng)攔截器

請求攔截器:(上個項目中使用的是token)

請求攔截器

vuex (https://vuex.vuejs.org/)

由于之前的項目是使用的token我就使用了vuex
安裝
npm install vuex --save
在根目錄下面新建store文件夾视哑,再創(chuàng)建index.js文件
在index.js文件中引入
import Vuefrom 'vue'
import Vuexfrom 'vuex'

注冊 Vuex
Vue.use(Vuex)
大體如下:(期中兩個方法分別存和刪token)

vuex

在main.js中引入
import storefrom '../store'(vuex已經(jīng)在index.js文件中注冊過了老厌,所以不需要再注冊了)
再vue實例中加上store:

路由攔截

之前在路由注冊中有添加一個屬性
meta: {requireAuth: true}
用來判斷當(dāng)前路由是否需要登錄之后才可以訪問
接下來就要處理了
在main.js文件中下面添加一個路由跳轉(zhuǎn)攔截:router.beforeEach

路由跳轉(zhuǎn)攔截

因為之前項目使用的token如果頁面刷新了vuex里面的token會沒有了,這時候我們需要給他重新賦值
在router index.js里 路由注冊上面寫一個判斷:

其實token的存放一直是存放在session中的頁面刷新是不會被清除掉的黎炉,我第一次使用token的時候也是一臉懵逼枝秤,不是到如何下手,然后百度都被我用爛了慷嗜,他們都是用vuex存的淀弹,我不太清除為什么這樣存儲,可以直接從session中拿嗎庆械?又是一個不明所以然

IE兼容

但是我做過的項目都是需要兼容IE薇溃,因為Vue使用了ES6 Promise,IE瀏覽器是不支持的缭乘,所以需要用babel-polyfill轉(zhuǎn)換?
安裝
npm install --save-dev babel-polyfill
在build文件夾下webpack.config.js下的module.exports中添加:

Path問題

還有一個特別特別重要的問題沐序,項目放到服務(wù)器之前需要打包,打完包之后靜態(tài)文件路徑會有一些問題
在config文件夾下index.js文件中有兩個環(huán)境配置
build:(production 環(huán)境) dev:(dev環(huán)境)
我們放到服務(wù)器上之前都是需要build的堕绩,就是在production環(huán)境中的assetsPublicPath的配置是錯誤的需要改正策幼,想當(dāng)初我剛搞這個vue的時候搞了好久結(jié)果就在assetsPublicPath 斜杠前加一個點就ok了,好氣芭簟L亟恪!J虻唐含!

基本上就是這些了,如果我走進(jìn)了什么誤區(qū)沫浆,望有大佬可以指出捷枯,不勝感激!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末专执,一起剝皮案震驚了整個濱河市淮捆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌他炊,老刑警劉巖争剿,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痊末,居然都是意外死亡蚕苇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門凿叠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涩笤,“玉大人嚼吞,你說我怎么就攤上這事〉疟蹋” “怎么了舱禽?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恩沽。 經(jīng)常有香客問我誊稚,道長,這世上最難降的妖魔是什么罗心? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任里伯,我火速辦了婚禮,結(jié)果婚禮上渤闷,老公的妹妹穿的比我還像新娘疾瓮。我一直安慰自己,他們只是感情好飒箭,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布狼电。 她就那樣靜靜地躺著,像睡著了一般弦蹂。 火紅的嫁衣襯著肌膚如雪肩碟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天盈匾,我揣著相機與錄音腾务,去河邊找鬼毕骡。 笑死削饵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的未巫。 我是一名探鬼主播窿撬,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叙凡!你這毒婦竟也來了劈伴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤握爷,失蹤者是張志新(化名)和其女友劉穎跛璧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體新啼,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡追城,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了燥撞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片座柱。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡迷帜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出色洞,到底是詐尸還是另有隱情戏锹,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布火诸,位于F島的核電站锦针,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏置蜀。R本人自食惡果不足惜伞插,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盾碗。 院中可真熱鬧媚污,春花似錦、人聲如沸廷雅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽航缀。三九已至商架,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芥玉,已是汗流浹背蛇摸。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灿巧,地道東北人赶袄。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像抠藕,于是被迫代替她去往敵國和親饿肺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容