vue-cli 打包部署

1、一般打包 :直接 npm run build。(webpack的文件,根據不同的命令,執行不同的代碼的)

注:這種打包的靜態文件,只能放在web服務器中的根目錄下才能運行。

2、在服務器中 非根目錄下 運行的 打包:需要配置

參考:https://segmentfault.com/a/1190000014561644

3、在本地文件系統中打開,不需要web服務器

暫時 不清楚

4、使用 history模式 打包的 配置 : http://tigerliu.site/2018/10/vue-history/ (親測有效,配置很簡單)

nginx 服務器下 配置:在location下 加 try_files $uri $uri/ /index.html; 就可以了

location / {try_files $uri $uri/ /index.html;
}

注意:代碼中的相對路徑是以瀏覽器上 地址 為參考的,而不是文件所在目錄(一般情況這兩個是統一的,但是服務器配置過就不一定了。比如瀏覽器請求a文件,服務器把b文件給瀏覽器,這個時候b文件的相對路徑是以url的地址為參考的,即a的url地址)。

單頁應用,hash模式的url地址是不變的(變的是hash值),所以打包后 頁面的相對路徑 都是相對index頁面。但是history模式下,瀏覽器地址是改變的,所以直接把hash模式轉化為history模式會出現錯誤。因為history模式下,不同的地址相對路徑是不一樣的。

5、修改Vue打包后的默認文件名 : https://blog.csdn.net/daotiao0199/article/details/84777955

6、vue-cli 不同環境打包 不同的接口地址 :需要單獨這種區分的,一般是不同環境接口地址改變的不只是域名,主要是地址的目錄不同。如:one.vom/test/api 和 two.com/pro/api 這兩個環境根域名下的目錄是不同的,這兩個環境的打包就需要區分開來了。

參考:https://blog.csdn.net/qq_34322905/article/details/84319010(親測有效。理解了程序,webpack.dev.conf.js文件是可以不用改的,使用process.env.NODE_ENV 區分)

多個服務器(web服務器和后臺服務器在一個域名下),如測試環境(接口調用的是測試環境的域名)、正式環境(接口調用的是正式環境的域名)

注意:調接口的地址域名不要寫死,使用 / 開頭表示根域名下的地址。不同的環境,如果只是域名的不同,完全不需要區分測試環境還是正式環境。根域名會自動添加的。

難點:1、npm命令 中的 參數,在 webpack程序中是可以獲取到的。如:npm run build --test ,參數test 在webpack程序中可以獲取這個值。 http://nodejs.cn/api/process.html#process_process_argv

process.env.npm_config_argv 【npm 命令, 獲取到的參數。node命令的話,這個變量是undefined】。如:npm run start --test 。使用npm_config_argv變量可以正常獲取到 test參數

process.argv 【node命令可以正常獲取到 node命令相關參數。npm命令的話,這個變量返回的數組中不帶參數】。如:node test.js --test 。使用 argv可以正常獲取到 test參數

const argv = JSON.parse(process.env.npm_config_argv).original || process.argv    // 個人覺得這里的 process.argv 是多余的。使用npm命令時,process.env.npm_config_argv 變量肯定是有數據的。

2、通過配置,webpack程序中的變量值(常量),在前端js中是獲取獲取到的。編譯時直接 文本替換。

 注意:cnpm 和 npm 命令打包后,process.env.npm_config_argv 獲取的數組是不一樣的。參考鏈接上的處理,只是針對npm進行處理的,cnpm是會有問題的。下面是我的改進(改進后npm和cnpm都可以正常打包):

const HOST_ENV = argv[argv.length - 1] ? argv[argv.length - 1].replace(/[^a-z]+/ig,"") : ''   // npm和cnpm 命令下,--test參數都是在數組 argv 的最后面.

7、vue-cli 中 通過配置,webpack 中的常量 可以在 前端js中使用(環境變量就是這樣實現的)。 https://www.jianshu.com/p/887f0454ef96(推薦) 或 https://www.cnblogs.com/xiaofenguo/p/9994629.html

