巧設publicPath,優雅適配生產環境要求
使用vue或者angular 2的同學肯定離不開webpack,vue-cli等配置構建工具的出現,更是解放了開發者不少的負擔。
1. vue-cli對靜態資源的默認行為
vue-cli默認將生產環境的靜態資源放在dist目錄下,html載入js、css或者css載入png或者svg等靜態資源時通常以dist目錄為根目錄,使用絕對路徑進行載入。
2. 實際遇到的問題
但是大多數app靜態資源並不會直接放到伺服器根目錄(以www.baidu.com為例),而是放在二級或者三級目錄下,如www.baidu.com/yunpan,這樣上面默認的配置將會導致載入不到對應靜態資源,打開Chrome Devtools會發現,下載js、css、png的url如下:
這些請求通通報錯404 Not found
多動手試一下,發現以下url的響應會是200 OK,得到實際需要的靜態資源
3. 原因以及解決方案
url-loader根據options的name屬性將靜態資源放置到對應目錄,同時對html或者css引用靜態資源的url進行修改,這也是vue-loader推薦大家自由放置靜態資源而不用關心生產環境url指向的原因。
但是遇到app部署到網站二級目錄的特殊場景,就自然而然地出現上面的問題。有人推薦修改/config/index.js中的config.build.assetsPublicPath為"",嘗試後發現只能修正html引用js、css的問題,不能修正css引用image、iconfont等靜態資源的問題。
實際上,你無須改變config.build.assetsPublicPath,只需要在/build/webpack.prod.conf.js中output增加publicPath,將其置為"/yunpan/"即可。
※PHP設計模式:簡單工廠
※《基於Node.js實現簡易聊天室系列之詳細設計》
※libpng處理png圖片(二)
※我們用了不到200行代碼實現的文件日誌系統,極佳的IO性能和高並發支持,附壓力測試數據
TAG:科技優家 |
※如何用適配器使VirtualLink介面顯卡支持Oculus Rift頭
※蘋果宣布iWork套件更新:適配Apple Pencil
※Spotify正式推出適配Apple Watch的APP
※iPhoneX適配不理想?蘋果要求所有App必須適配iPhoneX!
※Valve Index支持VirtualLink,但要額外購買適配器
※如何用適配器使VirtualLink介面顯卡支持Oculus Rift頭顯
※如何為Oculus Rift設置TPCast無線適配器指南
※Valve砍掉Index頭顯VirtualLink適配器
※V社取消Index VirtualLink適配器
※Inclusive Technology發布通過滑鼠操縱iOS設備的適配器
※DisplayLink為Oculus Rift研發60GHz無線適配器參考設計
※App Store新規:iOS所有應用將必須適配iPhone X
※如何創建Istio Mixer適配器——來自Circonus公司的分享
※亞馬遜Alexa終於適配蘋果iPhone X
※Electra越獄工具:適配iOS,帶Cydia
※Valve:Knuckles完全支持Vive無線適配器
※Jolla Sailfish 3發布:將適配索尼Xperia XA2
※外國公司Innerexile開啟ThunderMag磁吸適配器眾籌
※Valve終放棄VR頭顯VirtualLink適配器
※iOS開發 適配iPhoneX/iPhoneXr/iPhoneXs/iPhonexs max