vue3+ts+tsx的使用與好處(語法方面:tsx==jsx)

前言:

? ? ? ? 整理分享下vue3+ts+tsx相關的資料,有react使用經驗的小伙伴應該更能理解這個的好處,終于在vue3中也支持了,相當于函數的方法來操作界面。

1、vue3項目中為什么要用tsx(等同于我們react的jsx)

  1. 類型安全:TSX 可以幫助開發者在編寫代碼的過程中檢測類型錯誤,減少運行時錯誤的發生,并提高代碼可維護性。

  2. 更好的代碼提示:在使用 TSX 編寫代碼時,開發者可以享受到更好的編碼提示和自動補全功能,從而提高編寫代碼的效率。

  3. 更容易維護:在使用 TSX 編寫代碼時,代碼結構更加清晰明了,可讀性更高,使得代碼的維護更加容易。

  4. 容易與 React 生態系統集成:TSX 是 React 生態系統中廣泛使用的一個技術棧,使用 TSX 可以更容易地與其它開源組件和庫進行集成和協作。

2、他的用法和我們常規的vue3+ts使用有什么區別

  1. 語法:Vue 3 的模板語法和 TSX 的語法是不同的,Vue 3 的模板語法更接近于 HTML,而 TSX 的語法更接近于 JavaScript。

  2. 類型檢查:TSX 依賴于 TypeScript,可以使用 TypeScript 的類型檢查功能來減少代碼中的錯誤,而 Vue 3 的模板語法沒有這種類型檢查功能。

  3. 可讀性:TSX 的語法更接近于 JavaScript,對于熟悉 JavaScript 的開發者來說,可能更容易閱讀和理解 TSX 的代碼。但同時也可能會感到 TSX 的語法更繁瑣,對于不熟悉 TypeScript 的開發者來說學習曲線可能會更陡峭。

  4. 性能:使用 TSX 編寫 Vue 3 組件可能會比使用模板語法的組件具有更好的性能。因為 TSX 可以直接將組件轉換為純 JavaScript 代碼,而模板語法需要在運行時進行解析和編譯。

????????總的來說,使用 TSX 可以使代碼更可讀性更好,具有類型檢查等優勢,但也需要引入 TypeScript,并且需要開發者對 TypeScript 有一定的了解。而使用 Vue 3 的模板語法則更加接近于 HTML,對于前端開發者來說更加直觀,但可能會犧牲一些性能。具體使用哪種方式需要根據項目需求和開發者技能來決定。

3、項目中的安裝部署

1、安裝,?babel-plugin-jsx

npm insatll @vue/babel-plugin-jsx --save

2、在項目的 babel.config.js 文件的plugins中添加配置:

module.exports = {presets: ['@vue/cli-plugin-babel/preset'],plugins: ['@vue/babel-plugin-jsx']
}

4、具體使用的一些方法分享(使用他與不使用做對比)

1、最重要的一點,他的模塊是通過setup的return返回的

import { defineComponent, ref, reactive } from 'vue'export default defineComponent({props: {},setup(props) {const msg = ref('hello tsx')const state = reactive({count: 1})return () => {return <div>{msg.value} <span>{state.count}</span></div>}}
})

2、元素上綁定,{} 加內容

vue文件:
<com :data="data"></com>tsx文件:
<com data={data}></com>

3、v-if? 必須用三木運算,或者是? &&

vue文件:
<div v-if="flag"></div>tsx文件,js邏輯代碼必須用大括號包裹:
{flag ? <div></div> : null
}
isActive && <p>123</p>  //意思就是, isActive === true的情況下,展示 && 后面的標簽isActive && title==='123' && <p>123</p>  
//意思就是, isActive === true && title==='123' 的情況下,展示 && 最后面的標簽

4、v-for

vue文件:
<ul><li v-for="item in list" :key="item">{{item}}</li>
</ul>tsx文件:
<ul>{list.map((item) => {return <li key={item}>{item}</li>})}
</ul>

5、點擊事件等綁定,有點像原生了,onScroll? ,on

