日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

強大的代碼編輯器組件,你知道幾個?

來源: 責編: 時間:2024-04-03 09:10:41 252觀看
導讀上次介紹了一個簡單的示例,基于javascript如何從一段文本解析為一段代碼,今天我們看下一下個功能類似,但非常強大的代碼編輯器組件 CodeMirrorCodeMirror https://codemirror.net/在Web開發(fā)中,我們經(jīng)常需要在網(wǎng)頁上展示代

上次介紹了一個簡單的示例,基于javascript如何從一段文本解析為一段代碼,今天我們看下一下個功能類似,但非常強大的代碼編輯器組件 WWB28資訊網(wǎng)——每日最新資訊28at.com

CodeMirror

CodeMirror https://codemirror.net/WWB28資訊網(wǎng)——每日最新資訊28at.com

在Web開發(fā)中,我們經(jīng)常需要在網(wǎng)頁上展示代碼,或者讓用戶直接在網(wǎng)頁上編寫代碼。為了提高用戶體驗,我們通常會使用代碼編輯器來實現(xiàn)代碼的高亮、自動補全等功能。而在眾多代碼編輯器中,CodeMirror無疑是一個功能強大、易用的選項。本文將帶您深入了解CodeMirror的基本用法和高級特性,讓您能夠輕松地在網(wǎng)頁中實現(xiàn)代碼編輯與高亮。WWB28資訊網(wǎng)——每日最新資訊28at.com

什么是CodeMirror?

CodeMirror是一個基于JavaScript的代碼編輯器,它可以在網(wǎng)頁中實現(xiàn)代碼的高亮、自動補全等功能。CodeMirror支持多種編程語言,如JavaScript、HTML、CSS、Python等,并且可以通過插件擴展支持更多的語言。CodeMirror的使用非常簡單,只需要引入相應(yīng)的庫文件,然后通過簡單的配置即可實現(xiàn)代碼編輯與高亮。WWB28資訊網(wǎng)——每日最新資訊28at.com

如何使用CodeMirror?

基于webpack

  1. 初始化項目
npm init -y
  1. 引入庫文件
npm i codemirror @codemirror/lang-javascript npm i -D webpack webpack-cli webpack-dev-server npm i -D css-loader scss scss-loader style-loader html-loader html-webpack-plugin
  1. 創(chuàng)建編輯器
<div id="app"></div>
  1. 初始化Codemirror
