基于vue-cli快速構建

內容來源基于vue-cli快速構建,感謝玄木大神(僅個人記錄用)

Vue是什么,是一套構建用戶界面的漸進式框架

Vue兩大核心思想,組件化和數據驅動

Vue-cli是快速構建這個單頁應用的腳手架

1.使用npm全局安裝vue-cli(前提是你已經安裝了nodejs,否則你連npm都用不了),在cmd中輸入一下命令

npm install --global vue-cli

同時在C:\Users\Andminster\AppData\Roaming\npm目錄下為會生成幾個文件

npm自動安裝

安裝完成后,創建自己的工作空間

使用命令創建項目

vue init webpack vuetest

命令輸入后,會進入安裝階段,需要用戶輸入一些信息



基本配置完成

已經說明vue-cli創建了vuetest,接下來要做的命令已經給出,那就按照提示來,先看一下,項目的目錄


新建的項目目錄

bulid? 里面是一些操作文件,使用npm run *? ? 時其實執行的就是這里的文件

config 配置文件,執行文件需要的配置信息

src? 資源文件,所有的組件以及所用的圖片都是在這個放著的簡單看一下這個文件夾下都放了那些東西

assets? 資源文件夾,放圖片之類的資源,components? 組件文件夾,寫的所有組件都放在這個文件夾下,現在有一個寫好的組件已經放到里面了,router? 路由文件夾,這個決定了也面的跳轉規則,App.vue應用組件,所有自己寫的組件,都是在這個組件之上運行了,main.js? ? webpack入口文件,webpack四大特性entry入口、output輸出,loader加載器,plugins插件,可以再項目中build\webpack.base.conf.js第12行看到這個入口文件是哪個。

切換到項目目錄

npm install

安裝完成后,目錄中會多出來一個node_modules文件夾,這里放的就是所有依賴的模


node-nodules

項目構建完成,現在我們輸入

npm run dev

執行npm run dev命令,程序會先找到根目錄下的package.json文件,找到文件中的scripts項,找到對應的dev命令,執行dev對應的命令,這里我們也可以不用npm run dev 直接輸入dev后面的命令效果是一樣的。

執行dev命令,按照dev命令中的路徑找到對應的build下dev-server.js文件,之后按照腳本的程序執行。

下面來大概屢一下程序的執行流程

執行npm run dev命令,程序會先找到根目錄下的package.json文件,找到文件中的scripts項,找到對應的dev命令,執行dev對應的命令,這里我們也可以不用npm run dev 直接輸入dev后面的命令效果是一樣的,這樣做的目的是因為有時命令會很長有很難記住,這種方式會非常的方便,具體只用可以參考阮一峰老師的npm script使用指南

