亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

使用webpack搭建vue項目實現腳手架功能

2024-05-06 16:49:07
字體:
來源:轉載
供稿:網友

本文基于node.js開發環境,安裝完node之后新建項目,通過webpack配置,實現vue-cli腳手架功能

對于剛剛接觸編程的人來說,最難的可能并不是學習一種新語法或者框架,而是編程思維,這種思維在調試的時候顯得尤為重要,擁有良好的編程習慣和思維能力可以大幅度提高調試效率。而編程思維的培養往往需要經驗的積累,只有把底層原理一遍遍地思考之后,才會有更深入的理解,這也是vue官方文檔中不建議vue初學者直接使用vue-cli的原因之一。

所以今天特意一步步通過webpack配置,實現與vue-cli相同的效果,希望大家能有所收獲。

1. 創建一個vue項目

使用命令行mkdir vuedeom 或者直接新建一個vuedemo空文件夾,然后命令行cd vuedemo,使用npm init -y初始化,此時你會看到文件夾多了一個package.json的文件,內容大致如下:

{ "name": "vuedemo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo /"Error: no test specified/" && exit 1" }, "keywords": [], "author": "", "license": "ISC"}

2. 引入webpack

通過npm加載webpack,當然如果速度慢的話你也可以使用淘寶鏡像,npm install -g cnpm –registry=https://registry.npm.taobao.org,然后輸入命令:cnpm install webpack --save-dev

接下來我們在項目根目錄創建一個src文件,有一個main.js,再創建一個webpack.config.js,最后修改package.json的腳本

const path = require('path') //引入node內置模塊pathmodule.exports ={ entry:'./src/main.js',  // 入口文件,把src下的main.js編譯到出口文件 output:{     //出口文件  path:path.resolve(__dirname,'dist'), //出口路徑和目錄  filename:"demo.js"      //編譯后的名稱 }}
//package.json{ "name": "vuedemo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "build":"webpack" //當使用npm run build的時候就會執行webpack,按照提示安裝webpack-cli }, "keywords": [], "author": "", "license": "ISC"}

3. babel編譯

雖然ES6語法已經廣泛普及,但各個瀏覽器還不是特別兼容,為了避免出錯我們需要把ES6轉成ES5,使用babel進行編譯

npm install --save-dev babel-core babel-loader

加載完成之后,在webpack.config.js配置

