1、構建工具vite
(1)、打包工具選擇rollupe
(2)、很多核心包是使用go語言寫的
2、響應式原理是不一樣的
vue2使用defineProperty實現(xiàn)
vue3使用proxy實現(xiàn)
3、api不同
(1)路由不一樣
import {createRouter,createWebHashHistory} from 'vue-router'
import Home from './page/Home.vue'
import About from './page/About.vue'
const routes = [
{
path: "/home",
name: "home",
meta: {
keepAlive: true //設置頁面是否需要使用緩存
},
component: () => import("./page/Home.vue")
},
{
path: "/about",
name: "about",
meta: {
keepAlive: true //設置頁面是否需要使用緩存
},
component: () => import("./page/About.vue")
}
]
const router = createRouter({
history:createWebHashHistory(),
routes
})
export default router
(2)創(chuàng)建實例
new App({})--->createApp
(3)keep-alive
<keep-alive>包裹元素</keep-alive>
--->
<!-- vue3.0配置 -->
<router-view v-slot="{ Component }">
<keep-alive>
<component :is="Component" :key="$route.path" v-if="$route.meta.keepAlive"/>
</keep-alive>
<component :is="Component" :key="$route.path" v-if="!$route.meta.keepAlive"/>
</router-view>
{
path: "/home",
name: "home",
meta: {
keepAlive: true //設置頁面是否需要使用緩存
},
component: () => import("./page/Home.vue")
}
(4)聲明一個狀態(tài)
必須使用ref 和reactive使一個普通的數(shù)據(jù)變成響應式對象,即狀態(tài)
(5)生命周期
on-原生命周期,參數(shù)為回調(diào)函數(shù),邏輯在回調(diào)函數(shù)中執(zhí)行
(6)script標簽寫法上的不同
<script>
export default{}
<script>
--->
- a
<script>
export default{
setup(){
return { msg,add }
}
}
<script>
- b
<script setup>
import { ref } from 'vue'
let msg = ref('')
<script>
(7)偵聽props變化
watch(()=>props.msg,(newValue,oldValue)=>{
console.log(newValue,'監(jiān)測props變化')
})
(8)狀態(tài)偵聽
watch(()=>state.msg,(newValue,oldValue)=>{
console.log(newValue,'監(jiān)測props變化')
})
watch([()=>person.name,()=>person.age],([newName,newAge],[oldName,oldAge])=>{
console.log([newName,newAge],'監(jiān)測props變化')
})
watchEffect(()=>{
//使用到哪個狀態(tài),當哪個狀態(tài)發(fā)生改變的時候就會觸發(fā)該回調(diào)函數(shù)
})