執行dev命令,按照dev命令中的路徑找到對應的build下dev-server.js文件,之后按照腳本的程序執行,首先引入版本檢測文件check-versions,使用的機制可學習一下阮一峰老師的require() 源碼解讀 ,接下來引入配置文件,process.env.NODE_ENV獲取環境變量,也就是判斷當前運行的是測試環視開發環境,可是使用console.log(process.env.NODE_ENV)將獲取到的值打印到cmd中,可以看到是值是config\dev.env.js第五行定義的值“development”,很顯然是開發模式,接下來就是引入一些模塊,在第13行中,根據環境變量來判斷我們要引入哪個執行文件,顯然是當前目錄下的webpack.dev.conf文件,先不看這個文件,下來是端口號,這個比較關心一些,畢竟端口號不能一直是8080端口吧,要經常修改這個端口號的。端口號又是判斷的,并且也用到了換將變量了,這一次我門將process.env、process.env.PORT、config.dev.port都打印出來,看看里面都什么,(這里要說明一下,當我們直接將打印代碼寫到獲取端口號下面是,剛運行時有,自動打開頁面時被刷新了,還沒來得及看呢,不過仔細一點,就會發現它自己也打印了一句話“Listening at http://localhost:8080”,我在文件中71行找到了打印這句話的代碼,好的,那我就把打印寫到這了),看看輸出什么呢,內容相當的多,我就不貼代碼了,主要看一下,判斷的兩個端口號是多少

process.env.PORT >>> undefined

config.dev.port >>> 8080

很顯然,當前所用的端口號是配置文件中的端口號了,但是看一下配置文件中,并沒有dev或dev.port文件啊,可一下將config中的所有文件都看一遍,看哪里有8080的代碼,文件不多,代碼不成,很快就能找見的。很快就在index.js文件下找到了,原來這塊的dev只的并不是文件,而是index.js中的dev對象,并且port取得是的dev對象中port的值,端口號就在這里修改,這里牽扯的內容較多,就不多說了(這里說個小技巧,當找不見某個變量時,優先從index、main之類頻繁使用字樣的文件中查找,因為這是一種習慣吧)。好了,這個文件的內容較多,不全部說了,看一下注釋大概知道是什么意思,后續另寫篇博客對這些文件和代碼統一說明。

下面簡單看一下webpack.dev.conf文件,主要看到var baseConfig = require('./webpack.base.conf'),除了webpack.base.conf本身以外,其余三個webpack配置文件都引入了這個文件,從字面就可以看出,這是webpack的基礎配置,這些文件就不過多說明了。

接下來就看一下webpack.base.conf文件,這是核心文件,必須執行的文件,這里可以看到entry和output,這就是入口和輸出路徑,在入口處看到了./src/main.js,這就找到了界面的入口處了。

在main.js中可以看到創建了一個vue實例,并加載了模板組件App.vue,在再App.vue組件中看到模板加入來了一個圖片和一個自定義的router-view標簽,這個標簽是在vue-router模塊中定義的,因為在main.js創建vue實例時已經添加了router,這里可以直接使用,router-view標簽里的內容可以通過src\router\index.js中查看,在第三行看到import Hello from 'components/Hello',引入了components下的Hello文件,并且在routes使用到了這個組件,這就是router-view標簽加載(渲染)的內容,在Hello.vue文件中看到了瀏覽器顯示的出logo一外的算有元素,界面上顯示的所有內容都找到了,在通過output輸出到界面上整個過程就執行完了。

在說一下打包,因為不可能將這個項目就這樣部署上去,需要將頁面打包,打包命令為

npm run build


打包

打包完成后,會在根目錄下生成一個dist文件夾,這就是最后的成品頁面,在打包好的最底下為們會看到一個黃色的警告


警告

它提示提示:建立文件是放在一個HTTP服務器。打開index.html文件:/ /不工作。當直接使用瀏覽器打開文件時,瀏覽器控制臺會報錯


報錯

很多資源都加載失敗,仔細看一下路徑,絕對路徑,F盤下哪有static文件夾,那就要將打包的路徑改為相對路徑,這個根據build命令一路跟蹤,到config\index.js文件中的build對象,將assetsPublicPath中的“/”,改為“./”即可,就在前面加個點就可以了,并在build\build.js將這兩句的提示信息刪掉或注釋掉,再打包直接用瀏覽器直接運行就好了。


打包好的文件

index.html就是單頁應用的頁面,static文件夾下的兩個文件夾是什么,都知道,就不多說。這里的文件名和文件路徑都是可以通過配置文件修改的,具體可以按照命令的執行看一下。

另外注意下,在進行頁面調試時,請用Chrome瀏覽器,因為要使用到vue-tool擴展程序,這個擴展程序,自己去谷歌商店下載,這個絕對要科學上網的。打開之后可以看到


頁面

右上角有個vue小logo,表示我們已經安裝vue-tool擴展工具,并且啟用了,F12打開調試工具,會多一個Vue選項,沒有看到的話點擊最后面的“>>”按鈕,就可以看到所有的功能了,要是還是沒有,就重啟一下瀏覽器。在這里看到組件的層級結構。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容