最近一直在學(xué)習(xí)vue.js,之前使用vue用的是js引入,沒有用到打包?,F(xiàn)在想學(xué)習(xí)使用vue webpack這種開發(fā)模式寫一個小demo,在此之前查詢過很多資料,也閱讀過一些大神的博客,但是還是對一些問題不是很清楚,具體問題如下:
1.npm run ruild后將打包后的靜態(tài)文件放到線上服務(wù)器,那么咱們在開發(fā)后要放到測試服務(wù)器的也是打包后的dist文件嗎?
2.關(guān)于不同環(huán)境的接口地址問題:由于公司在測試過程中分為不同的環(huán)境(pre fix),本地開發(fā)的時候是在pre環(huán)境,那么在接口調(diào)用的時候地址該怎能么配置呢?看到有的大神回答是在webpack.prod.conf.js和 webpack.dev.conf.js中配置后直接調(diào)用就行
生產(chǎn)環(huán)境:webpack.prod.conf.js
module.exports ={
// ...
plugins: [
new webpack.DefinePlugin({
'process.env': env,
'BASE_URL': '"http://api.xxx.com:8080"'
})
],
// ...
}
開發(fā)環(huán)境:webpack.dev.conf.js
module.exports ={
// ...
plugins: [
new webpack.DefinePlugin({
'process.env': env,
'BASE_URL': '"http://test.api.xxx.com:8080"'
})
],
// ...
}
使用:
this.$http.get(BASE_URL + '/getData', function(data) {});
有個疑問就是,在測試環(huán)境(pre)域名應(yīng)該是pre.xxx.com,test環(huán)境域名應(yīng)該是test.xxx.com,光測試環(huán)境就兩個域名,這樣該怎么配置呢?
3.如何分環(huán)境進行打包?npm run build打包命令是在所有環(huán)境都用這個嘛?能不能在不同的環(huán)境使用不同的打包命令,比如我說的在測試環(huán)境npm run build:pre npm run build:fix這樣的?對于這個分環(huán)境打包的疑惑其實還是來源于第二條的接口地址在不同環(huán)境的配置問題。
以上是我在學(xué)習(xí)過程中遇到的問題,可能在大神們看來這些問題比較弱智,但是確實是困擾著我,還請大佬們指點一下子,感激......
以webpack為例子,在package.json 安裝這個插件
"dependencies": {
"generate-asset-webpack-plugin": "^0.3.0"
},
然后再webpack.prod.conf.js 里面 上面加入
// 讓打包的時候輸出可配置的文件
var GenerateAssetPlugin = require('generate-asset-webpack-plugin')
var createServerConfig = function (compilation) {
let cfgJson = {ApiUrl: '你的地址,可以設(shè)置默認(rèn)的生產(chǎn)環(huán)境地址'}
return JSON.stringify(cfgJson)
}
然后再plugins中加入
new GenerateAssetPlugin({
filename: 'config.json',
fn: (compilation, cb) => {
cb(null, createServerConfig(compilation))
},
extraFiles: []
})
這個插件
config.json是打包后會在dist中生成的文件,可在這里隨意配置api接口網(wǎng)址
下面配置跟你的一樣
生產(chǎn)環(huán)境:webpack.prod.conf.js
module.exports ={
// ...
plugins: [
new webpack.DefinePlugin({
'process.env': env,
'BASE_URL': '"http://api.xxx.com:8080"'
})
],
// ...
}
開發(fā)環(huán)境:webpack.dev.conf.js
module.exports ={
// ...
plugins: [
new webpack.DefinePlugin({
'process.env': env,
'BASE_URL': '"http://test.api.xxx.com:8080"'
})
],
// ...
}
獲取api方式,在main.js里面用異步請求方式,比如下面ajax
localStorage.setItem('apiUrl', process.env. BASE_URL)
if (process.env.NODE_ENV == 'production') {
$.ajax({
url: 'config.json',
type: 'GET',
async: false,
dataType: 'json',
cache: false,
success: function (data, textStatus, jqXHR) {
if (data.ApiUrl) {
localStorage.setItem('apiUrl', data.ApiUrl)
}
},
error: function (xhr, textStatus) {
}
})
}
這里可以判斷是生產(chǎn)環(huán)境還是開發(fā)環(huán)境,如果是開發(fā)環(huán)境,不會讀取config.json里面的地址,會讀取你dev里面的base_url
最后你就可以在任何地方用下面方式獲取地址了
`
localStorage.getItem('apiUrl')
`
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。