vue文件:
<div @click="handleClick"></div>tsx文件:
<div onClick={handleClick}></div>onMouseenter={handleMouseEnter}
onMouseleave={handleMouseLeave}

6、子傳父

vue:
子組件:
emit('custom')父組件:
<ChildComponent @custom="handleCustom" />tsx:
子組件:
emit('custom')父組件:
<ChildComponent onCustom={handleCustom} />

5、api文檔分享

使用 JSX 書寫標簽語言 – React 中文文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41239.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41239.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41239.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【STM32】 工程

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介紹&#xff1a;"謓澤"正在路上朝著"攻城獅"方向"前進四" &#x1f50e;&#x1f3c5; 榮譽&#xff1a;2021|2022年度博客之星物聯網與嵌入式開發TOP5|TOP4、2021|2022博客之星TO…

oracle 更新語句條件匹配不生效

最近在工作中寫了一個供別人調用的Oracle的存儲過程接口&#xff0c;功能很簡單&#xff0c;就是根據傳入的幾個參數來更新表中的某些數據&#xff0c;但是在聯調過程中傳入的更新匹配條件和被更新的數據一致對不上&#xff0c;更新的數據會比匹配的三個條件的數據多&#xff0…

注解 @Slf4j

注解 Slf4j 1. 注解由來&#xff1a; Slf4j 是 Lombok 提供的一種注解&#xff0c;用于在類中自動生成一個名為 log 的日志對象。通過使用 Slf4j 注解&#xff0c;可以方便地在代碼中使用日志功能&#xff0c;而無需手動創建和初始化日志對象。 2. 注解示例&#xff1a; Slf…

Spring系列篇--關于AOP【面向切面】的詳解

目錄 一.AOP是什么 二.案例演示 1.前置通知1.1 先準備接口 1.2然后再準備好實現類 1.3對我們的目標對象進行JavaBean配置 1.4 編寫前置系統日志通知 1.5配置系統通知XML中的JavaBean 1.6 配置代理XML中的JavaBean 1.7 測試代碼開始測試 注意這里有一個報錯問題&…

JVM虛擬機:初始化的介紹

本文重點 我們前面學習了三個步驟: 裝載 連接 初始化 初始化 初始化的時候,會為靜態成員變量賦值初始值,它有兩種方式: ①聲明類變量是指定初始值 ②使用靜態代碼塊為類變量指定初始值 例子 最后輸出的結果為3,它的過程是這樣的: main方法中輸出T.count,由于count是…

自簽證書讓Chrome信任的方式

自簽證書讓Chrome信任的方式(域名情況) 網站是搭建在linux上的&#xff0c;內容大概是一個code-server;我要在windows的chrome中訪問&#xff0c;在Linux機器上自簽了一個證書&#xff0c;準備讓windows中的chrome信任。linux裝好openssl。首先買好域名&#xff0c;配置好解析…

tkinter+爬蟲+pygame實現音樂播放器

文章目錄 前文安裝模塊示意圖爬蟲完整代碼pygametkinter完整代碼結尾前文 本文將涉及爬蟲(數據的獲取),pygame(音樂播放器),tkinter(界面顯示),將他們匯聚到一起制造一個音樂播放器,歡迎大家的訂閱。 安裝模塊 pip install requests,parsel,lxpy,pygame 示意圖

Flask下載文件報錯304 NOT MODIFIED

文章目錄 問題描述解決方案參考文獻 問題描述 前端 Vue 下下來的文件無法正常打開&#xff0c;大小比正常的略大一點&#xff0c;通過 Postman 直接調用是正常的 解決方案 由前端解決 如果響應大小比文件略大一點&#xff0c;從 responses 中取出關鍵數據再組成文件如果響應…

open cv學習 (二)色彩空間和通道

