Vue3中使用jsx/tsx的教程詳解
首先,恭喜一下 React,再過 4 個月,就達(dá)成了兩年無更新記錄

反觀隔壁的 Vue,穩(wěn)定迭代更新

之前寫 React 的時候,最喜歡的是 JSX/TSX 語法,把 HTML 組件當(dāng)做 JavaScript/TypeScript 代碼片段處理
const App: React.FC<AppProps> = ({ title }) => {
const [count, setCount] = useState<number>(0);
// ??????
return (
<div>
<h1>{title}</h1>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
轉(zhuǎn)戰(zhàn) Vue 之后,最痛苦的是沒辦法利用 TSX 語法靈活創(chuàng)建組件。
最常見的例子是,當(dāng)我有一個數(shù)據(jù)表格,需要自定義字段的組件時,得用 h() 函數(shù)來創(chuàng)建:
<script lang="ts" setup>
//...
const createColumns = () => {
return [
{
title: 'Action',
key: 'actions',
render (row) {
/* ?????? */
return h(
NButton,
{
strong: true,
tertiary: true,
size: 'small',
onClick: () => play(row)
},
{ default: () => 'Play' }
)
}
}
]
}
//...
</script>
h() 麻煩,低頻使用情況下,每次都得查一遍文檔。
最近發(fā)現(xiàn) Vue3 原來是支持 JSX & TSX 的!
官方文檔: vuejs.org/guide/extras/render-function.html#jsx-tsx
在 Vue3 中集成 JSX & TSX 相對簡單,安裝插件:
npm install @vue/babel-plugin-jsx -D
將 babel 文件中配置:
{
"plugins": ["@vue/babel-plugin-jsx"]
}
如果項(xiàng)目用 TypeScript,則在 tsconfig.json 中配置:
{
"compilerOptions": {
"jsx": "preserve"
}
}
注意:這里以 babel 舉例,如果是其他工具鏈,比如 Vite、Nuxt 的話,請參考對應(yīng)文檔。
集成之后,上述的 h() 終于可以扔掉,換回熟悉的 JSX & TSX:
<script lang="ts" setup>
//...
const createColumns = () => {
return [
{
title: 'Action',
key: 'actions',
render (row) {
/* ?????? */
return (
<NButton
strong={true}
tertiary={true}
size="small"
onClick={() => play(row)}>
Play
</NButton>
)
}
}
]
}
//...
</script>
Vue3,你是懂框架的,妥妥的真香。
Vue 的誕生,已經(jīng)十個年頭,這么些年來,Vue 始終穩(wěn)步前進(jìn)。
從降低開發(fā)成本和心智負(fù)擔(dān)方面來說,Vue 算得上優(yōu)秀。
先后推出的 Composition API、Setup、支持 TSX 語法等,真正的理解、賦能開發(fā)者。
值得一提的是,國內(nèi)的開發(fā)者確實(shí)偏愛 Vue,不論是 Star 人數(shù)、Issue 數(shù)量 和 Pull Request 數(shù)量,都是遙遙領(lǐng)先:

數(shù)據(jù)來源:ossinsight.io/analyze/vuejs/core#people
到此這篇關(guān)于Vue3中使用jsx/tsx的教程詳解的文章就介紹到這了,更多相關(guān)Vue3使用jsx/tsx內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)右上角時間顯示實(shí)時刷新
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)右上角時間顯示實(shí)時刷新,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
基于Vue3+Node.js實(shí)現(xiàn)實(shí)時可視化監(jiān)控系統(tǒng)
在日常運(yùn)維和開發(fā)工作中,服務(wù)器監(jiān)控是必不可少的環(huán)節(jié),市面上有不少優(yōu)秀的監(jiān)控方案,但對于中小型團(tuán)隊(duì)或個人開發(fā)者來說,這些工具往往過于復(fù)雜,學(xué)習(xí)成本較高,本文將介紹我自己開發(fā)的 ServWatch 監(jiān)控系統(tǒng)——一個輕量級、易部署、界面美觀的實(shí)時監(jiān)控解決方案2026-02-02
Vue中關(guān)于computed計(jì)算屬性的妙用
這篇文章主要介紹了Vue中關(guān)于computed計(jì)算屬性的妙用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
Vue項(xiàng)目前端部署詳細(xì)步驟(nginx方式)
Nginx(engine x)是一個高性能的HTTP和反向代理web服務(wù)器,是部署前端項(xiàng)目的首選,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目前端部署(nginx方式)的相關(guān)資料,需要的朋友可以參考下2023-09-09
基于Vue實(shí)現(xiàn)后臺系統(tǒng)權(quán)限控制的示例代碼
本篇文章主要介紹了基于Vue實(shí)現(xiàn)后臺系統(tǒng)權(quán)限控制的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Vue項(xiàng)目的網(wǎng)絡(luò)請求代理到封裝步驟詳解
這篇文章主要介紹了Vue項(xiàng)目的網(wǎng)絡(luò)請求代理到封裝步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
詳解vue-cli腳手架build目錄中的dev-server.js配置文件
這篇文章主要介紹了詳解vue-cli腳手架build目錄中的dev-server.js配置文件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

