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

首頁 > 開發 > JS > 正文

webpack4手動搭建Vue開發環境實現todoList項目的方法

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

前言

平常在工作開發中,為了效率我們通常都會直接使用Vue-cli腳手架去搭建Vue開發環境,確實這種工具是節省了我們不少時間,但是你有沒有想過Vue開發環境是如何搭建起來的?還有如果是你自己動手去搭建,能順利搭建起來嗎?

基于這些想法,我就搗鼓了一下webpack4,并且弄下來了這個小項目,感覺一個小項目下來收貨還是挺大的,所以就寫一遍文章,分享心得,哈哈!!

基于個人的時間精力問題,把本項目教程分為兩部分:

  • webpack4手動搭建Vue開發環境 (本篇文章)
  •  手動搭建Vue項目文件夾實現todoList (包括Vue全家桶)

希望你能把教程看完,并且能收貨到你想要的東西,嘻嘻,好了,開始!!

一、搭建webpack運行環境

鑒于文章篇幅的長度,本教程不會詳細講述webpack4的知識點,如果對搭建步驟有什么疑惑的或者有知識點看不懂的,可以先自行Google搜索一下,我悄悄跟你說,webpack4還是有很多坑的,但是所謂的進步就是不斷不斷地踩坑(捂臉表情)!!

初始化項目

在命令行中運行 npm init -y 初始化項目,生產 package.json 文件

安裝webpack依賴

npm i webpack webpack-cli --save-dev

基本項目目錄搭建

webpack.base.dev.js基本配置

 

 
webpack4,Vue,開發環境,todoList 

 

修改腳本命令

在修改 package.json 文件里的 scripts 配置

 

 
webpack4,Vue,開發環境,todoList 

 

運行webpack

在 main.js 里面輸入 document.write("Hello World")

根據上述圖片配置 webpack.base.dev.js 文件

在命令行中運行 npm run test 命令,dist文件夾里會有js文件生成

在 index.html 引入,若成功輸出 Hello World 即證明webpack運行環境配置成功...

二、開始搭建Vue環境

Vue運行環境分為開發環境和生產環境,不同的環境對功能的實現要求也是不一樣的,比如生產環境需要壓縮代碼,而開發環境需要sourceMap便于調試,而這兩種環境也有公共的配置??!

接下來在下面我會慢慢講述不同環境需要實現的功能

在build里面新建文件

  • webpack.base.conf.js 公共配置文件
  • webpack.dev.conf.js 開發環境配置文件
  • webpack.prod.conf.js 生產環境配置文件

公共配置文件

webpack.base.conf.js 是公共配置文件,需要實現以下功能 :

  • 字體處理
  • 處理圖片以及優化
  • 識別Vue文件
  • 啟用babel轉碼,把ES6轉換ES5代碼
  • 音樂文件處理
  • 配置打包后的html模板
  • 配置resolve模塊解析

在 package.json 文件里面 scripts 配置運行腳本命令 :

"test":"webpack --config build/webpack.base.conf.js"

在命令行上運行 npm run test 即可運行 webpack.base.conf.js 配置文件

開發環境配置文件

webpack.dev.conf.js 是開發環境配置文件,該環境注重調試效率:

  • 打包處理css和less文件,設置sourceMap方便定位調試
  • postcss-loader自動添加前綴
  • 配置devServer開啟熱更新功能

在 package.json 文件里面 scripts 配置運行腳本命令 :

"dev":"cross-env NODE_ENV=development webpack-dev-server --inline --progress --config build/webpack.dev.conf.js"

在命令行上運行 npm run dev 即可運行 webpack.dev.conf.js 配置文件

生產環境配置文件

webpack.prod.conf.js 是生產環境配置文件,該環境注重壓縮代碼和性能:

  • 打包處理css和less文件
  • mini-css-extract-plugin抽離樣式為單獨css文件
  • postcss-loader自動添加前綴
  • clean-webpack-plugin每次打包清理創建的dist文件夾
  • optimize-css-assets-webpack-plugin壓縮css文件代碼
  • terser-webpack-plugin壓縮JS文件代碼

