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

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

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

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

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

CodeMirror

CodeMirror https://codemirror.net/FzV28資訊網——每日最新資訊28at.com

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

什么是CodeMirror?

CodeMirror是一個基于JavaScript的代碼編輯器,它可以在網頁中實現代碼的高亮、自動補全等功能。CodeMirror支持多種編程語言,如JavaScript、HTML、CSS、Python等,并且可以通過插件擴展支持更多的語言。CodeMirror的使用非常簡單,只需要引入相應的庫文件,然后通過簡單的配置即可實現代碼編輯與高亮。FzV28資訊網——每日最新資訊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. 創建編輯器
<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, // 關閉代碼壓縮  },  module: {    rules: [      {        test: //.scss$/, // 正則表達式,匹配所有 .scss 文件        use: [          'style-loader', // 將 JS 字符串生成為 style 節點          'css-loader', // 將 CSS 轉化成 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允許我們自定義主題,以實現個性化的代碼高亮效果。可以通過以下方式設置自定義主題:FzV28資訊網——每日最新資訊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. 自定義語言模式

除了內置的語言模式外,我們還可以自定義語言模式。首先需要引入相應的模式文件,然后通過以下方式設置自定義語言模式:模板是基于lezer解析,syntax.grammar,基于lezer的語法解析器,可以自定義語法規則,實現自定義語言模式,像之前那樣逐個對字符處理。FzV28資訊網——每日最新資訊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. 語法高亮

可以根據標簽類型設置不同標簽的顏色與其他樣式,可以根據內置的tag類型定義不同的顯示風格:FzV28資訊網——每日最新資訊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版本都可以基于該框架試下,在官網上羅列了具體的:FzV28資訊網——每日最新資訊28at.com

Accessibility

Works well with screen readers and keyboard-only users.FzV28資訊網——每日最新資訊28at.com

Mobile Support

Use the platform's native selection and editing features on phones.FzV28資訊網——每日最新資訊28at.com

Bidirectional Text

Support mixing of right-to-left and left-to-right text.FzV28資訊網——每日最新資訊28at.com

Syntax Highlighting

Color code to reflect syntactic structure.FzV28資訊網——每日最新資訊28at.com

Line Numbers

Display gutters with line numbers or other information next to the code.FzV28資訊網——每日最新資訊28at.com

Autocompletion

Provide language-specific completion hints in the editor.FzV28資訊網——每日最新資訊28at.com

Code Folding

Temporarily hide parts of the document.FzV28資訊網——每日最新資訊28at.com

Search/Replace

Editor-specific search, regexp search, and replace functionality.FzV28資訊網——每日最新資訊28at.com

Full Parsing

Detailed parse trees allow many types of language integration.FzV28資訊網——每日最新資訊28at.com

Extension Interface

Robustly implement demanding editor extensions.FzV28資訊網——每日最新資訊28at.com

Modularity

Most features are implemented on top of a generic public API.FzV28資訊網——每日最新資訊28at.com

Speed

Remains responsive even on huge documents and long lines.FzV28資訊網——每日最新資訊28at.com

Bracket Closing

Automatically insert matching brackets during typing.FzV28資訊網——每日最新資訊28at.com

Linting

Show error and warning messages in the editor.FzV28資訊網——每日最新資訊28at.com

Flexible Styling

Mix font styles and sizes, add widgets in the content.FzV28資訊網——每日最新資訊28at.com

Theming

Import or create custom visual editor styles.FzV28資訊網——每日最新資訊28at.com

Collaborative Editing

Allow multiple users to edit the same document.FzV28資訊網——每日最新資訊28at.com

Undo History

Undo and redo functionality with collab editing support.FzV28資訊網——每日最新資訊28at.com

Multiple Selections

Select and edit multiple ranges of the document at once.FzV28資訊網——每日最新資訊28at.com

Internationalization

Provide custom text to display or announce to the user.FzV28資訊網——每日最新資訊28at.com

...and more

Find a full description of the library's features in the docs.FzV28資訊網——每日最新資訊28at.com

結束語

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

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

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

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

下一篇: 使用Kafka構建實時音樂排行榜系統,你學會了嗎?

