如何快速把 Vue 專案升級到 webpack3
由於 webpack3
升級後,新增了 Scope Hositing(作用域提升) 功能,據說是對 js
的效能提升很大。因此,我們做了一個測試對比,就是 webpack3
和 webpack1/2
的效能對比,如下:
測試目標
以下資料是2天隨機時段3部手機各2組資料,每組資料都是30次取平均值,為了測試js的解析能力,排除了網路請求的影響
-
平臺:M5 Note Build/MRA58K
-
系統:android 6.0
時間 | before | after |
---|---|---|
2017-08-10 13:00 | 920 | 511 |
2017-08-11 11:10 | 915 | 543 |
平均提升:42.55%
-
平臺:MI 3C Build/KTU84P
-
系統:Android 4.4.4
時間 | before | after |
---|---|---|
2017-08-13 15:00 | 648 | 365 |
2017-08-14 17:10 | 648 | 377 |
平均提升:42.74%
-
平臺:SM901 Build/MXB48T
-
系統:Android 6.0.1
時間 | before | after |
---|---|---|
2017-08-13 18:00 | 593 | 393 |
2017-08-14 15:50 | 575 | 392 |
平均提升:32.75%
以上資料,提升比例雖然有所差距,但是,最後的結果,都表明......你應該毫不猶豫的升級你的 webpack
了。
問題來了,如何能快速且平滑的升級你的 webpack
呢?這是我們今天的重點,前面都是鋪墊,哈哈
升級webpack3
今天只以 vue
專案來舉例, vue-cli
升級 w3
簡直不要太快哦,而且也有專案上線成功了,並且線上測試與本地測試結果基本一致。如果使用的是 react
專案,用的又是腳手架的話,那麼恭喜你,跟 vue-cli
一樣快,可參考 vue-cli
的升級方式,如果你自己寫的 w2
的話加一個配置(可以體驗跟 vue-cli
一樣的升級體驗哦),然後升級相應擴充套件:
-
new webpack.optimize.ModuleConcatenationPlugin()
如果是自己寫的 w1
的話,對不起,你只能去哭著對比 w3
和 w1
的語法相容修改配置檔案了,網上有詳細的語法對比,這裡就不詳述了
步驟
-
下載最新的的
vue-cli
,初始化一個新專案tow3
-
把你的
src
目錄下的業務程式碼拷貝到新建的tow3
專案中src
路徑替換了 -
把
config/index.js
更細成你自己專案的,這裡需要注意的是,webpack3
此檔案的配置和webpack1、2
都不太一樣,所以仔細比對,只修改一樣的配置項 -
在
build/webpack.prod.conf.js
配置裡檔案裡的加上如下配置,這是webpack3
升級的最核心功能(加在這個檔案時因為我生產環境不需要),如果本身打包策略做了優化,那麼就需要對造webpack3
的最新語法進行修改遷移了
-
plugins: [
-
new webpack.optimize.ModuleConcatenationPlugin()
-
]
-
npm run dev & npm run build 缺什麼包就裝什麼包,如圖
然後,就是辣麼簡單,ok了
壯士,請留步。。。其實還有
每個人安裝過程中都可能遇到不同的錯,甚至是不顯示錯誤資訊,讓人蛋疼又心碎,辣麼如何進行科學的報錯呢?其實很簡單,如下
錯誤除錯
在 build/webpack.dev.conf.js
裡有自帶錯誤除錯的外掛
new webpack.HotModuleReplacementPlugin(), new FriendlyErrorsPlugin(
但它並不能滿足我們,我升級過程中就發現,很多bug只出現了個 error
,不出現錯誤資訊,這讓我如何除錯啊,臣妾完全做不到啊
我們只需要修改一行配置:
new webpack.HotModuleReplacementPlugin(), new FriendlyErrorsPlugin({ onErrors: function (severity, errors) { console.log(errors); } })
常見錯誤也就是 npm
包版本不匹配,升級最新的包就行,推薦工具 npm-check,批量檢查更新,簡直不要太好用
不過凡事都有例外,錯誤也一樣,升級過程中遇到了如下錯誤:
FQ搜了半天,發現是 "vue":"^2.3.4"
版本對應的 vue-loader
版本不對,最好是 >vue-[email protected]^7.0.0&&<vue-[email protected]^12.0.0
。
所以,剩下很大一部分錯誤就是框架和編譯器的版本對應問題的鍋了,多FQ,多google,讓一切難題變得不難。
哈哈,有了這些就算再狡猾的妖精,也逃不過老孫的金箍棒了。
好了,請開始你的表演吧。
最後
贈送一份 package.json
的配置,此配置乃最終相容版,eslint好煩,我把它註釋了,目前已上線,執行良好
{ "name": "w3", "version": "1.0.0", "description": "w3", "author": "yuanxiaolong", "private": true, "scripts": { "dev": "node build/dev-server.js", "start": "node build/dev-server.js", "build": "node build/build.js", "lint": "eslint --ext .js,.vue src" }, "dependencies": { "vue": "^2.0.0", "vue-resource": "0.8.0", "vue-router": "^2.0.0", "vuex": "^2.0.0" }, "devDependencies": { "autoprefixer": "^7.1.2", "babel-core": "^6.25.0", "babel-loader": "^7.1.1", "babel-plugin-component": "^0.10.0", "babel-plugin-transform-class-constructor-call": "^6.24.1", "babel-plugin-transform-object-assign": "^6.22.0", "babel-plugin-transform-runtime": "^6.23.0", "babel-preset-es2015": "^6.24.1", "babel-preset-stage-2": "^6.24.1", "babel-register": "^6.24.1", "chalk": "^2.1.0", "connect-history-api-fallback": "^1.3.0", "copy-webpack-plugin": "^4.0.1", "css-loader": "^0.28.0", "cssnano": "^3.10.0", "eventsource-polyfill": "^0.9.6", "express": "^4.14.1", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^0.11.1", "friendly-errors-webpack-plugin": "^1.1.3", "html-webpack-inline-source-plugin": "0.0.9", "html-webpack-plugin": "^2.30.1", "http-proxy-middleware": "^0.17.3", "less": "^2.7.2", "less-loader": "^4.0.5", "opn": "^5.1.0", "optimize-css-assets-webpack-plugin": "^2.0.0", "ora": "^1.3.0", "path": "^0.12.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "shelljs": "^0.7.8", "uglifyjs-webpack-plugin": "^1.0.0-beta.2", "url-loader": "^0.5.8", "vue-loader": "^12.2.2", "vue-style-loader": "^3.0.1", "vue-template-compiler": "^2.4.2", "webpack": "^3.5.3", "webpack-bundle-analyzer": "^2.2.1", "webpack-dev-middleware": "^1.12.0", "webpack-hot-middleware": "^2.18.2", "webpack-merge": "^4.1.0" }, "engines": { "node": ">= 4.0.0", "npm": ">= 3.0.0" }, "browserslist": [ "last 11 iOS versions" ] }
如果你喜歡我們的文章,關注我們的公眾號和我們互動吧。
我們是轉轉FE團隊,歡迎大家關注公眾號 大轉轉FE 。更多的瞭解我們相關推薦
如何快速把 Vue 專案升級到 webpack3
由於 webpack3升級後,新增了 Scope Hositing(作用域提升) 功能,據說是對 js的效能提升很大。因此,我們做了一個測試對比,就是 webpack3和 webpack1/2 的效能對比,如下: 測試目標 以下資料是2天隨機時段
快速搭建vue專案從零開始
最近公司一直在使用vue來做專案,今天就把一些使用vue的方法分享一下,希望能對大家有所幫助。同時,有說的不對的地方,歡迎大家能夠指出。 一、使用vue-cli腳手架從零開始搭建 首先要確定自己電腦上已經安裝了nodejs,可以使用node -v檢查一下,如果沒有安裝請訪問nodejs官網,
Vue筆記——搭建腳手架並快速建立Vue專案
現在的Vue腳手架已經升級到3.x版本,即vue-cli3。 腳手架升級之後,安裝的命令發生了變化,所以這篇文章會跟大家演示新舊版本的腳手架安裝過程。 下面的安裝過程均是在window平臺下安裝。 一、準備工作 1. 安裝node.js和npm Vue的腳手
vue cli 3.0 快速搭建vue專案
0.安裝之 npm install -g @vue/cli 檢測是否安裝成功 vue -V(大寫大寫的V) 報了倒黴的“vue不是內部外部命令,也不是可執行的程式” 這說明vue.cmd不在window系統的環境變數裡面 終端視窗 where vue.cmd找到這
HBuilder把vue專案打包app後請求不到資料問題
最近用VUE寫了一個webapp專案(遊計劃--https:www.uplanok.com),用HBulider打包成app用手機開啟後,資料居然請求不到,引入的阿里的iconfont字型圖示也載入不進來。互動是用axios寫的,使用了跨域代理。 放到伺服器上開啟的正常頁面
vue-cli 構建vue專案升級webpack4
原因 從前車馬慢,打包一打一上午。 在上一個專案中,打包速度的問題是個大問題,幾經優化,也沒有讓我滿意,但專案已經在線上執行,不敢輕舉妄動。現在比較輕鬆又在為新的專案做準備,webpack4 搞一發。 vue-cli 搭建專案 還是使用 vue 的自
一步步教你怎麼把vue專案部署到Node伺服器上
我之前的那個demo 手把手教你用Vue2+webpack+node開發一個H5 app是部署到openshift上的,本來想以在openshift上部署為例的,但是突然發現openshift 2版本的好像不再支援註冊了,升級到3版本的好像要money了,
使用 vue-cli 3 快速建立 Vue 專案及專案配置 Vue.config.js
1.使用 npm install -g @vue/cli # or yarn global add @vue/cli 檢視版本(是否安裝成功):vue -V(大寫的V) 11576163-5ebc6d418467d0c4.png 2.命令變化 Comm
vue-cli快速搭建vue專案
1.安裝node(使用6+) 2.安裝cnpm:安裝包時,記得以管理員許可權開啟cmd 3.安裝vue-cli :npm install -g vue-cli 4.建立專案:vue init webpack XX (請確保安裝了webpack) 5.開發模
通過Vue CLI 快速建立Vue專案並部署到tomcat
前言 最近一直在寫前端,用的是JSP,但是很多人都說JSP已經過時了。既然做了幾個月的前端,那就把前端學的好一點,學點新技術,跟上潮流。感覺Vue挺火的,所以這幾天學了一下Vue,開始看的官方文件,然後直接用GitHub上比較火的專案進行學習,本地跑起來,看看
用vue-cli快速生成vue專案
一、全域性安裝webpack npm install webpack -g 二、安裝node 三、全域性安裝vue-cli npm install vue-cli -g 四、生成專案 vue init webpack project_name 五、安裝依賴模組
vue-cli快速搭建vue專案並上傳github
首先我們先用vue-cli快速搭建vue專案。 假設你的電腦上已經安裝好了nodejs(如何安裝nodejs此處跳過,網上很多教程),那麼接下來就安裝vue-cli。 1、全域性安裝vue-cli,程
把圖片公式轉化為文字內容。vue專案中引入MathJax.js
這是個圖片的公式,有img標籤引入。 我們想要轉成下面的效果: 在vue專案中引入MathJax.js 首先在index.html頁面 <script type="text/javascript" src="https://cdn.ma
vue 專案快速輸出微信、支付寶、百度小程式
上週,[email protected] 正式釋出,優化了資料更新效能的同時,支援了百度智慧小程式,著實激動了一把,這“可能”是目前社群裡第一個同時支援三端小程式的 vue 小程式框架。下面我們就來試試他的效果。 跟著文件走 官方文件的第一部分就是快速入門,順藤摸瓜,構建一個 megalo 專案
vue專案引入vux-ui框架詳解(快速入門)
一、新建自帶vux框架的vue專案(免配置) 1、安裝vue環境 (已安裝,跳過這一步) 2、新建基於vux的vue專案; vue init airyland/vux2 projectName //(新建專案配置已省略) cd projectName
把vue腳手架的專案放在centos伺服器上執行
1.首先把vue專案用npm run build打包,預設打包後的檔案是dist,對應下圖的public 目錄: 2.建立app.js,服務端程式碼,反正這個套路來就是了 const Koa = require('koa'); const body = require('koa
《從零構建前後分離的web專案》實戰 -5分鐘快速構建炒雞規範的VUE專案骨架
初步搭建腳手架 Tips 任何不錯的開源專案都有 project-cli 腳手架、我們用它生成往往能快速配製出最佳的、理想的腳手架 我通常使用 cli 生成專案骨架再在之基礎上進行個人修改。 什麼是 CLI 命令列介面(英語:command-line interfa
vue專案把文字轉換為markdown文件
最近在一個專案中,需要有使用者使用手冊功能,在這裡用markdown,採用了vue-markdown外掛。 1.下載vue-markdown $ npm i vue-markdown 2.如何使用 // 在js頁面 import VueMarkdown from 'v
升級node版本後VUE專案啟動報錯
檢視node版本: node -v 原來的node版本是8.11.3 升級後的node版本是10.13.0 啟動VUE專案 npm run dev 報錯: fs.js:129 throw new ERR_INVALID_CALLBACK(); ^ Typ
如何快速建立一個VUE專案(介紹專案結構)
建立vue專案流程 1.安裝node.js 首先檢視一下你的node.js是否安裝成功,如果安裝成功第一步可以略過。 驗證是否安裝成功 node -v #檢視nodejs版本號 比如:v8.4.0 如果未安裝,windows 在官網下載安裝包,直接安裝即可