Vue2.0總結———vue使用過程常見的一些問題

Vue目前的的開發模式主要有兩種:
1.直接頁面級的開發,script直接引入Vue
2.工程性開發,webpack+loader或者直接使用腳手架工具Vue-cli,裏面的文件都配置好了css

webpack能夠進行配置,配置多文件入口,進行多頁面開發html

第二種Vue開發,結合webpack打包完文件會很大,怎麼解決這個問題?
1.webpack代碼拆分:code-spliting
2.提取公共(如提取css,js)
3.預渲染:使用prerender-spa-plugin插件
4.後臺————開啓壓縮,gzip (會頗有用)
5.異步加載組件:require.ensurevue

Vue常見錯誤解決方法:
1.[Vue-warn]: Missing required prop: "to"  (found in component <router-link>)
這個錯誤是<router-link>少了個to或者是寫錯 ,正確寫法爲:<router-link to="/home">
而且路由在作字符串拼接的時候,to要做爲一個屬性綁定 <router-link :to="'/home/'+item.id">webpack

2.端口衝突錯誤:須要改端口
  固然如今vue2.0中的webpack 已經本身會根據你的端口號進行改正,從8080日後面進行遞增,
  不會發生端口號衝突的狀況,在vue1.0中會常常出現ios

3.[Vue-warn]:Unknown custom element: <router-link> - did you register the component correctiy?
錯誤1:引進來的vue-router沒有use()
  import Vue from 'vue'
  import VueRouter from 'vue-router'
  Vue.use(VueRouter);
錯誤2:在生成路由實例以後,沒有將路由掛到咱們的Vue實例上面
const router=new VueRouter({
  mode:'history',//切換路徑模式,變成history模式,否則路徑爲/#/home
  scrollBehavior:()=>({ // 滾動條滾動的行爲,不加這個默認就會記憶原來滾動條的位置
    y:0
  }),
  // 注意這裏的名稱
  routes
});
new Vue({
  /* 4.最後掛到vue上 */
  router,
  el: '#app',
  render: h => h(App)
});web

4.Uncaught TypeError: _vuex2.default.store is not a constructor
  這個報錯的是_vuex2.default.store 不是一個構造函數
  由於在咱們用vuex的時候須要將用到的actions,mutations模塊最終導出,
  在導出的時候new Vuex.Store中的Store小寫了,這裏的必定要大寫,
  就至關於咱們在使用構造函數(類)的時候首字母要大寫vue-router

  import mutations from './mutations.js'
  import actions from './actions.js'vuex

  export default new Vuex.Store({ //Vue.Stroe()首字母大寫
    modules:{ //這裏注意mutations導出的是一個模塊
      mutations
    },
      actions
    });json

5. Moudel not found:Error:Can't resolve "style" in 'D:\vue-demo'
  在vue1.0中,在webpack.config.js中配置css文件時
  module:{
    loaders:[
      {
        test:/\.css$/,
        loader:'style!css'
      }
    ]
  }
在vue2.0中,在webpack.config.js中配置css文件時,必需要寫全,不能和vue1.0同樣簡寫
  module:{
    rules:[ //這裏改爲了rules
      {
        test:/\.css$/,
        loader:'style-loader!css-loader' //這裏必需要寫全,不能和vue1.0同樣簡寫
      }
    ]
  }axios

6.組件之間的通訊從1.0過渡到2.0時引起的錯誤:
vue1.0實現父子組件的通訊 -->經過props屬性-->而且子組件能夠更改父組件的數據 經過sync同步
  當在vue2.0裏面不容許直接給父級數據作更改,而且把這個方法.sync去掉了,
  當子組件再試圖更改父組件的數據時,就會報錯。
解決方法:
  1.$emit()——單一事件管理
    常常遇到的問題是找不到$emit()或$on(),這時須要單獨準備一個文件Store.js
    在文件裏面須要:var oEvent =new Vue();
    這個這個文件裏的數據必定要導出去纔可使用:export default oEvent


  2.對象之間的引用:(推薦使用)
    vue1.0傳數據:msg:'welcome' -->傳給子級
    vue2.0直接將數據定義成對象json的形式,這樣傳給子級的數據是對象的屬性,即msg.title
    這樣子級修改父級的數據,修改的也是這個對象的一個屬性msg.title
      msg:{
        title:'welcome'
      }
      msg.title

7.用vuex用來管理組件狀態:(增長/減小,顯示/隱藏)

 

8.axios目前不能夠use,由於axios裏面沒有install這個方法
使用axios的時候,能夠這樣來使用:
1.將axios導入文件
  import axios from 'axios'
2.將axios放入到Vue實例上面,這樣在其餘組件中,能夠直接經過this.$https.get/post使用
  在main.js中寫:Vue.prototype.$http = axios
  其餘組件能夠直接使用:
  this.$http.get('data.txt').then((res)=>{
    console.log(res.data);
  }).catch((err)=>{
    console.log(err);
  });

10) element.ui表頭點擊事件
  使用element.ui以後 @click="" 沒法對錶頭等元素添加點擊事件,正確的寫法應該是@click.native=""

 

11)webpack2.0 插件的配置須要放到 plugins裏面進行配置,不可放到rules裏面進行配置

https://www.cnblogs.com/yufann/p/Vue-Node10.html

相關文章
相關標籤/搜索