Re:從零開始的Vue項目搭建
- 初始的終結與結束的開始
- Nodejs項目的簡單測試
- 從零開始
- webpack開發模式
- webpack編譯打包
- 后記
初始的終結與結束的開始
最開始接觸vue
項目搭建是從vue-cli
開始,模板式操作,一鍵搞定,幾乎可以無縫進入代碼開發階段,這對新人來說很友好,馬上就能夠一邊看教程,一邊測試代碼,我當初就是這么學vue
的(順便提一下,我在學習vue
之前沒接觸過任何前端框架,連Nodejs
都沒接觸過,以前做前端的時候只會html+css/sass+js
這種形式),但是這對新人也不好,因為模板搭建的東西往往很全面,全面就意味著東西很多,至于項目是怎么運行的,那些模板生成的文件都代表什么意思,在項目中起到什么作用,等等等,對新人來說一時半會兒很難搞清除,尤其是像我這總沒接觸過nodejs
的人來說更甚。
所以在學習了一段時間的vue
之后,我決定回到最初,開始學習如何從零搭建vue
項目。
在搭建vue
項目之前先了解一下Nodejs
項目,因為vue
項目其實就是Nodejs
項目,了解Nodejs
項目不僅有利于學習了解vue
項目,并且更具有擴展性和通用性。
一個Nodejs
項目的創建過程,大致分為 1.創建項目目錄,2.初始化項目,3.安裝依賴模塊,4.進入開發過程
mkdir myproject # 創建項目目錄
cd myproject # 進入項目目錄
npm init # 初始化項目
接下來會引導你創建一個名為package.json
的文件,它是Nodejs
項目所必須的,里面記錄了項目名稱,版本,描述,關鍵詞,作者,腳本命令,生產環境,開發環境等等。關于package.json
的完整字段信息可以百度。
輸入代碼開始安裝模塊
npm install <package>
僅安裝模塊,
npm install <package> --save
安裝模塊并在生產環境dependencies
中記錄包名和版本,
npm install <package> --save-dev
安裝模塊并在開發環境devDependencies
中記錄包名和版本。
這就好比,剛剛初始化Nodejs
項目相當于干細胞,根據安裝的模塊和依賴不同,就會成為不同的項目。好,接下來,我們就在這個基礎Nodejs
項目上去搭建vue
項目
Nodejs項目的簡單測試
這里先測試一下如何在Node
中渲染html
,熟悉Node
的同學可以跳過。在項目目錄下添加一個入口文件index.html
,我們的vue
項目需要在html
中進行渲染,然后在index.html
中隨便寫的東西,方便我們看到效果,比如<h1>hello world</h1>
?
|-- build
| |-- run.js
|-- node_modlues
| |-- ...
|-- index.html
|-- package.json
在package.json
的scripts
字段中添加npm
的命令縮寫,node ./build/run.js
,這是一條node
語句,表示使用 node
運行run.js
"scripts": {"start": "node ./build/run.js"},
./build/run.js
內容
var express = require('express')
var path = require('path')
var app = express()app.get('/', function (request, response) {var root = path.resolve('.')response.sendFile( root + '/index.html')
})var server = app.listen(8080, '127.0.0.1', function () {var host = server.address().addressvar port = server.address().portconsole.log("Server running at http://%s:%s", host, port)
})
我們用到了express
模塊,這是一個很基礎,但也很重要的Nodejs
框架,先安裝npm insall express --save-dev
接下來我們使用命令npm run start
運行程序,控制臺會顯示如下信息
D:\wwwroot\myproject>npm run start> myproject@1.0.0 start D:\wwwroot\myproject
> node ./build/run.jsServer running at http://127.0.0.1:8080
是不是感覺和vue-cli
搭建的模板工程很像,然后我們去瀏覽器輸入http://127.0.0.1:8080
就能看到我們在index.html
中寫的內容了,更改內容,然后刷新頁面再看看效果。
從零開始
(從零開始的意義:大家可以放棄之前 Nodejs項目的測試
所做的更改,重新初始化一個項目,不用安裝任何模塊,一切從這里開始)
Nodejs
項目的運行大致如上,但和我們的目標還相去甚遠,要搭建vue
項目,首先得配置開發環境(即安裝模塊)。
首先是安裝 vue
和 webpack
模塊,vue
是我們項目的核心,這個沒啥說的。webpack
是JavaScript
的打包模塊,它將瀏覽器不能直接運行的語言打包處理成適合的格式以供瀏覽器使用。因為vue
是發布所需要的,所以使用以下命令
npm install vue --save
npm install webpack --save-dev
但是光有這兩個模塊是不夠的,
webpack
4.x 之后將 cli 單獨拎了出來,所以還需要webpack-cli
模塊,- 在
vue
項目中,我們使用了.vue
單文件形式,要加載這些單文件我們需要vue-loader
模塊, - 為了轉化
ES6
高級語法,所以需要babel-loader
@babel/core
@babel/preset-env
模塊 - 需要加載
css
,需要css-loader
模塊,(如果要使用sass
,那么還需要node-sass
和sass-loader
) - 需要引用圖片或者其他資源文件,則需要
url-loader
或file-loader
- 每次更新代碼后,我們都需要重新編譯以便查看效果,這樣會很麻煩,使用
webpack
提供的開發工具webpack-dev-server
可以幫助我們在代碼發生變化后自動編譯代碼 - 最后我們還需要渲染
html
的插件html-webpack-plugin
綜上,我們還需要安裝如下模塊
npm install vue-loader --save-dev
npm install webpack-cli webpack-dev-server --save-dev
npm install babel-loader @babel/core @babel/preset-env --save-dev
npm install css-loader --save-dev
npm install url-loader --save-dev
npm install html-webpack-plugin --save-dev
webpack開發模式
安裝好模塊后,回顧Nodejs
項目,我們現在需要添加npm
命令縮寫,webpack
配置文件
在package.json
的scripts
字段中添加npm
的命令,(使用webpack-dev-server
運行)
"scripts": {"dev": "webpack-dev-server --inline --progress --config webpack.config.js"},
在項目目錄下新建webpack
配置文件webpack.config.js
,配置文件代碼
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const VueLoaderPlugin = require('vue-loader/lib/plugin')module.exports = {// 配置 webopack 的入口 / 出口文件entry: {app: './src/main.js'},output: {filename: 'bundle.js',path: path.join(__dirname, 'dist')},// 配置 webpack 的服務器信息devServer: {// 默認配置為http://localhost:8080},// 定義 webpack 的模式mode: 'development',// 配置 loader 載入規則module: {rules: [{test: /\.vue$/,loader: 'vue-loader'},{test: /\.js$/,loader: 'babel-loader'},{test: /\.css$/,use: ['vue-style-loader','css-loader']},{test: /\.(jpg|png|bmp)$/,use : 'url-loader'}]},// 添加解析文件后綴,添加后在引入文件時可以省略后綴只寫文件名resolve: {extensions: ['*', '.js', '.vue', '.json']},// 配置插件項plugins: [// vue-loader 15.x 之后,必須引入這個插件才能正常工作new VueLoaderPlugin(),// 用來指定渲染的模板文件new HtmlWebpackPlugin({template: './index.html'})]
}
配置好webpack
后我們需要添加其他文件內容,項目結構如下
|-- node_modlues
| |-- ...
|-- src
| |-- App.vue
| |-- main.js
|-- index.html
|-- package.json
|-- webpack.config.js
./index.html
內容
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue</title>
</head>
<body><div id="app"></div>
</body>
</html>
./src/main.js
內容
import Vue from 'vue'
import App from './App'new Vue({el: '#app',render: h => h(App)
})
./src/App.vue
內容
<template><div id="app">Vue App</div>
</template><script>
export default {name: "App"
}
</script><style>
#app{color: gray;
}
</style>
輸入命令npm run dev
運行程序,就可以看到效果啦~~~,然后修改代碼測試一下vue,看看效果
webpack編譯打包
到這一步其實就相對容易了,webpack
本身就是用于編譯打包,webpack
的配置文件也寫好了,只需要使用webpack
打包即可
添加build
命令,然后使用npm run build
命令編譯打包
"scripts": {"dev": "webpack-dev-server --inline --progress --config webpack.config.js","build": "webpack --config webpack.config.js"},
打包完成后,會在項目目錄下生成/dist
文件夾,所有編譯好的文件都在該目錄下
后記
寫到這里,一個基礎的簡單的vue
項目其實就已經搭建好了,整個過程與其說是 如何從零搭建Vue項目 ,不如說是 如何使用webpack搭建項目 ,所以在今后的學習中不妨分成兩個板塊去學習
- 使用
webpack
進行項目搭建,了解webpack
的配置與命令,推薦閱讀 webpack 官方中文文檔 - 如何配置
vue-loader
,推薦閱讀 Vue Loader 官方中文文檔
了解熟悉 webpack
可以讓我們快速搭建前端框架項目或是自定義項目