詳解Vue3.0 + TypeScript + Vite初體驗(yàn)
項(xiàng)目創(chuàng)建
npm:
$ npm init vite-app <project-name> $ cd <project-name> $ npm install $ npm run dev
or yarn:
$ yarn create vite-app <project-name> $ cd <project-name> $ yarn $ yarn dev
項(xiàng)目結(jié)構(gòu)

main.js

在個(gè)人想法上,我覺得createApp()是vue應(yīng)用的實(shí)例,createApp支持鏈?zhǔn)秸{(diào)用
App.vue:

這是兼容vue2.0的語法,下面是vue3.0 rfc寫法(還處于實(shí)驗(yàn)性階段)。
rfc官方說明
setup
data

setup是結(jié)合了vue2.0的created生命周期函數(shù)和data還有methods(后面會(huì)提到)
可直接 export 屬性(data)和方法(methods)

可以看出現(xiàn)在的name不是響應(yīng)式的,后面會(huì)介紹響應(yīng)式
methods

methods也是跟data一樣,直接export
效果:

Composition API
ref
聲明:

Ref可將一些基本屬性變成響應(yīng)式

reactive

上圖是reactive和ref混合使用,至于效果,請(qǐng)各自復(fù)制下方代碼體驗(yàn)
<template>
<div id="app">
<div v-for="(item, index) in state.persons" :key="index">
{{ item.name }}是{{ item.age }}歲
</div>
<div>
<h3>修改zhangsan的年齡</h3>
<input type="text" v-model="zAge" />
</div>
</div>
</template>
<script lang="ts" setup="props, {emit}">
import { reactive, ref } from 'vue'
export const zAge = ref(12)
export const state = reactive({
persons: [
{
name: 'zhangsan',
age: zAge
},
{
name: 'lisi',
age: 20
}
]
})
</script>
computed
聲明:

效果:

watchEffect
聲明:

效果:

組件系統(tǒng)
全局注冊(cè)
App.vue

main.js

局部注冊(cè)
App.vue

setup
props

聲明props對(duì)象,在watchEffect中,console.log(props.msg)是可以看到父組件傳的值。props的默認(rèn)值和過濾在研究中。具體作用參考vue2.0 props作用
context

組件上下文
emit

聲明emit函數(shù),在setup="props, { emit }"要寫上emit,不然會(huì)報(bào)錯(cuò),具體作用參考vue2.0 emit作用。


這是使用emit函數(shù)的一些例子。
attrs
研究ing…
slots
研究ing…
vue指令
重點(diǎn)講v-model,其他vue指令與2.0一樣
v-model

vue3.0開始支持多個(gè)雙向綁定的參數(shù),這是vue2.0沒有的,v-model后面沒有跟其他屬性的話,那么在這個(gè)組件內(nèi)部它的默認(rèn)值是modelValue,如果想更新v-model,那么就需要emit('update:modelValue', data)去更新v-model的默認(rèn)值modelValue。那么v-model后面有屬性的話(dragValue),那么在這個(gè)組件內(nèi)部它的值就是這個(gè)屬性名(dragValue),如果想更新v-model:dragValue的值,就需要emit('update:dragValue', data)去更新v-model自定義的值。
更多的用法參考官方的文檔:https://github.com/vuejs/rfcs/blob/sfc-improvements/active-rfcs/0000-sfc-script-setup.md
到此這篇關(guān)于詳解Vue3.0 + TypeScript + Vite初體驗(yàn)的文章就介紹到這了,更多相關(guān)Vue3.0 TypeScript Vite內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中$emit傳遞多個(gè)參(arguments和$event)
本文主要介紹了vue中$emit傳遞多個(gè)參(arguments和$event),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Vue項(xiàng)目優(yōu)化的一些實(shí)戰(zhàn)策略
代碼優(yōu)化不僅僅局限在業(yè)務(wù)邏輯這塊,像是代碼復(fù)用、效率等等都是我們可以加以改進(jìn)的地方,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目優(yōu)化的一些實(shí)戰(zhàn)策略,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Vue查詢數(shù)據(jù)并通過bootstarp?table渲染數(shù)據(jù)
這篇文章主要為大家介紹了Vue查詢數(shù)據(jù)并通過bootstarp?table渲染數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
Vue3 + Vue-PDF 實(shí)現(xiàn)PDF 文件在線預(yù)覽實(shí)戰(zhàn)
這篇文章主要介紹了Vue3 + Vue-PDF 實(shí)現(xiàn)PDF 文件在線預(yù)覽實(shí)戰(zhàn),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
Vue實(shí)現(xiàn)導(dǎo)航欄點(diǎn)擊當(dāng)前標(biāo)簽變色功能
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)導(dǎo)航欄點(diǎn)擊當(dāng)前標(biāo)簽變色功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
解決element-ui的table表格控件表頭與內(nèi)容列不對(duì)齊問題
這篇文章主要介紹了解決element-ui的table表格控件表頭與內(nèi)容列不對(duì)齊問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
使用Vue和React分別實(shí)現(xiàn)錨點(diǎn)定位功能
這篇文章主要為大家詳細(xì)介紹了如何使用Vue和React分別實(shí)現(xiàn)錨點(diǎn)定位功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以學(xué)習(xí)一下2024-01-01
vue打包c(diǎn)hunk-vendors.js文件過大導(dǎo)致頁面加載緩慢的解決
這篇文章主要介紹了vue打包c(diǎn)hunk-vendors.js文件過大導(dǎo)致頁面加載緩慢的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04