在 package.json 文件里面 scripts 配置運行腳本命令 :

"build":"cross-env NODE_ENV=production webpack --config build/webpack.prod.conf.js"

在命令行上運行 npm run build 即可運行 webpack.prod.conf.js 配置文件

三、搭建公共配置文件功能

上面把三個配置文件需要實現的功能都列舉出來了,現在只要按著功能去搭建、去配置就好了,好了,開始!!

在 webpack.base.conf.js 里面開始公共配置功能

配置處理字體、圖片、音樂功能

處理字體、圖片和音樂需要安裝相關依賴

npm i url-loader file-loader --save-dev

配置代碼如下

const path = require('path');module.exports = {  entry: path.resolve(__dirname, '../src/main.js'),  output: {    filename: 'js/[name].[hash:5].js',    path: path.resolve(__dirname, '../dist'),    publicPath: './'  },  module: {    rules: [      {        test: //.(png|jpe?g|gif|svg)(/?.*)?$/,        use: [{            loader: 'url-loader',            options: {              limit: 10000,              name: 'img/[name]-[hash:5].[ext]',            }          }        ]      },      {        test: //.(woff2?|eot|ttf|otf)(/?.*)?$/,        loader: 'url-loader',        options: {          limit: 10000,          name: 'fonts/[name]-[hash:5].[ext]',        }      },      {        test: //.(mp4|webm|ogg|mp3|wav|flac|aac)(/?.*)?$/,        use: [          {            loader: 'url-loader',            options: {              limit: 4096,              name: 'media/[name]-[hash:5].[ext]',            }          }        ]      }    ]  },}

url-loader 和 file-loader 功能相似,都是在webpack中處理圖片、字體圖標等文件

它們之間的關系是 url-loader 封裝了 file-loader ,但 url-loader 并不依賴于file-loader

url-loader 可以通過limit屬性對圖片分情況處理,當圖片小于limit(單位:byte)大小時轉base64,大于limit時調用 file-loader 對圖片進行處理。

ES6轉換ES5代碼

在這里我吐一下苦水,在學習使用babel配置ES6轉換代碼的時候,真的費了很大的心思,配置了很久,很多loader我都搞不清楚是什么關系(捂臉),后來看了官網和別人的博客才分清楚了~~~好了,開始!!

首先要安裝相關loader

npm i babel-loader @babel/core @babel/polyfill @babel/preset-env core-js@3 --save-dev

  • babel-loader只支持ES6語法轉換,但是不支持ES6新增加的API
  • babel-polyfill可以添加ES6新增加API,讓客戶端支持
  • babel-preset-env可以配置讓JS兼容的運行環境
  • babel-core把js 代碼分析成 ast ,方便各個插件分析語法進行相應的處理

看配置代碼

 

 
webpack4,Vue,開發環境,todoList

 

這樣子配置只支持ES6語法轉換,不支持ES6新增加API

在入口文件 main.js 里面添加 import @babel/polyfill

這樣子就可以使用ES6新增加的API了,但是這是你會發現打包后的JS文件比較大,而且里面有很多ES6的API也是你沒用到的,所以這時候你需要做到按需引入

在根目錄下創建 babel.config.js 文件,在里面設置配置

 

 
webpack4,Vue,開發環境,todoList

 

好了,這樣就可以實現按需引入了,可以大大減少打包后的JS文件大小了,嗯嗯,我也終于把知識點整理出來了(捂臉)(辛酸臉)~~~

配置打包Vue文件

首先先安裝依賴

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

在 src 文件夾上新建Vue文件 App.vue

在 main.js 入口文件上引入Vue并且掛載到節點上

 

 
webpack4,Vue,開發環境,todoList

 

好了,開始打包Vue文件的配置

 

 
webpack4,Vue,開發環境,todoList

 

這樣就好了,感覺打包Vue以及掛載節點這段代碼手敲出來還是挺有感覺的

配置html模板頁面

安裝依賴

npm i html-webpack-plugin --save-dev

使用 html-webpack-plugin來創建html頁面,并自動引入打包生成的文件

const HtmlWebpackPlugin = require('html-webpack-plugin');plugins: [    new HtmlWebpackPlugin({      template: path.resolve(__dirname,'../index.html'),      filename: 'index.html'    }),  ]

具體配置可以查看npm文檔

https://www.npmjs.com/package/html

配置resolve模塊解析

配置alias方便路徑的檢索效率以及配置文件默認擴展名

 resolve: {    extensions: ['.js','.json','.vue'],    alias: {      '@': path.resolve(__dirname,'../src')    }  }

"@":"指向src文件夾"

好了,到這里為止,已經完成了配置文件的公共部分了,接下來開始針對環境進行配置了?。?!

在命令行上運行 npm run test ,可以運行公共配置文件

四、生產環境配置

好了,直接開敲?。?!

在 webpack.prod.conf.js 文件里面進行配置

定義環境變量

webpack里面提供了 DefinePlugin 插件可以方便定義環境變量

plugins: [    new webpack.DefinePlugin({      'process.env': {        NODE_ENV: JSON.stringify('production')      }    }),  ],

處理css和less文件

生產環境處理css和less文件需要把css樣式提取出來到一個獨立的css文件里面

并且自動添加前綴,sourceMap

處理css和less文件

npm i css-loader less less-loader --save-dev

自動添加前綴

npm i postcss-loader autoprefixer --save-dev

提取css樣式到獨立css文件

npm i mini-css-extract-plugin --save-dev

篇幅過長,無法截圖,直接上代碼

const webpackConfig = require('./webpack.base.conf');const merge = require('webpack-merge');const webpack = require('webpack');//抽離CSS樣式const MiniCssExtractPlugin = require('mini-css-extract-plugin');module.exports = merge(webpackConfig,{  mode: 'production',  devtool: 'cheap-source-map',  module: {    rules: [      {        test: //.(c|le)ss$/,        use: [          {            loader: MiniCssExtractPlugin.loader,            options: {              publicPath: '../'            }          },          {            loader: 'css-loader'          },          {            loader: 'postcss-loader',            options: {              ident: 'postcss',              sourceMap: true,              plugins: loader=>[                require('autoprefixer')({                  browsers: [                    "last 2 versions",                    "> 1%"                  ]                })              ]            }          },          {            loader: 'less-loader'          }        ]      }    ]  },  plugins: [    new MiniCssExtractPlugin({      filename: 'css/[name]-[hash:5].css',      chunkFilename: 'css/[id]-[hash:5].css',    }),  ],}

清理打包創建文件夾

打包過程中你會發現每次打包后dist文件夾都會不斷增加文件, 顯然這個方面我們需要處理

安裝相關依賴

npm i clean-webpack-plugin --save-dev

//清理distconst CleanWebpackPlugin = require('clean-webpack-plugin');plugins: [  new CleanWebpackPlugin(),],

壓縮js和css代碼

壓縮css代碼

npm i optimize-css-assets-webpack-plugin --save-dev

壓縮js代碼

npm i terser-webpack-plugin --save-dev

使用方式

 optimization: {    minimizer: [      //壓縮css      new OptimizeCssAssetsWebpackPlugin({}),      // 壓縮JS      new TerserWebpackPlugin({        cache: true,        parallel: true,        sourceMap: true,      }),      //具體更多配置可以查看官網    ]  }

在命令行上運行 npm run build 可以運行開發環境配置文件

好了,說完開發環境的配置,接下來到生產環境的配置了

五、開發環境配置

在 webpack.dev.conf.js 文件里面進行配置

有點小累(捂臉)

定義環境變量

跟生產環境一樣,首先也是要定義環境變量

new webpack.DefinePlugin({  'process.env': {    NODE_ENV: JSON.stringify('development')  }}),

處理css和less文件

開發環境下的css和less不需要提取樣式,只需要添加前綴和sourceMap方便調試

安裝依賴

處理css和less文件

npm i style-loader css-loader less less-loader --save-dev

自動添加前綴

npm i postcss-loader autoprefixer --save-dev

const webpackConfig = require('./webpack.base.conf.js');const merge = require('webpack-merge');const path = require('path');const webpack = require('webpack');module.exports = merge(webpackConfig,{  mode: 'development',  // source-map,將編譯后的代碼映射到原代碼,便于報錯后定位錯誤  devtool: 'inline-source-map',  module: {    rules: [      {        test: //.(c|le)ss$/,        use: [          {            loader: 'style-loader',            options: {              sourceMap: true            }          },          {            loader: 'css-loader',            options: {              sourceMap: true,            }          },          {            loader: 'postcss-loader',            options: {              ident: 'postcss',              sourceMap: true,              plugins: loader=>[                require('autoprefixer')({                  browsers: [                    "last 2 versions",                    "> 1%"                  ]                })              ]            }          },          {            loader: 'less-loader',            options: {              sourceMap: true            }          }        ]      }    ]  },}

配置devServer

webpack上可以開啟熱更新模式,大大加速開大效率。

安裝相關依賴

npm i webpack-dev-server --save-dev

上代碼

  //具體更多配置可以參考官網  devServer: {    contentBase: path.resolve(__dirname,'../dist'),    // hot: true,    port: 9090,    overlay: {      warnings: true,      errors: true    },    publicPath: '/'  }    plugins: [    // 啟用模塊熱替換(HMR)    new webpack.HotModuleReplacementPlugin(),    // 當開啟 HMR 的時候使用該插件會顯示模塊的相對路徑,建議用于開發環境。    new webpack.NamedModulesPlugin(),  ],

這樣子就可以在線調試,無需手動刷新了?。∥?/p>

好了,開發環境的配置也完成了

在命令行上輸入 npm run dev 可以運行生產環境配置文件

六、總結

整個Vue開發環境配置下來,感覺學到的東西還是挺多的,對webpack4功能的配置也有了大致的認識

雖然跟Vue-cli相比還是差太遠,但是有時候弄點小東西折騰一下感覺還是不錯的!!

好了,本編文章就到此為止,由于本人水平有限,如果有什么錯誤,請及時指出,彼此好好進步,哈哈!!謝謝各位大佬(笑臉)

下篇文章我將用這次搭建的Vue開發環境去編寫 todoList 項目

我相信大家對todoList并不陌生,但是同一個項目可以有不同的寫法的,所以下篇文章我也會繼續手動搭建Vue文件夾,純手寫,用 vue-router . vuex 來實現,相信會對大家有幫助,好了,結束!!

github源碼:https://github.com/Zero-jian/webpack

下篇文章 手動搭建Vue項目 ,未完待續~~~

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频一区国模私拍| 日韩在线视频中文字幕| 久久久久久久久中文字幕| 日韩av手机在线| 九色成人免费视频| 欧美人交a欧美精品| 成人网在线免费看| 成年人精品视频| 欧美日产国产成人免费图片| 国产精品视频1区| 国产精品青青在线观看爽香蕉| 大胆欧美人体视频| 久久久久久网站| 91成人在线视频| 欧美片一区二区三区| 欧美成人免费小视频| 少妇久久久久久| 黄色成人在线免费| 国产专区精品视频| 国产亚洲欧美日韩美女| 成人h视频在线| 91黄色8090| 亚洲色图色老头| 国产精品久在线观看| 91极品视频在线| 不卡毛片在线看| 欧美激情精品久久久久久久变态| 91精品国产免费久久久久久| 欧美午夜激情小视频| 欧美激情2020午夜免费观看| 欧美日韩国产中文精品字幕自在自线| 777精品视频| 亚洲已满18点击进入在线看片| 最近中文字幕日韩精品| 国产日韩在线一区| 97超碰国产精品女人人人爽| 视频一区视频二区国产精品| 国产精品av在线播放| 亚洲欧美在线看| 国产精品va在线播放| 久久精品国产成人| 最新的欧美黄色| 亚洲国产精品一区二区三区| 亚洲成人精品久久久| 中文字幕精品久久| 91成人免费观看网站| 欧美日本中文字幕| 日本欧美一级片| 国产欧美精品xxxx另类| 亚洲人成在线播放| 久久综合亚洲社区| 成人网在线免费看| 亚洲一区二区免费| 57pao国产成人免费| 亚洲japanese制服美女| 亚洲毛片在线看| 日韩毛片在线看| 97视频com| 国产+人+亚洲| 亚洲专区中文字幕| 国产日韩欧美夫妻视频在线观看| 精品一区二区三区电影| 在线成人激情黄色| 欧美日本国产在线| 92国产精品视频| 深夜精品寂寞黄网站在线观看| 国产精品吹潮在线观看| 在线成人免费网站| 亚洲国产精品成人精品| 日韩中文字幕不卡视频| 国产一区二区三区中文| 97精品欧美一区二区三区| 岛国av一区二区在线在线观看| 成人动漫网站在线观看| 国产在线拍偷自揄拍精品| 亚洲欧美日韩精品久久| 色综合色综合网色综合| 久久久久久这里只有精品| 日本国产精品视频| 欧美在线性视频| 久久久之久亚州精品露出| 久久久成人精品| 亚洲精品视频免费在线观看| xxxxxxxxx欧美| 久久精品国产一区二区电影| 中文字幕在线看视频国产欧美| 57pao成人永久免费视频| 2019亚洲日韩新视频| 亚洲图片欧洲图片av| 日韩一区在线视频| 97成人在线视频| 热久久99这里有精品| 欧美日韩免费区域视频在线观看| 亚洲一区精品电影| 亚洲全黄一级网站| 欧洲成人午夜免费大片| 国产精品久久久av久久久| 国产精品777| 中文字幕自拍vr一区二区三区| 最近2019年手机中文字幕| 国产亚洲欧美另类中文| 国产在线拍揄自揄视频不卡99| 成人黄色在线播放| 欧美日韩国产影院| 国产精品高清免费在线观看| 精品久久久久人成| 亚洲国产日韩精品在线| 亚洲国产精品va在线看黑人动漫| 91网站在线看| 国产免费一区二区三区在线能观看| 日韩小视频网址| 日韩国产在线播放| 亚洲精品v欧美精品v日韩精品| 亚洲精品一区二区在线| 欧美成人激情图片网| 久久久久久香蕉网| 日韩三级影视基地| 亚洲福利视频网| 亚洲毛片在线观看.| 国产第一区电影| 色av吧综合网| 欧美视频在线免费| 久久露脸国产精品| 欧美肥老妇视频| 国产欧美日韩丝袜精品一区| 亚洲人成在线观看| 国产欧美精品一区二区三区介绍| 久99九色视频在线观看| 国产精品久久久久av| 国产精品一久久香蕉国产线看观看| 在线观看视频亚洲| 俺去亚洲欧洲欧美日韩| 欧美日韩国产精品| 日韩av电影在线免费播放| 国产美女精品视频免费观看| 18性欧美xxxⅹ性满足| 亚洲国产中文字幕久久网| 国产欧美日韩91| 国产欧美韩国高清| 久久综合免费视频影院| 6080yy精品一区二区三区| 欧美资源在线观看| 国产精品久久久av久久久| 在线播放日韩专区| 中文字幕精品视频| 国产在线观看精品| 精品成人乱色一区二区| 亚洲sss综合天堂久久| 亚洲第五色综合网| 国产97在线亚洲| 久热国产精品视频| 欧美成人sm免费视频| 国内精品美女av在线播放| 高清在线视频日韩欧美| 亚洲欧洲日本专区| 亚洲娇小xxxx欧美娇小| 97久久久免费福利网址| 日韩欧美一区二区在线| 在线精品国产欧美| 久久久成人精品视频| 亚洲男人天堂古典| 亚洲免费中文字幕| 国产精品视频久久久| 伊人久久综合97精品|