最近在學習vue,碰到一些問題記錄下來,有些問題花了很長時間去找答案。順便記錄下來吧。
一.vue基礎
1.在vue組件中,template標簽下只能有一對根標簽.?
2.router-view標簽默認指向router文件夾下的index.js
3.在組件中:<style scoped lang="stylus"></style>,這里的scoped,會限制該標簽中的樣式只針對當前組件生效。碰到css樣式無法更改的時候,要注意是否為scoped限制。
三.關于axios:
1.在main.js中如下聲明使用 import axiosfrom'axios'; Vue.prototype.$axios=axios; 那么在其他vue組件中就可以this.$axios調用使用參見:axios不支持vue.use()方式聲明使用
2.本地訪問php等接口出現跨域問題(由于端口號不同等造成):
解決:在請求的php文件中加入:header("Access-Control-Allow-Origin: *");
? ? ? ? ? ?*--通配所有,允許任意域名發起的跨域請求
四.webpack相關
?1.npm run build運行后的dist文件夾,無法直接運行。
解決:在webpack.prod.conf.js文件中的webpackConfig找到output,添加一項publicPath: './'然后重新打包
2. npm5.4存在bug:
在github的npm上找了很久,發現解決方法。npm5.4存在bug,回滾到5.3或者5.03可以解決:npm install npm@5.0.3 -g 。連接:Error: EPERM: operation not permitted on npm 5.4 on windows #18380
3.配置打包后的文件結構&單獨配置CSS相對路徑
vue-cli打包后默認的文件結構為:
問題:要去掉static這一層文件夾?
在config>index.js 文件中,有兩項默認配置:assetsSubDirectory:'static',assetsPublicPath:'/'。靜態文件夾名稱為:static, 靜態文件夾的路徑:根目錄。修改這兩項為:assetsSubDirectory:' ',assetsPublicPath:'/'。在打包編譯,生成的dist文件夾結構就變為:
沒完,此時運行編譯后的項目css背景地址會報錯。在build>utils.js 文件中,ExtractTextWebpackPlugin 提供了一個options.publicPath的API, 可以為css單獨配置publicPath。vue-cli此項默認配置為:publicPath:'../../',即css中的地址需要向上找兩層。我們現在去掉了static文件夾,那么我們修改為publicPath:'../'。再次打包編譯后css背景地址就可以正常找到。 這里可以參見Vue-cli 構建項目 的`.vue`組件中, scss中添加背景圖路徑問題
五.動態添加dom
需求:點擊按鈕插入dom模板?
首先想到的是用原生JS,追加html。
var row='? ' ,? document.getElementById('windsList').innerHTML+=row 。發現追加后的dom,沒有被編譯,不能使用vue的相關指令。這條路暫時走不通。
Vue文檔里面有沒有提供相應的方法呢?在找了一些答案后,發現‘vue.extend’? 好像可以解決我的問題。官方文檔vue.extend
按照文檔里的方法嘗試插入dom,發現控制臺報錯:
大概的意思就是,讓我用Runtime + Compiler模式。可是我不想重新建項目,這里找到了答案:Vue 2.0 升(cai)級(keng)之旅 ? 引入Vue的路徑改為'vue/dist/vue.js'即可,也就是import vue from 'vue/dist/vue.js'。那么就可以在webpack.config.js中設置別名,然后我們又可以importVuefrom'vue' 了。
CSS相關:
DPR:移動web開發之像素和DPR? ?移動端適配- dpr淺析
PPI(Pixels Per Inch):像素密度,所表示的是每英寸所擁有的像素數量。
Iphone各型號(包括最近iphoneX,iphone8)的尺寸和DPR:The Ultimate Guide To iPhone Resolutions: