Vue2.0使用過程常見的一些問題總結(jié)學(xué)習(xí)
最近在學(xué)習(xí)Vue,今天正好寫個學(xué)習(xí)筆記,把以前遇到的錯誤給總結(jié)一下。
Vue目前的的開發(fā)模式主要有兩種:
1.直接頁面級的開發(fā),script直接引入Vue
2.工程性開發(fā),webpack+loader或者直接使用腳手架工具Vue-cli,里面的文件都配置好了
webpack可以進(jìn)行配置,配置多文件入口,進(jìn)行多頁面開發(fā)
第二種Vue開發(fā),結(jié)合webpack打包完文件會很大,怎么解決這個問題?
1.webpack代碼拆分:code-spliting
2.提取公共(如提取css,js)
3.預(yù)渲染:使用prerender-spa-plugin插件
4.后臺————開啟壓縮,gzip (會很有用)
5.異步加載組件:require.ensure
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">
2.端口沖突錯誤:需要改端口
當(dāng)然現(xiàn)在vue2.0中的webpack 已經(jīng)自己會根據(jù)你的端口號進(jìn)行改正,從8080往后面進(jìn)行遞增,不會發(fā)生端口號沖突的情況,在vue1.0中會經(jīng)常出現(xiàn)
3.[Vue-warn]:Unknown custom element: <router-link> - did you register the component correctiy?
錯誤1:引進(jìn)來的vue-router沒有use()
import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter);
錯誤2:在生成路由實(shí)例之后,沒有將路由掛到我們的Vue實(shí)例上面
const router=new VueRouter({ mode:'history',//切換路徑模式,變成history模式,不然路徑為/#/home scrollBehavior:()=>({ // 滾動條滾動的行為,不加這個默認(rèn)就會記憶原來滾動條的位置 y:0 }), // 注意這里的名稱 routes }); new Vue({ /* 4.最后掛到vue上 */ router, el: '#app', render: h => h(App) });
4.Uncaught TypeError: _vuex2.default.store is not a constructor
這個報錯的是_vuex2.default.store 不是一個構(gòu)造函數(shù),因為在我們用vuex的時候需要將用到的actions,mutations模塊最終導(dǎo)出,在導(dǎo)出的時候new Vuex.Store中的Store小寫了,這里的一定要大寫,就相當(dāng)于我們在使用構(gòu)造函數(shù)(類)的時候首字母要大寫
import mutations from './mutations.js' import actions from './actions.js' export default new Vuex.Store({ //Vue.Stroe()首字母大寫 modules:{ //這里注意mutations導(dǎo)出的是一個模塊 mutations }, actions });
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一樣簡寫 } ] }
6.組件之間的通信從1.0過渡到2.0時引發(fā)的錯誤:
vue1.0實(shí)現(xiàn)父子組件的通信 -->通過props屬性-->并且子組件可以更改父組件的數(shù)據(jù) 通過sync同步
當(dāng)在vue2.0里面不允許直接給父級數(shù)據(jù)做更改,并且把這個方法.sync去掉了,
當(dāng)子組件再試圖更改父組件的數(shù)據(jù)時,就會報錯。
解決方法:
1.$emit()——單一事件管理
經(jīng)常遇到的問題是找不到$emit()或$on(),這時需要單獨(dú)準(zhǔn)備一個文件Store.js
在文件里面需要:var oEvent =new Vue();
這個這個文件里的數(shù)據(jù)一定要導(dǎo)出去才可以使用:export default oEvent
2.對象之間的引用:(推薦使用)
vue1.0傳數(shù)據(jù):msg:'welcome' -->傳給子級
vue2.0直接將數(shù)據(jù)定義成對象json的形式,這樣傳給子級的數(shù)據(jù)是對象的屬性,即msg.title
這樣子級修改父級的數(shù)據(jù),修改的也是這個對象的一個屬性msg.title
msg:{ title:'welcome' } msg.title
7.用vuex用來管理組件狀態(tài):(增加/減少,顯示/隱藏)
8.axios目前不可以use,因為axios里面沒有install這個方法
使用axios的時候,可以這樣來使用:
1.將axios導(dǎo)入文件
import axios from 'axios'
2.將axios放入到Vue實(shí)例上面,這樣在其他組件中,可以直接通過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表頭點(diǎn)擊事件
使用element.ui之后 @click="" 無法對表頭等元素添加點(diǎn)擊事件,正確的寫法應(yīng)該是@click.native=""
11.webpack2.0 插件的配置需要放到 plugins里面進(jìn)行配置,不可放到rules里面進(jìn)行配置
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue中計算屬性和監(jiān)聽屬性及數(shù)據(jù)的響應(yīng)式更新和依賴收集基本原理講解
computed是vue的配置選項,它的值是一個對象,其中可定義多個計算屬性,每個計算屬性就是一個函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計算屬性computed的詳細(xì)講解,需要的朋友可以參考下2023-03-03Vue 多選框所選數(shù)量動態(tài)變換Box的高度
在Web開發(fā)中,使用Vue.js框架可以通過ref屬性、v-model指令和計算屬性等特性實(shí)現(xiàn)元素高度的動態(tài)調(diào)整,文章詳細(xì)介紹了如何利用Vue的功能根據(jù)多選框的選擇數(shù)量動態(tài)改變元素的高度,并通過多個示例展示其應(yīng)用2024-09-09Vue使用vue-recoure + http-proxy-middleware + vuex配合promise實(shí)現(xiàn)基本
這篇文章主要介紹了Vue使用vue-recoure + http-proxy-middleware + vuex配合promise實(shí)現(xiàn)基本的跨域請求封裝問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10Vue.js常用指令之循環(huán)使用v-for指令教程
這篇文章主要跟大家介紹了關(guān)于Vue.js常用指令之循環(huán)使用v-for指令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06VUEJS實(shí)戰(zhàn)之利用laypage插件實(shí)現(xiàn)分頁(3)
這篇文章主要為大家詳細(xì)介紹了VUEJS實(shí)戰(zhàn)之修復(fù)錯誤并且美化時間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06vue select組件的使用與禁用實(shí)現(xiàn)代碼
這篇文章主要介紹了vue--select組件的使用與禁用的實(shí)現(xiàn)代碼,非常不錯,具有參考借鑒價值 ,需要的朋友可以參考下2018-04-04Vue中靈活拖拽的前端神器VueDraggablePlus的用法詳解
這篇文章主要介紹了一款功能強(qiáng)大、靈活易用的前端組件VueDraggablePlus,作為前端工程師,我們經(jīng)常會遇到需要實(shí)現(xiàn)拖拽功能的場景,而VueDraggablePlus正是為了解決這一痛點(diǎn)而誕生的,讓我們一起來看看它的特點(diǎn)和用法吧2024-03-03