色彩空間和通道 demo1 import cv2hsv_image cv2.imread("./img.png")cv2.imshow("img", hsv_image) hsv_image cv2.cvtColor(hsv_image, cv2.COLOR_BGR2HSV) h, s, v cv2.split(hsv_image) cv2.imshow("B", h) cv2.imshow("G", s…

文本圖片怎么轉Excel?分享一些好用的方法

在處理數據時&#xff0c;Excel 是一個非常強大的工具&#xff0c;但有時候需要將文本和圖片轉換為 Excel 格式&#xff0c;這可能會讓人感到困惑。在本文中&#xff0c;我們將介紹一些好用的方法&#xff0c;以便您能夠輕松地將文本和圖片轉換成 Excel 格式。 將文本圖片為Exc…

部署piwigo網頁 通過cpolar分享本地電腦上的圖片

通過cpolar分享本地電腦上有趣的照片&#xff1a;發布piwigo網頁 文章目錄 通過cpolar分享本地電腦上有趣的照片&#xff1a;發布piwigo網頁前言1. 設定一條內網穿透數據隧道2. 與piwigo網站綁定3. 在創建隧道界面填寫關鍵信息4. 隧道創建完成 總結 前言 首先在本地電腦上部署…

K8S核心組件etcd詳解(上)

1 介紹 https://etcd.io/docs/v3.5/ etcd是一個高可用的分布式鍵值存儲系統&#xff0c;是CoreOS&#xff08;現在隸屬于Red Hat&#xff09;公司開發的一個開源項目。它提供了一個簡單的接口來存儲和檢索鍵值對數據&#xff0c;并使用Raft協議實現了分布式一致性。etcd廣泛應用…

關于計數以及Index返回訂單號升級版002(控制字符長度,控制年月標記,拾取未使用編號)--使用兩個表來滿足操作

1實現步驟以及說明 1.根據參數獲取當前setNoIndex表里現在的No的index值&#xff0c;如果包含關鍵字當前對應數據&#xff0c;則現在SetIndexNoLeft 表中找到有無未使用并未占用的那條數據&#xff08;被占用的數據IsTaken1&#xff0c;生成后使用當前時間與updated時間進行比…

Django圖書商城系統實戰開發-實現訂單管理

Django圖書商城系統實戰開發-實現訂單管理 簡介 在本教程中&#xff0c;我們將繼續基于Django框架開發圖書商城系統&#xff0c;這次的重點是實現訂單管理功能。訂單管理是一個電子商務系統中非常重要的部分&#xff0c;它涉及到用戶下單、支付、發貨以及訂單狀態的管理等方面…

【hive】簡單介紹hive的幾種join

文章目錄 前言1. Common Join2. Map Join介紹&#xff1a;使用方法&#xff1a;限制&#xff1a; 3. Bucket Map Join介紹&#xff1a;好處&#xff1a;使用條件&#xff1a;使用方法&#xff1a; 4. Sort Merge Bucket Map Join介紹&#xff1a;如何使用&#xff1a; 5. Skew …

如何在控制臺查看excel內容

背景 最近發現打開電腦的excel很慢&#xff0c;而且使用到的場景很少&#xff0c;也因為mac自帶了預覽的功能。但是shigen就是閑不住&#xff0c;想自己搞一個excel預覽軟件&#xff0c;于是在一番技術選型之后&#xff0c;我決定使用python在控制臺顯示excel的內容。 具體的需…

Redis與MySQL的比較:什么情況下使用Redis更合適?什么情況下使用MySQL更合適?

Redis和MySQL是兩種不同類型的數據庫&#xff0c;各有自己的特點和適用場景。下面是Redis和MySQL的比較以及它們適合使用的情況&#xff1a; Redis適合的場景&#xff1a; 高性能讀寫&#xff1a;Redis是基于內存的快速Key-Value存儲&#xff0c;讀寫性能非常高。它適用于需要…

NodeJs導出PDF

&#xff08;優于別人&#xff0c;并不高貴&#xff0c;真正的高貴應該是優于過去的自己。——海明威&#xff09; 場景 根據訂單參數生成賬單PDF 結果 示例代碼 /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ /* eslint-disable complexity */ const…

【jquery實現動態給表格添加刪除行,合并指定單元格】

jquery實現動態給表格添加刪除行&#xff0c;合并指定單元格 前端技術 jspjquery 動態添加行 //新增行 $("#addRowBtn").click(function(){var rowEl$("<tr><td><input typecheckbox classcheckItem/></td><td><input nam…