跳到工具區
Web 開發

HTML/SVG 轉 JSX/TSX 工具

在瀏覽器本機改寫常見 HTML/SVG attribute 與簡單 inline style,輸出 Fragment、JSX component 或 TSX component 骨架。

Web Worker 僅在本機處理工具
輸入0 個字元
結果0 個字元
就緒

React 語法轉換 · 每項改寫都要檢查

把 markup 改成 JSX,不代表已通過 React 整合。

工具先用 Prettier HTML parser 排版,再以固定規則改寫 attribute、簡單 style 與 wrapper。它不會編譯、渲染或驗證語意,也不是 sanitizer;輸入中的 URL、資源、ID reference、未知 attribute 與 JSX expression 仍需人工檢查。

HTML 路徑

<label class="field" for="email">
  • 常見 DOM prop 名稱
  • void element 閉合
  • label 與表單控制項關聯

SVG 路徑

<path stroke-width="2" fill-rule="evenodd">
  • 常見繪圖 prop 改為 camelCase
  • ID、URL、gradient 與 mask reference
  • ARIA/data attribute 保持連字號

轉換收據

固定 mapping 與一般規則都要逐項檢閱。

class="field"className="field"重新命名

React DOM prop

for="email"htmlFor="email"重新命名

保留 label association

stroke-width="2"strokeWidth="2"重新命名

常見 SVG prop casing

aria-labelaria-label保留

ARIA spelling 不變

data-test-iddata-test-id保留

自訂 data contract

&#111;nclick="save()"data-devsexy-review-onclick隔離

保留字串供檢查,不會建立 React handler

簡單 inline style 轉換

CSS declaration string 會變成值皆為字串的 JavaScript object。

HTML attribute
style="font-size: 14px; --brand: #bfd456; line-height: 1.4"
React style prop
style={{ fontSize: "14px", "--brand": "#bfd456", lineHeight: "1.4" }}
font-sizefontSize一般 kebab-case property 改為 camelCase
--brand"--brand"CSS custom property 保持原名並加上引號
14px/1.4"14px"/"1.4"保留為字串,不猜測單位或 numeric intent
複雜 CSS 值需要人工改寫規則以分號切 declaration;不是完整 CSS parser

Script 與 event 隔離區

降低直接搬入行為的風險,不等於完成 sanitization。

Worker 會移除一般成對的 script tag,並把偵測到的 on…= attribute 改成 data-devsexy-review-*;轉換時不執行它們。但自閉合 SVG script、javascript: URL、iframe/外部資源與原文中的 JSX expression 仍可能保留,不可信輸出不得直接編譯或渲染。

Incoming behavior string
<button &#111;nclick="checkout(cart)">購買</button>
Quarantined evidence
<button data-devsexy-review-onclick="checkout(cart)">購買</button>

人工確認依賴與狀態後再改成:onClick={() => checkout(cart)}

輸出 wrapper

三種操作都使用 Fragment;component wrapper 只是可選骨架。

Fragment snippet

<>…</>

Snippet 固定輸出 Fragment;不增加 DOM node。

JSX component

export function Badge()

JSX 模式預設包成無參數 function;可關閉 wrapper。

TSX component

(): React.JSX.Element

只加入 return type;不產生 props type、props spread 或 React import。

Component name

大寫 ASCII identifier

啟用 wrapper 時才檢查;小寫會被 React 視為 intrinsic element。

轉換後的整合關卡

輸出只是可檢查的起點,不是 React-ready 保證。

01

用目標 toolchain 解析

確認專案的 JSX runtime、React types、import 與 TS config。

02

檢閱改寫與遺漏

特別檢查無等號 boolean attribute、未知 SVG casing 與 namespace。

03

檢查主動內容

移除不可信 JSX expression、URL、resource 與未被規則涵蓋的 script。

04

補上 component contract

自行設計 props type、event function、state、ref、accessibility 與 ID strategy。

05

實際 render、lint、test

核對 form、gradient、mask、CSS、React warning 與互動行為。

直接回答

什麼是 HTML/SVG 轉 JSX/TSX 工具?

在瀏覽器本機將 HTML 或 SVG 轉成 JSX/TSX:改寫 className、htmlFor 與常見 SVG prop,轉換簡單 style,移除一般 script tag 並隔離 inline event attribute。

它能做什麼?

  • 程式碼片段
  • JSX
  • TSX

如何使用 HTML/SVG 轉 JSX/TSX 工具

  1. 01

    選擇任務

    在工作區選擇程式碼片段、JSX和TSX。

  2. 02

    提供輸入

    <button class="cta" aria-label="Save">Save</button>。內容會留在瀏覽器端的處理流程中。

  3. 03

    檢查結果

    執行工具、檢查結果與診斷資訊;頁面提供複製或下載功能時,也能直接匯出。

常見問題

HTML/SVG 轉 JSX/TSX 工具是什麼?
在瀏覽器本機將 HTML 或 SVG 轉成 JSX/TSX:改寫 className、htmlFor 與常見 SVG prop,轉換簡單 style,移除一般 script tag 並隔離 inline event attribute。
HTML/SVG 轉 JSX/TSX 工具能做什麼?
HTML/SVG 轉 JSX/TSX 工具支援程式碼片段、JSX和TSX,所有模式都能直接在目前頁面使用。
HTML/SVG 轉 JSX/TSX 工具會上傳我的資料嗎?
HTML/SVG 轉 JSX/TSX 工具會在瀏覽器中處理輸入內容。DevSexy 不會增加上傳、登入或伺服器處理步驟。
DevSexy 會在瀏覽器中處理工具輸入:不追蹤貼上的內容、不需帳號,也不會上傳。