webpack在編譯 前端代碼時,碰到 這種 常量 直接做文本替換(即打包后的代碼中是沒有這個常量的,只有對應的值),指定的值必須包括引號。

 new webpack.DefinePlugin({'process.env.BASE_URL': '\"' + process.env.BASE_URL + '\"', // 這里屬性名process.env.BASE_URL的配置是給前端js使用的,屬性值中process.env.BASE_URL是node的全局變量,所有的node程序都可以使用,但是前端的js是不能使用的。'process.env.HANGZHOU': '"hangzhou"',}),

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249900.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249900.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249900.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EXCEL怎么打20位以上的數字?

EXCEL怎么打20位以上的數字? 轉載于:https://www.cnblogs.com/macT/p/10208794.html

vue render函數

Vue中的Render渲染函數 VUE一般使用template來創建HTML&#xff0c;然后在有的時候&#xff0c;我們需要使用javascript來創建html&#xff0c;這時候我們需要使用render函數。比如如下我想要實現如下html&#xff1a; <div id"container"><h1><a hre…

Nexus介紹

轉自&#xff1a;https://www.cnblogs.com/wincai/p/5599282.html 開始在使用Maven時&#xff0c;總是會聽到nexus這個詞&#xff0c;一會兒maven&#xff0c;一會兒nexus&#xff0c;當時很是困惑&#xff0c;nexus是什么呢&#xff0c;為什么它總是和maven一起被提到呢&#…

vue-cli 打包

一項目打包 1 打包的配置在 build/webpack.base.conf.js文件下 常量config在vue/config/index.js 文件下配置&#xff0c;__dirname是定義在項目的全局變量&#xff0c;是當前文件所在項目的文件夾的絕對路徑。 2 需要修改vue/config/index.js 文件下的將build對象下的assets…

乘風破浪:LeetCode真題_010_Regular Expression Matching

乘風破浪&#xff1a;LeetCode真題_010_Regular Expression Matching 一、前言 關于正則表達式我們使用得非常多&#xff0c;但是如果讓我們自己寫一個&#xff0c;卻是有非常大的困難的&#xff0c;我們可能想到狀態機&#xff0c;確定&#xff0c;非確定狀態機確實是一種解決…

python——獲取數據類型

在python中&#xff0c;可使用type()和isinstance()內置函數獲取數據類型 如&#xff1a; &#xff08;1&#xff09;type()的使用方法&#xff1a;    >>> a 230 >>> type(a) <class str> >>> a 230 …

vue項目工程中npm run dev 到底做了什么

npm install 安裝了webpack框架中package.json中所需要的依賴 2.安裝完成之后&#xff0c;需要啟動整個項目運行&#xff0c;npm run 其實執行了package.json中的script腳本&#xff0c;npm run dev的執行如下 3.底層相當執行webpack-dev-server --inline --progress --confi…

JavaScript回顧與學習——條件語句

一、if...else // if elsevar age 16;if(0 < age && age < 6){console.log("兒童");}else if(6 < age && age < 14){console.log("少年");}else if(14 < age && age < 35){console.log("青年");}els…

bat等大公司常考java多線程面試題

1、說說進程,線程,協程之間的區別 簡而言之,進程是程序運行和資源分配的基本單位,一個程序至少有一個進程,一個進程至少有一個線程.進程在執行過程中擁有獨立的內存單元,而多個線程共享內存資源,減少切換次數,從而效率更高.線程是進程的一個實體,是cpu調度和分派的基本單位,是比…

webpack.config.js和package.json

webpack.config.js 是webpakc的配置文件&#xff0c;webpack是當今很火的一個打包工具 使用webpack.config.js在你的項目里 可以對你的項目進行模塊化打包&#xff0c;并且也可使組件按需加載&#xff0c;還可將圖片變成base64格式減少網絡請求。 而package.json 是指你項目的…

七牛云圖片加載優化

?imageView2/2/w/80https://developer.qiniu.com/dora/manual/1279/basic-processing-images-imageview2 ?imageView2/1/w/80/h/80會裁剪 ?imageView2/3/w/80/h/80不會裁剪 轉載于:https://www.cnblogs.com/smzd/p/9025393.html

org.apache.maven.archiver.mavenarchiver.getmanifest怎么解決

原因就是你的maven的配置文件不是最新的 1.help ->Install New Software -> add ->https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST 或者&#xff08;更新于2018年4月18日17:07:53&#xff09; http://repo1.maven.org/mav…

npm中package.json詳解

通常我們使用npm init命令來創建一個npm程序時&#xff0c;會自動生成一個package.json文件。package.json文件會描述這個NPM包的所有相關信息&#xff0c;包括作者、簡介、包依賴、構建等信息&#xff0c;格式是嚴格的JSON格式。 常用命令 npm i --save packageName 安裝依賴…

offset系列,client系列,scroll系列回顧

一 scroll系列屬性 ——滾動1 scrollHeight/scrollWidth 標簽內部實際內容的高度/寬度ele.scrollHeight 有兩種情況&#xff0c;當內容超出盒子范圍后&#xff0c;返回的是內容的高度&#xff0c;包括padding&#xff0c;從頂部內側到內容的最外部分。當內容不超出盒子范圍…

項目開發中的自我總結

最近忙的要死,因為新開發了兩個項目.現在已經測試完畢了,準備部署到線上了. 然后不能白忙活吧,忙活完也得寫點總結和經驗吧,以后也有個記錄. 1.一個bootstrapjquerylayuilaravel 5.4開發的一個后臺系統 比較樸素 2.一個前后端分離的vuelaravel 5.4 開發的商家系統 我只負責后端…

webpack.config.js 參數詳解

webpack.config.js文件通常放在項目的根目錄中&#xff0c;它本身也是一個標準的Commonjs規范的模塊。 var webpack require(webpack); module.exports {entry: [webpack/hot/only-dev-server,./js/app.js],output: {path: ./build,filename: bundle.js},module: {loaders: …

數組黑科技(偏性能方面)未完待更新...

數組去重最優解&#xff1a;Array.prototype.unique function () {var tmp new Map();return this.filter(item > {return !tmp.has(item) && tmp.set(item,1);})}搭配使用 Array.from(foo); // ["f", "o", "o"]let s new Set([f…

控制臺添加log4net

1.添加nuget包 log4net 2.app.config配置 <?xml version"1.0" encoding"utf-8"?> <configuration> <configSections><section name"log4net" type"log4net.Config.Log4NetConfigurationSectionHandler, log4net&quo…

記一次vue 普通異步請求微信二進制二維碼 亂碼 問題解決然后渲染

后端壓力大&#xff0c;前端分憂。 /*用微信小程序token拿二維碼*/ async fetchMINIQRcode({commit,state},params){var instance axios.create({responseType: blob, //返回數據的格式&#xff0c;可選值為arraybuffer,blob,document,json,text,stream&#xff0c;默認值為js…

vue-cli項目中.postcssrc.js

module.exports {"plugins": {"postcss-import": {}, //用于import導入css文件"postcss-url": {}, //路徑引入css文件或node_modules文件"postcss-aspect-ratio-mini": {}, //用來處理元素容器寬高比"postcss-…