最近一直在學(xué)習(xí)vue.js,之前使用vue用的是js引入,沒有用到打包?,F(xiàn)在想學(xué)習(xí)使用vue webpack這種開發(fā)模式寫一個(gè)小demo,在此之前查詢過很多資料,也閱讀過一些大神的博客,但是還是對一些問題不是很清楚,具體問題如下:
1.npm run ruild后將打包后的靜態(tài)文件放到線上服務(wù)器,那么咱們在開發(fā)后要放到測試服務(wù)器的也是打包后的dist文件嗎?
2.關(guān)于不同環(huán)境的接口地址問題:由于公司在測試過程中分為不同的環(huán)境(pre fix),本地開發(fā)的時(shí)候是在pre環(huán)境,那么在接口調(diào)用的時(shí)候地址該怎能么配置呢?看到有的大神回答是在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) {});
有個(gè)疑問就是,在測試環(huán)境(pre)域名應(yīng)該是pre.xxx.com,test環(huán)境域名應(yīng)該是test.xxx.com,光測試環(huán)境就兩個(gè)域名,這樣該怎么配置呢?
3.如何分環(huán)境進(jìn)行打包?npm run build打包命令是在所有環(huán)境都用這個(gè)嘛?能不能在不同的環(huán)境使用不同的打包命令,比如我說的在測試環(huán)境npm run build:pre npm run build:fix這樣的?對于這個(gè)分環(huán)境打包的疑惑其實(shí)還是來源于第二條的接口地址在不同環(huán)境的配置問題。
以上是我在學(xué)習(xí)過程中遇到的問題,可能在大神們看來這些問題比較弱智,但是確實(shí)是困擾著我,還請大佬們指點(diǎn)一下子,感激......
以webpack為例子,在package.json 安裝這個(gè)插件
"dependencies": {
"generate-asset-webpack-plugin": "^0.3.0"
},
然后再webpack.prod.conf.js 里面 上面加入
// 讓打包的時(shí)候輸出可配置的文件
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: []
})
這個(gè)插件
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è)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。