gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

vue3和vue2的語法有什么區別

vue3和vue2的語法區別:1、vue2使用的是webpack形式去構建項目,而vue3使用vite構建項目;2、vue2中可以使用pototype的形式去進行操作,引入的是構造函數,而vue3中需要使用結構的形式進行操作,引入的是工廠函數。

vue3和vue2的語法有什么區別

本教程操作環境:windows10系統、Vue3版、Dell G3電腦。

vue3和vue2的語法有什么區別

1.webpack和vite

vue2使用的是webpack形式去構建項目

webpack是一開始是入口文件,然后分析路由,然后模塊,最后進行打包,然后告訴你,服務器準備好了可以開始干了

vue3使用vite構建項目

先告訴你服務器準備完成,然后等你發送HTTP請求,然后是入口文件,Dynamic import(動態導入)code split point(代碼分割)

最大的好處和區別就是為了讓項目中一些代碼文件多了以后去保存更新數據時更快能夠看到實際效果,也就是所謂的(熱更新)

2.main.js文件

vue2中我們可以使用pototype(原型)的形式去進行操作,引入的是構造函數

vue3中需要使用結構的形式進行操作,引入的是工廠函數

vue3中app組件中可以沒有根標簽

3.setup函數

setup函數必須要return 返回出去

<script>  export default {   name: 'appName',   setup(){   //變量    let name = '打工仔'    let age = 18    //方法    function say(){     console.log(`我只是一個${name},今年${age}歲`)    }    //返回一個對象    return {     name,     age,     say    }   }  } </script>

你會發現當前的${name}中name不需要使用this去進行操作,this的作用只不過是取到某個作用域中變量而已,而setup函數提供了當前只在這個作用域中

這時候就很不爽了,那豈不是每次我定義的變量和方法都需要return,vue3中給我們提供了

在script標簽上添加setup 如:<script setup></script>,相當在編譯運行時放到了setup中

注:setup比beforeCreate、created生命周期更早,也就是說在當前直接用this去獲取data中的數據打出來的還是undefined

setup語法中課接收2個參數setup(props,context)

都知vue2中this.$attrs,this.$slots,this.$emit等同context中attrs,slots,emit

注:當我們只接受一個參數時,頁面會提示警告,但是不影響使用

4.指令與插槽

vue2中使用slot可以直接使用slot,而vue3中必須使用v-slot的形式

v-for與v-if在vue2中優先級高的是v-for指令,而且不建議一起使用

vue3中v-for與v-if,只會把當前v-if當做v-for中的一個判斷語句,不會相互沖突

vue3中移除keyCode作為v-on的修飾符,當然也不支持config.keyCodes

vue3中移除v-on.native修飾符

vue3中移除過濾器filter

5.ref與reactive

ref

把數據變為響應式數據,ref把它們變成了對象,如果我們直接去操作代碼是修改不了的,你會發現當前name和age還是通過get和set修改頁面,這時你需要使用.value,并且ref還是Refimpl

<template>   <div class="home">     <h1>姓名:{{name}}</h1>     <h1>年齡:{{age}}</h1>     <button @click="say">修改</button>   </div> </template> <script> import {ref} from 'vue' export default {   name: 'Home',   setup(){     let name = ref('中介')     let age = ref(18)     console.log(name)     console.log(age)     //方法     function say(){       name='波妞'       age=18     }     return {       name,       age,       say     }   } } </script>

這樣的話那我們在頁面上不是得{{name.value}}來做顯示,實際不用這樣的,在我們vue3中會檢測到你的ref是對象,自動會給你加上.value,如果我們自己定義的ref對象,實例會變為refimpl,這個時候用XX.value.XX進行修改

<template>   <div class="home">     <h1>姓名:{{name}}</h1>     <h1>年齡:{{age}}</h1>     <h2>職業:{{job.occupation}}</h2>     <h2>薪資:{{job.salary}}</h2>     <button @click="say">修改</button>   </div> </template> <script> import {ref} from 'vue' export default {   name: 'Home',   setup(){     let name = ref('中介')     let age = ref(18)     let job=ref({       occupation:'程序員',       salary:'10k'     })     console.log(name)     console.log(age)     //方法     function say(){       job.value.salary='12k'     }     return {       name,       age,       job,       say     }   } } </script>

這時我們打印obj.value,他已經不再是refimpl對象,變成了proxy對象,因為vue3底層是proxy對象,基本數據類型都是按Object.defineProperty里面get和set進行數據劫持,vue3已經把reactive封裝進去了,相當于我們在調用ref時,會自動調用reactive

reactive

上面我們說ref里面的對象會調用reactive,把Object轉換為Proxy,現在我們直接通過reactive變成Proxy,它進行了一個深層次的響應式

<template>   <div class="home">     <h1>姓名:{{name}}</h1>     <h1>年齡:{{age}}</h1>     <h2>職業:{{job.occupation}}<br>薪資:{{job.salary}}</h2>     <h3>愛好:{{hobby[0]}},{{hobby[1]}},{{ hobby[2] }}</h3>     <button @click="say">修改</button>   </div> </template> <script> import {ref,reactive} from 'vue' export default {   name: 'Home',   setup(){     let name = ref('波妞')     let age = ref(18)     let job=reactive({       occupation:'程序員',       salary:'10k'     })     let hobby=reactive(['吃飯','睡覺','打豆豆'])     console.log(name)     console.log(age)     //方法     function say(){       job.salary='12k'       hobby[0]='學習'     }     return {       name,       age,       job,       say,       hobby     }   } } </script>

這時你肯定會覺得方法太多了,還不如使用ref提供的.value,是不是感覺爽爽爽,但是有一個問題,如果有一堆數據那不是要一直去.value,點到冒煙,這個時候你可以用模擬vue2中data的形式,就會感覺更香

<template>   <div class="home">     <h1>姓名:{{data.name}}</h1>     <h1>年齡:{{data.age}}</h1>     <h2>職業:{{data.job.occupation}}<br>薪資:{{data.job.salary}}</h2>     <h3>愛好:{{data.hobby[0]}},{{data.hobby[1]}},{{ data.hobby[2] }}</h3>     <button @click="say">修改</button>   </div> </template> <script> import {reactive} from 'vue' export default {   name: 'Home',   setup(){     let data=reactive({       name:'波妞',       age:18,       job:{         occupation:'程序員',         salary:'10k'       },       hobby:['吃飯','睡覺','打豆豆']     })     //方法     function say(){       data.job.salary='12k'       data.hobby[0]='學習'     }     return {       data,       say,     }   } } </script>

ref與reactive區別

ref定義的是基本數據類型

ref通過Object.defineProperty()的get和set實現數據劫持

ref操作數據.value,讀取時不需要。value

reactive定義對象或數組數據類型

reactive通過Proxy實現數據劫持

reactive操作和讀取數據不需要.value

6.vue3的響應式原理

vue2的響應式原理用Object.defineProperty的get和set進行數據劫持,從而實現響應式

vue2中只有get和set方法去進行屬性的讀取和修改操作,當我們進行新增,刪除時,頁面不會實時更新

直接通過下標改數組,頁面也不會實時更新

vue3中響應式原理使用Proxy進行代理,使用window內置對象Reflect反射,學了Es6的語法的就知道我們在使用Proxy進行代理,好比甲方公司給出需要什么技術的前端攻城獅,讓乙方去干招聘、面試等環節

Proxy可以攔截對象中任意的屬性變化,當然包括讀寫,添加,刪除等

Reflect對源對象屬性進行操作

const p=new Proxy(data, { // 讀取屬性時調用 get (target, propName) { return Reflect.get(target, propName) }, //修改屬性或添加屬性時調用 set (target, propName, value) { return Reflect.set(target, propName, value) }, //刪除屬性時調用 deleteProperty (target, propName) { return Reflect.deleteProperty(target, propName) } })

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
亚洲精品久久久中文字幕| 无码人妻精品一区二区三区99v| 成人综合久久网| 丰满人妻中伦妇伦精品app| 视色,视色影院,视色影库,视色网| 国产a级片免费观看| 国产精品宾馆在线精品酒店| 国产九九九九九| 男人日女人视频网站| 日本韩国欧美在线观看| www.com毛片| 国产情侣av自拍| 日本va中文字幕| 91插插插插插插插插| 亚洲欧美偷拍另类| 欧美性视频在线播放| 久久精品一卡二卡| 九一免费在线观看| 日日摸日日碰夜夜爽av| 午夜视频在线瓜伦| 91热视频在线观看| 免费看日本毛片| av网站在线不卡| 大桥未久一区二区三区| 香港三级韩国三级日本三级| 男人天堂999| 日本在线观看视频一区| 国产在线观看欧美| 色欲av无码一区二区人妻| 天天操,天天操| 精品一二三四五区| 日韩欧美xxxx| 警花观音坐莲激情销魂小说| 亚洲熟妇无码一区二区三区导航| 熟妇人妻无乱码中文字幕真矢织江| 成人av毛片在线观看| 国产一区二区三区播放| 欧美,日韩,国产在线| 亚洲精品性视频| 免费在线观看亚洲视频| 免费av不卡在线| 日本韩国欧美在线观看| 手机成人av在线| 丰满少妇在线观看| 日韩a级黄色片| 一区二区三区入口| 国产av熟女一区二区三区| 五月天婷婷激情视频| 国产青草视频在线观看| 杨幂毛片午夜性生毛片| 亚洲中文字幕无码av永久| 亚洲高清在线不卡| 国产一区亚洲二区三区| 国产片侵犯亲女视频播放| 亚洲xxx在线观看| 日本wwww视频| 欧美一级欧美一级| 国产一级大片免费看| 色姑娘综合天天| 国产精品嫩草影院8vv8 | 国产精品国产亚洲精品看不卡| 亚洲综合123| 亚洲精品成人在线播放| 色噜噜狠狠一区二区| 精品少妇无遮挡毛片| 97国产精东麻豆人妻电影| 欧美性潮喷xxxxx免费视频看| 男人的天堂成人| 91视频福利网| 永久av免费在线观看| 国产免费色视频| 国产一区一区三区| 特级黄色片视频| 小说区视频区图片区| 成人性做爰片免费视频| 在线无限看免费粉色视频| 污视频在线观看免费网站| 亚洲国产欧美91| 日韩欧美一级在线| 国产激情片在线观看| www.avtt| 免费日韩视频在线观看| 国产精品igao| 日本一区二区三区四区五区六区| 成人午夜免费剧场| 国产真人做爰毛片视频直播 | 亚洲 欧美 日韩 国产综合 在线 | 国产精品亚洲天堂| 91免费黄视频| 成年人观看网站| 校园春色 亚洲色图| youjizz.com亚洲| 波多野结衣综合网| 麻豆三级在线观看| 台湾无码一区二区| 日本va中文字幕| 欧美另类videosbestsex日本| 欧美在线观看www| 中文字幕12页| 日本欧美黄色片| 日本人69视频| 91视频 -- 69xx| 操人视频免费看| 波多野结衣综合网| 九九九久久久久久久| 成年人免费在线播放| 日本高清免费在线视频| 虎白女粉嫩尤物福利视频| 91香蕉国产线在线观看| 欧美深夜福利视频| 国内av免费观看| 五月天亚洲视频| 色综合av综合无码综合网站| 精品久久免费观看| 亚洲一级免费观看| 国产精品后入内射日本在线观看| 一级一片免费播放| 亚洲xxx在线观看| 美女网站免费观看视频| 日本欧美黄色片| 欧美黄网在线观看| 91九色国产ts另类人妖| 欧美三级午夜理伦三级富婆| 成年人视频在线免费| 一本久道高清无码视频| 1314成人网| 午夜影院免费观看视频| 日韩一区二区三区久久| 黑人粗进入欧美aaaaa| 日本在线观看a| 欧美性久久久久| 久久久久久久久久久久久国产精品| 人人妻人人澡人人爽欧美一区| 91香蕉国产线在线观看| 99九九99九九九99九他书对| 少妇激情一区二区三区| www.涩涩涩| 亚洲这里只有精品| 国产传媒免费观看| 婷婷视频在线播放| 日韩精品第1页| 热久久最新网址| 99色这里只有精品| 欧美a在线视频| 天天爽天天爽夜夜爽| 久久久精品麻豆| 欧美在线a视频| 天堂а√在线中文在线| 91精品国产三级| 亚洲区成人777777精品| 欧美成人三级在线视频| 免费国产成人av| 午夜激情影院在线观看| 人妻激情另类乱人伦人妻| 国产原创中文在线观看| 少妇黄色一级片| 裸体裸乳免费看| 大肉大捧一进一出好爽视频| 国产三级三级看三级| 欧美一级爱爱视频| 国产91在线视频观看| 天天干天天色天天干| 国产精彩视频一区二区| 日本va中文字幕| 黄色网在线视频| 免费黄色特级片| aaa免费在线观看| 日批视频在线免费看| 青青草原播放器| 看欧美ab黄色大片视频免费| 可以免费看的黄色网址| 无人在线观看的免费高清视频| 成人高清在线观看视频| 成人免费无码av| 成人免费毛片在线观看| 第四色婷婷基地| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 性生交免费视频| 青青在线视频免费观看| 一起操在线视频| 日本成年人网址| 国产黄色激情视频| 久久婷婷中文字幕| 成人性生交免费看| 成年人免费在线播放| 欧美又粗又长又爽做受| 看全色黄大色大片| 久久成年人网站| 亚洲欧美自拍另类日韩| 免费裸体美女网站| 玩弄中年熟妇正在播放| 中文字幕人妻熟女人妻洋洋| 亚洲天堂网站在线| 亚洲黄色av片| 日韩欧美理论片| 国产探花在线观看视频| 中文字幕中文在线| 香港日本韩国三级网站| 天堂网在线免费观看| 日本888xxxx|