基礎架構
- @uiw/react-codemirror:
@uiw/react-codemirror
是基於 CodeMirror 6 建立的,這是一個全新的架構,提供更好的模組化和擴充性。這意味著您可以根據需要只載入所需的功能,從而減少檔案大小。 - react-codemirror2:
react-codemirror2
是基於 CodeMirror 5 的,這是一個成熟且穩定的版本,擁有豐富的功能和大量的插件。這使得它在許多專案中得到廣泛使用,但在擴充性和模組化方面不如 CodeMirror 6。
自訂與擴充
- @uiw/react-codemirror:
@uiw/react-codemirror
提供了更高的自訂性,特別是在主題和擴充功能方面。您可以輕鬆地創建自訂的編輯器外觀和行為,並且可以使用 CodeMirror 6 的擴充 API 來添加新功能。 - react-codemirror2:
react-codemirror2
允許使用者自訂編輯器,但由於其基於 CodeMirror 5,某些自訂和擴充可能需要更多的手動配置。它支援多種現成的主題和插件,但在自訂方面不如 CodeMirror 6 靈活。
社群與支援
- @uiw/react-codemirror:
@uiw/react-codemirror
是一個較新的專案,社群正在快速成長,但相對於 CodeMirror 5,資源和插件仍然有限。隨著更多開發者採用 CodeMirror 6,預計會有更多的文檔和範例出現。 - react-codemirror2:
react-codemirror2
擁有一個成熟的社群和豐富的資源,因為它基於 CodeMirror 5。您可以輕鬆找到範例、插件和解決方案,這對於需要快速實現功能的專案非常有幫助。
範例程式碼
- @uiw/react-codemirror:
使用
@uiw/react-codemirror
的範例程式碼import React from 'react'; import { CodeMirror } from '@uiw/react-codemirror'; import { javascript } from '@codemirror/lang-javascript'; const App = () => { return ( <CodeMirror height="200px" theme="dark" extensions={[javascript()]} onChange={(value) => { console.log('程式碼變更:', value); }} /> ); }; export default App;
- react-codemirror2:
使用
react-codemirror2
的範例程式碼import React, { useState } from 'react'; import { Controlled as CodeMirror } from 'react-codemirror2'; import 'codemirror/lib/codemirror.css'; import 'codemirror/theme/material.css'; import 'codemirror/mode/javascript/javascript'; const App = () => { const [code, setCode] = useState('// 在這裡編寫程式碼'); return ( <CodeMirror value={code} options={{ mode: 'javascript', theme: 'material', lineNumbers: true, }} onBeforeChange={(editor, data, value) => { setCode(value); }} /> ); }; export default App;