const state = EditorState.create({    doc: 'console.log("hello codemirror")',    extensions: [        basicSetup,        javascript(),        // 其他擴展,包括主題、語法高亮...    ],});const editor = new EditorView({    state,    parent: document.getElementById("editor")})
  1. 配置webpack
const path = require('path');const webpack = require('webpack');const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {  entry: './src/js/index.js',  output: {    filename: 'bundle.js',    path: path.resolve(__dirname, 'dist'),  },  devServer: {    static: {      directory: path.join(__dirname, 'dist'),      watch: true,    },    compress: true,    port: 9000,    hot: true, // 啟用HMR  },  plugins: [    new HtmlWebpackPlugin({      template: './src/index.html',    }),    new webpack.HotModuleReplacementPlugin(),  ],  optimization: {    minimize: false, // 關(guān)閉代碼壓縮  },  module: {    rules: [      {        test: //.scss$/, // 正則表達式,匹配所有 .scss 文件        use: [          'style-loader', // 將 JS 字符串生成為 style 節(jié)點          'css-loader', // 將 CSS 轉(zhuǎn)化成 CommonJS 模塊          'sass-loader' // 將 Sass 編譯成 CSS,需要 npm 安裝 sass-loader 和 sass        ]      },      {        test: //.css$/i,        use: ['style-loader', 'css-loader'],      },      {        test: //.(png|svg|jpg|jpeg|gif)$/i,        type: 'asset/resource',      },      {        test: //.html$/i,        loader: 'html-loader',      },    ],  },  mode: 'development',};
  1. 啟動
{    "scripts": {      "start": "webpack serve --open",      "build": "webpack --mode=dependencies"    },}
npm start

CodeMirror的高級特性

  1. 自定義主題

CodeMirror允許我們自定義主題,以實現(xiàn)個性化的代碼高亮效果。可以通過以下方式設(shè)置自定義主題:WWB28資訊網(wǎng)——每日最新資訊28at.com

import {EditorView} from "@codemirror/view"let myTheme = EditorView.theme({  "&": {    color: "white",    backgroundColor: "#034"  },  ".cm-content": {    caretColor: "#0e9"  },  "&.cm-focused .cm-cursor": {    borderLeftColor: "#0e9"  },  "&.cm-focused .cm-selectionBackground, ::selection": {    backgroundColor: "#074"  },  ".cm-gutters": {    backgroundColor: "#045",    color: "#ddd",    border: "none"  }}, {dark: true})
  1. 自定義語言模式

除了內(nèi)置的語言模式外,我們還可以自定義語言模式。首先需要引入相應(yīng)的模式文件,然后通過以下方式設(shè)置自定義語言模式:模板是基于lezer解析,syntax.grammar,基于lezer的語法解析器,可以自定義語法規(guī)則,實現(xiàn)自定義語言模式,像之前那樣逐個對字符處理。WWB28資訊網(wǎng)——每日最新資訊28at.com

@top Program { expression* }@skip { space | LineComment }expression {  Identifier |  String |  Boolean |  Application { "(" expression* ")" }}@tokens {  Identifier { $[a-zA-Z_/-0-9]+ }  String { '"' (!["http://] | "http://" _)* '"' }  Boolean { "#t" | "#f" }  LineComment { ";" ![/n]* }  space { $[ /t/n/r]+ }  "(" ")"}@detectDelim
import {parser} from "./syntax.grammar"import {LRLanguage, LanguageSupport, indentNodeProp, foldNodeProp, foldInside, delimitedIndent} from "@codemirror/language"import {styleTags, tags as t} from "@lezer/highlight"export const EXAMPLELanguage = LRLanguage.define({  parser: parser.configure({    props: [      indentNodeProp.add({        Application: delimitedIndent({closing: ")", align: false})      }),      foldNodeProp.add({        Application: foldInside      }),      styleTags({        Identifier: t.variableName,        Boolean: t.bool,        String: t.string,        LineComment: t.lineComment,        "( )": t.paren      })    ]  }),  languageData: {    commentTokens: {line: ";"}  }})export function EXAMPLE() {  return new LanguageSupport(EXAMPLELanguage)}
  1. 語法高亮

可以根據(jù)標簽類型設(shè)置不同標簽的顏色與其他樣式,可以根據(jù)內(nèi)置的tag類型定義不同的顯示風格:WWB28資訊網(wǎng)——每日最新資訊28at.com

import {tags} from "@lezer/highlight"import {HighlightStyle} from "@codemirror/language"const myHighlightStyle = HighlightStyle.define([  {tag: tags.keyword, color: "#fc6"},  {tag: tags.comment, color: "#f5d", fontStyle: "italic"}])

codemirror的擴展點很多,類似于Visual Studio Code的Web版本都可以基于該框架試下,在官網(wǎng)上羅列了具體的:WWB28資訊網(wǎng)——每日最新資訊28at.com

Accessibility

Works well with screen readers and keyboard-only users.WWB28資訊網(wǎng)——每日最新資訊28at.com

Mobile Support

Use the platform's native selection and editing features on phones.WWB28資訊網(wǎng)——每日最新資訊28at.com

Bidirectional Text

Support mixing of right-to-left and left-to-right text.WWB28資訊網(wǎng)——每日最新資訊28at.com

Syntax Highlighting

Color code to reflect syntactic structure.WWB28資訊網(wǎng)——每日最新資訊28at.com

Line Numbers

Display gutters with line numbers or other information next to the code.WWB28資訊網(wǎng)——每日最新資訊28at.com

Autocompletion

Provide language-specific completion hints in the editor.WWB28資訊網(wǎng)——每日最新資訊28at.com

Code Folding

Temporarily hide parts of the document.WWB28資訊網(wǎng)——每日最新資訊28at.com

Search/Replace

Editor-specific search, regexp search, and replace functionality.WWB28資訊網(wǎng)——每日最新資訊28at.com

Full Parsing

Detailed parse trees allow many types of language integration.WWB28資訊網(wǎng)——每日最新資訊28at.com

Extension Interface

Robustly implement demanding editor extensions.WWB28資訊網(wǎng)——每日最新資訊28at.com

Modularity

Most features are implemented on top of a generic public API.WWB28資訊網(wǎng)——每日最新資訊28at.com

Speed

Remains responsive even on huge documents and long lines.WWB28資訊網(wǎng)——每日最新資訊28at.com

Bracket Closing

Automatically insert matching brackets during typing.WWB28資訊網(wǎng)——每日最新資訊28at.com

Linting

Show error and warning messages in the editor.WWB28資訊網(wǎng)——每日最新資訊28at.com

Flexible Styling

Mix font styles and sizes, add widgets in the content.WWB28資訊網(wǎng)——每日最新資訊28at.com

Theming

Import or create custom visual editor styles.WWB28資訊網(wǎng)——每日最新資訊28at.com

Collaborative Editing

Allow multiple users to edit the same document.WWB28資訊網(wǎng)——每日最新資訊28at.com

Undo History

Undo and redo functionality with collab editing support.WWB28資訊網(wǎng)——每日最新資訊28at.com

Multiple Selections

Select and edit multiple ranges of the document at once.WWB28資訊網(wǎng)——每日最新資訊28at.com

Internationalization

Provide custom text to display or announce to the user.WWB28資訊網(wǎng)——每日最新資訊28at.com

...and more

Find a full description of the library's features in the docs.WWB28資訊網(wǎng)——每日最新資訊28at.com

結(jié)束語

以上就是關(guān)于CodeMirror的簡單介紹和基本用法。通過本文,您應(yīng)該已經(jīng)了解了如何在網(wǎng)頁中使用CodeMirror實現(xiàn)代碼編輯與高亮。當然,CodeMirror還有很多高級特性等待您去發(fā)掘。希望本文能幫助您更好地使用CodeMirror,為您的Web開發(fā)帶來更多便利。WWB28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-81062-0.html強大的代碼編輯器組件,你知道幾個?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C#中Dictionary與ConcurrentDictionary解鎖多線程操作安全之道

下一篇: 使用Kafka構(gòu)建實時音樂排行榜系統(tǒng),你學會了嗎?

標簽:
  • 熱門焦點
  • 一加Ace2 Pro官宣:普及16G內(nèi)存 引領(lǐng)24G

    一加官方今天繼續(xù)為本月發(fā)布的新機一加Ace2 Pro帶來預(yù)熱,公布了內(nèi)存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領(lǐng),還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發(fā)布,近日該機的真機包裝盒在網(wǎng)上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設(shè)計方面延續(xù)了之前的方案,變化不大,這也是目前小米旗艦
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經(jīng)形成了自己頗有競爭力的產(chǎn)品體系,在中端和次旗艦市場上甚至要比小米新機的表現(xiàn)來得更好,正所謂“大丈夫生居
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內(nèi)市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 6月安卓手機性價比榜:Note 12 Turbo斷層式碾壓

    6月份有一個618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產(chǎn)品也出現(xiàn)了歷史低價,那么各個價位段的產(chǎn)品性價比
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經(jīng)作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財經(jīng)無忌7月16日晚,上海1862時尚藝術(shù)中心。伴隨著幻象的精準命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊以絕對的優(yōu)勢戰(zhàn)勝了BLG戰(zhàn)隊,拿下了總決
  • iQOO 11S評測:行業(yè)唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
Top 主站蜘蛛池模板: 德令哈市| 门头沟区| 美姑县| 德兴市| 沂水县| 华坪县| 朝阳区| 宁强县| 玉环县| 金寨县| 左权县| 镶黄旗| 金平| 平果县| 桃源县| 稷山县| 凤翔县| 进贤县| 任丘市| 和平县| 精河县| 合江县| 调兵山市| 广宗县| 望江县| 红河县| 和静县| 景泰县| 峡江县| 富顺县| 铜川市| 申扎县| 柏乡县| 西乌| 汪清县| 开化县| 阜城县| 康平县| 阿图什市| 恭城| 乐陵市|