const path = require('path')module.exports ={ entry:'./src/main.js', output:{  path:path.resolve(__dirname,'dist'),  filename:"demo.js" }, module:{  rules:[ //遍歷規則   {    test: //.js$/, //匹配以js結尾的文件    loader:"babel-loader", // 使用babel-loader編譯    exclude: /node_modules/ //node_module里面的內容不遍歷   }  ] }}

我測試的時候出現了這樣的錯誤,如果有相同情況的可以參考下:

Error: Cannot find module '@babel/core'
 babel-loader@8 requires Babel 7.x (the package '@babel/core'). If you'd like to use Babel 6.x ('babel-core'), you should install 'babel-loader@7'.

這是因為版本之間的不兼容,按照上面的要求,你可以安裝低版本的babel-loader@7

也有可能webpack會發出這樣的警告:

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.

你需要給腳本配置一個環境,一般build我們會用生產環境webpack --mode production,而dev會使用生產環境webpack --mode development (這個下面會講)

另外,有時候我們可能會遇到不能識別webpack命令,原因未知,不過重新安裝一次就可以了...

接下來需要讓babel-loader翻譯官具有翻譯的功能:

npm install babel-preset-es2015 --save-dev

并且新建一個.babelrc的文件,里面新建

{ "presets":["es2015"] }

如果需要轉譯ES7語法,你還需要安裝

npm install babel-preset-stage-0 --save-dev

同樣在.babelrc添加

{ "presets":["es2015"."stage-0"]}

每次修改配置之后都要重新編譯:npm run build

4. 解析樣式

上面我們實現了vue引入和es6以及es7語法轉譯,現在我們來解析樣式,需要安裝兩個包

npm install css-loader style-loader --save-dev

css-loader將css解析成模塊,style-loader將解析的內容插入到style標簽內

別忘了在配置里webpack.config.json添加規則

rules:[{test://.css$/,use:['style-loader','css-loader']}]

但是大多數時候,我們在vue中會使用樣式預處理語言,比如sass、less、stylus,同樣地我們需要安裝對應的包,添加對應的規則

npm install less less-loader --save-devrules:[ {test://.less$/,use:['style-loader','css-loader','less-loader']}]

5. 解析圖片

圖片是大多數項目不可獲取的部分,怎樣解析圖片呢?和解析樣式步驟差不多,我們需要先安裝包再添加規則

npm install file-loader url-loader --save-dev
rules:[{test://.(jpg|png|gif)$/,use:'url-loader?limit=8192'},{test://.(eot|svg|woff|woff2|wtf)$/,use:'url-loader'}]

limit表示轉化base64只在8192字節一下轉化,其他情況輸出圖片

6. 解析html

我們希望build之后能有一個html文件,能直接看到編譯之后的效果

這時就需要一個插件,插件的作用是以我們自己的html為模板將打包后的結果,自動引入到html中產出到dist目錄下

npm install html-webpack-plugin --save-dev

在webpack.config.js引入這個插件

let HtmlWebpackPlugin = require('html-webpack-plugin')module.exports = { ....省略 plugins:[new HtmlWebpackPlugin({ //自動插入到dist目錄中  template:'./index.html' //使用模板  filename:'login.html'   //產出名稱(一般不寫) })]}

build之后你就可以看到dis下有一個index.html文件

 7. 開發環境

一個項目創建分為開發環境和生產環境(上線),那么在開發的時候每次都需要build很不方便,而且build之后相當于最終的代碼,不能隨意更改,我們需要把這些內容都放到內存中,通過npm run dev打開

npm install webpack-dev-server --save-dev

這里邊內置了服務,可以幫我們啟動一個端口號,當代碼更新時,自動在內存中打包,代碼有變化就重新執行

并且在package.json添加一個新腳本:"dev":"webpack-dev-server --mode development"

一般webpack-dev-server會內置一個端口,通過這個端口就能查看編譯的內容了,比如我的端口號:http://localhost:8080

8. 配置vue

上面我們已經實現了基本的webpack配置,完成了html、css、less、圖片、js等文件的解析,但我們最終想要的適合vue-cli一樣的效果,這就要求我們還要對vue語法進行解析,如果你在main.js引入vue模塊,使用vue時,你會發現控制臺打印這樣的錯誤

vue.runtime.esm.js:620 [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

這是因為默認的vue引用的是vue.runtime.common.js,不能編譯模板,你可以在引入vue的時候直接import Vue from 'vue/dist/vue'

另外一種辦法是,你可以使用render函數,注意render()要有返回值

但是不管是改變vue引用js還是使用render函數都是不方便的,我們更希望頁面組件能以.vue文件加載到html文件中

我們可以通過安裝vue-loader(解析.vue文件)和vue-template-compiler(解析template模板)實現

npm install vue-loader vue-template-compiler --save-dev

之后我們在main.js引入App.vue模塊,然后在render()引用:render:(h)=>h(App)

最后

到這里我們就實現了和vue-cli初始化出來的vue項目一樣的效果,其實整個過程并不算太難,不過一步步實現還是很有幫助,vue初學者可以動手試試。當然,文章可能會有我疏忽的地方,有問題隨時聯系我呀~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲久久久久久久久久| 欧美大学生性色视频| 一区二区在线视频播放| 国产亚洲美女久久| 日韩欧美成人网| 久热精品视频在线| 国产在线观看一区二区三区| 亚洲欧美综合v| 国产精品第一第二| 北条麻妃一区二区在线观看| 日韩在线视频免费观看| 久久久久久久久久av| 久久好看免费视频| 91精品国产综合久久香蕉922| 欧美成人精品h版在线观看| 日韩高清电影免费观看完整版| 国产精品久久久久久av下载红粉| 精品视频在线播放| 国产精品日日摸夜夜添夜夜av| 亚洲爱爱爱爱爱| 中文字幕日韩在线播放| 欧美精品在线网站| 精品久久久国产精品999| 国产一区二区美女视频| 国产精品丝袜一区二区三区| 欧美日韩在线第一页| 国产精品1区2区在线观看| 欧美亚洲成人xxx| 热久久免费视频精品| 综合网中文字幕| 欧美巨猛xxxx猛交黑人97人| 亚洲日本中文字幕免费在线不卡| 欧美最猛性xxxxx亚洲精品| 国产精品av免费在线观看| 国产日韩欧美综合| 成人网在线免费观看| 国产日韩欧美电影在线观看| 欧美精品videos另类日本| 国产精品网红福利| 色中色综合影院手机版在线观看| 亚洲精品久久久久国产| 中文字幕不卡在线视频极品| 国产精品久久久久久久av大片| 亚洲国产精品悠悠久久琪琪| 激情亚洲一区二区三区四区| 亚洲2020天天堂在线观看| 亚洲最新在线视频| 欧美激情国产日韩精品一区18| 国产视频亚洲视频| 韩国精品美女www爽爽爽视频| 亚洲激情 国产| 精品无人区太爽高潮在线播放| 亚洲视频视频在线| 欧美日韩一区二区三区| 日韩暖暖在线视频| 久久久999精品视频| 精品少妇v888av| 国产精品福利在线观看| 亚洲永久免费观看| 欧美日韩成人在线观看| 亚洲成人网av| 亚洲精品视频中文字幕| 91在线视频导航| 国产一区二区丝袜| 日本一区二区不卡| 中文字幕日韩高清| 最好看的2019的中文字幕视频| 欧美日韩在线视频一区| 91免费福利视频| 欧美日韩国产在线| 久久久人成影片一区二区三区| 久久精品男人天堂| 日韩美女视频免费在线观看| 伊人一区二区三区久久精品| 欧美最猛黑人xxxx黑人猛叫黄| 欧美高清自拍一区| 国产精品美女av| 久久久电影免费观看完整版| 日韩av不卡电影| 亚洲人成自拍网站| 91精品久久久久久久久久久久久| 亚洲va久久久噜噜噜久久天堂| 国产精品美女www| 日韩欧美国产黄色| 北条麻妃一区二区三区中文字幕| 欧美自拍大量在线观看| 欧美日韩国产在线播放| 欧美在线不卡区| 高清欧美性猛交xxxx黑人猛交| 最新69国产成人精品视频免费| 国产精品久久久久999| 欧美日韩中国免费专区在线看| 日韩经典中文字幕| 国产精品香蕉在线观看| 亚洲第一色中文字幕| 久久精品国产一区二区三区| 精品久久久视频| 亚洲一区中文字幕在线观看| 亚洲福利小视频| 亚洲高清色综合| 国产精品久久久久久婷婷天堂| 上原亚衣av一区二区三区| 国产91久久婷婷一区二区| 国产欧美久久一区二区| 性色av一区二区咪爱| 日韩在线观看网站| 欧美日韩成人在线视频| 欧美专区在线播放| 97在线视频观看| 韩日精品中文字幕| 久久久久久久久国产精品| 91sa在线看| 成人黄色av播放免费| 九九热视频这里只有精品| 亚洲欧美日韩精品久久| 日韩欧美国产成人| 国产成人精品一区二区| 国产精品揄拍500视频| 欧美理论片在线观看| 国产视频精品一区二区三区| 8x拔播拔播x8国产精品| 欧美极品欧美精品欧美视频| 久久九九全国免费精品观看| 亚洲国产精品一区二区久| 国产精品欧美激情在线播放| 97在线视频免费观看| 激情av一区二区| 国产日本欧美一区二区三区| 日韩成人在线视频网站| 疯狂做受xxxx欧美肥白少妇| 亚洲第一男人av| 欧美野外猛男的大粗鳮| 91精品国产91久久久久久最新| 韩国美女主播一区| 久久综合色影院| 国产精品中文字幕在线| 九九久久久久久久久激情| 美女福利视频一区| 国模精品视频一区二区| 国产综合在线看| 亚洲最新av在线| 国产成人97精品免费看片| 亚洲欧美在线x视频| 成人黄色中文字幕| 精品国模在线视频| 色噜噜狠狠狠综合曰曰曰| 亚洲男人7777| 久久av.com| 亚洲人成亚洲人成在线观看| 青青久久av北条麻妃黑人| 国产精品成人一区| 91福利视频在线观看| 最近2019年中文视频免费在线观看| 亚洲色图18p| 国产成人亚洲综合91| 九九热最新视频//这里只有精品| 4444欧美成人kkkk| 欧美麻豆久久久久久中文| 一区国产精品视频| 91久久精品国产91久久性色| 成人免费激情视频| 欧美在线观看网站| 97视频在线观看视频免费视频| 最新国产精品拍自在线播放|