標簽:
  • 熱門焦點
  • 一加首款折疊屏!一加Open渲染圖出爐:罕見單手可握小尺寸

    8月5日消息,此前就有爆料稱,一加首款折疊屏手機將會在第三季度上市,如今隨著時間臨近,新機的各種消息也開始浮出水面。據悉,這款新機將會被命名為&ldquo;On
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 一年經驗在二線城市面試后端的經驗分享

    忠告這篇文章只適合2年內工作經驗、甚至沒有工作經驗的朋友閱讀。如果你是2年以上工作經驗,請果斷劃走,對你沒啥幫助~主人公這篇文章內容來自 「升職加薪」星球星友 的投稿,坐
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點商業作者:楊銘在淘寶購買珠寶玉石后,因為保證金不夠賠付,店鋪關閉,退貨退款難、維權無門的比比皆是。&ldquo;提供相關產品鑒定證書,支持全國復檢,可以30天無理由退換貨。&
  • 三星電子Q2營收60萬億韓元 存儲業務營收同比仍下滑超過50%

    7月27日消息,據外媒報道,從三星電子所發布的財報來看,他們主要利潤來源的存儲芯片業務在今年二季度仍不樂觀,營收同比仍在大幅下滑,所在的設備解決方案
  • iQOO Neo8 Pro評測:旗艦雙芯加持 最強性能游戲旗艦

    【Techweb評測】去年10月,iQOO推出了一款Neo7手機,該機搭載了聯發科天璣9000+,配備獨顯芯片Pro+,帶來了同價位段最佳的游戲體驗,一經上市便受到了諸多用
  • iQOO Neo8系列或定檔5月23日:首發天璣9200+ 安卓跑分王者

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經上市便受到了用戶的廣泛關注。在時隔半年后,
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品国产精品国产专区不蜜| 久久久精品五月天| 韩日在线一区| 尤妮丝一区二区裸体视频| 亚洲国产精品久久久久秋霞不卡| 亚洲清纯自拍| 亚洲图片欧美日产| 性亚洲最疯狂xxxx高清| 快射av在线播放一区| 欧美日韩在线视频一区二区| 国产女优一区| 在线精品国精品国产尤物884a| 日韩亚洲一区在线播放| 香蕉久久夜色| 欧美国产视频在线| 国产美女诱惑一区二区| 亚洲国产综合91精品麻豆| 亚洲影院色在线观看免费| 狂野欧美性猛交xxxx巴西| 国产精品成人国产乱一区| 欲色影视综合吧| 亚洲永久视频| 免费欧美在线| 国产乱码精品1区2区3区| 最新国产乱人伦偷精品免费网站 | 狠狠色丁香婷婷综合影院| 亚洲精品乱码久久久久久蜜桃91| 亚洲欧美日韩成人高清在线一区| 久热成人在线视频| 国产精品久久久久久一区二区三区 | 久久福利精品| 欧美日韩视频一区二区三区| 国产在线精品二区| 99视频日韩| 久久一二三四| 国产精品一区二区男女羞羞无遮挡| 在线观看欧美成人| 午夜精品一区二区三区在线| 欧美久久在线| 伊人激情综合| 香蕉亚洲视频| 欧美日韩无遮挡| 伊人男人综合视频网| 亚洲欧美视频在线观看| 欧美另类女人| 亚洲高清视频一区二区| 欧美淫片网站| 国产精品国产福利国产秒拍| 亚洲国产日韩综合一区| 久久高清福利视频| 国产精品热久久久久夜色精品三区| 最新亚洲视频| 久久尤物视频| 国产一区二区三区在线播放免费观看| 中文日韩在线| 欧美日本在线看| 亚洲激情综合| 巨乳诱惑日韩免费av| 国产午夜精品美女视频明星a级| 在线视频精品| 欧美日韩99| 亚洲精选在线观看| 免费观看日韩| 伊人久久婷婷色综合98网| 欧美在线观看网站| 国产目拍亚洲精品99久久精品 | 久久er精品视频| 国产精品呻吟| 亚洲男人的天堂在线观看| 欧美日韩中文字幕精品| 亚洲毛片网站| 欧美成人性生活| 亚洲国产国产亚洲一二三| 久久综合中文色婷婷| 激情久久影院| 久久亚洲私人国产精品va| 在线观看福利一区| 欧美成人在线免费观看| 最新国产成人av网站网址麻豆| 欧美顶级艳妇交换群宴| 亚洲激情偷拍| 欧美日本在线| 一区电影在线观看| 欧美视频在线观看免费网址| 这里只有精品丝袜| 国产精品高清网站| 亚洲欧美怡红院| 国产婷婷色综合av蜜臀av | 久久久久国产精品一区二区| 国产亚洲一区二区三区| 久久久久久久一区二区三区| 狠狠色狠狠色综合系列| 久久婷婷丁香| 亚洲国产天堂久久综合| 欧美国产一区二区| 亚洲免费观看在线视频| 欧美日韩一区二区在线视频| 亚洲午夜伦理| 国产欧美日韩激情| 久久久久se| 亚洲国产国产亚洲一二三| 欧美电影专区| 国产精品99久久久久久久女警 | 日韩亚洲在线| 国产精品一区久久| 久久久999国产| 亚洲韩国日本中文字幕| 欧美日韩精品免费观看视频| 亚洲免费在线观看| 国内精品免费午夜毛片| 欧美91大片| 亚洲视频免费在线观看| 国产精品一区二区三区观看| 久久久久久**毛片大全| 91久久国产综合久久91精品网站| 欧美国产三区| 国产精品99久久久久久久vr| 国产日韩欧美一区| 欧美成人激情在线| 亚洲午夜国产成人av电影男同| 国产欧美一区二区三区久久| 美女久久网站| 亚洲午夜未删减在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲美女av电影| 国产精品女人网站| 快播亚洲色图| 亚洲图片欧美午夜| 激情成人在线视频| 欧美日韩一区二区三区四区在线观看 | 亚洲黄色成人网| 欧美视频网址| 久久青青草综合| 一区二区三区高清| 国内精品久久久久久久果冻传媒| 欧美成人免费在线观看| 欧美一区二区播放| 亚洲三级免费| 国产亚洲欧洲| 欧美日韩在线不卡一区| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲国产清纯| 国产欧美精品| 欧美精品一区三区| 久久精品理论片| 一区二区三区精品| 悠悠资源网久久精品| 国产精品久久久久av| 欧美aa在线视频| 欧美一区高清| 宅男噜噜噜66国产日韩在线观看| 一区二区三区在线免费视频| 国产精品久久999| 欧美高清视频www夜色资源网| 亚洲午夜免费视频| 亚洲国产精品一区二区第四页av| 国产九九视频一区二区三区| 欧美激情一区在线| 久久色中文字幕| 午夜一区不卡| 亚洲视频精品在线| 亚洲黄网站黄| 狠狠综合久久av一区二区小说| 欧美体内she精视频| 嫩模写真一区二区三区三州| 欧美一站二站| 亚洲婷婷国产精品电影人久久| 亚洲国产精品成人综合色在线婷婷| 国产精品你懂得| 欧美日韩一区二区在线观看视频| 欧美.日韩.国产.一区.二区| 久久se精品一区精品二区| 亚洲尤物视频网| 一区二区三区av| 亚洲欧洲一区二区天堂久久| 精品福利电影| 国产亚洲一二三区| 国产精品亚洲一区二区三区在线| 欧美三区美女| 欧美日韩国产成人精品| 欧美国产专区| 欧美成熟视频| 免播放器亚洲一区| 久久亚洲一区二区| 久久久五月婷婷| 久久国产精品色婷婷| 午夜影院日韩| 亚洲欧美日韩视频一区| 亚洲一区二区三区中文字幕| 夜夜夜久久久| 一区二区免费在线观看| 夜色激情一区二区| aa国产精品| 一本到高清视频免费精品| 亚洲日本激情| 亚洲精品欧美日韩专区| 亚洲激情中文1区| 亚洲精品女人| 最新成人在线| 亚洲巨乳在线| 一区二区三区国产在线| 亚洲视频网在线直播| 亚洲一区自拍| 午夜在线观看免费一区|