首页 > 其他分享 >js:codemirror实现在线代码编辑器代码高亮显示

js:codemirror实现在线代码编辑器代码高亮显示

时间:2023-06-24 14:02:04浏览次数:48  
标签:code console codemirror 代码 js editor CodeMirror

CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with a number of language modes and addons that implement more advanced editing functionality.

译文:CodeMirror是一个多功能的文本编辑器,使用JavaScript为浏览器实现。它专门用于编辑代码,并配有许多语言模式和插件,以实现更高级的编辑功能。

(目录)

文档

快速开始

通过cdn方式引入关键的文件

  • codemirror.min.css
  • codemirror.min.js
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>codemirror demo</title>
    
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/codemirror.min.css"
      integrity="sha512-uf06llspW44/LZpHzHT6qBOIVODjWtv4MxCricRxkzvopAlSWnTf6hpZTFxuuZcuNE9CBQhqE0Seu1CoRk84nQ=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    />
  </head>
  
  <body>
    <textarea id="code-editor"></textarea>

    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/codemirror.min.js"
      integrity="sha512-sSWQXoxIkE0G4/xqLngx5C53oOZCgFRxWE79CvMX2X0IKx14W3j9Dpz/2MpRh58xb2W/h+Y4WAHJQA0qMMuxJg=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    ></script>

    <script>
      var editor = CodeMirror.fromTextArea(
        document.querySelector("#code-editor")
      );
    </script>
  </body>
</html>

目前来看,编辑框好像没有任何改变 在这里插入图片描述

自定义示例

通过自定义配置,可以实现如下效果 在这里插入图片描述 完整代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>codemirror demo</title>
    <!-- 核心css文件 -->
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/codemirror.min.css"
      integrity="sha512-uf06llspW44/LZpHzHT6qBOIVODjWtv4MxCricRxkzvopAlSWnTf6hpZTFxuuZcuNE9CBQhqE0Seu1CoRk84nQ=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    />

    <!--引入css主题文件,用以支持主题-->
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/theme/dracula.min.css"
      integrity="sha512-gFMl3u9d0xt3WR8ZeW05MWm3yZ+ZfgsBVXLSOiFz2xeVrZ8Neg0+V1kkRIo9LikyA/T9HuS91kDfc2XWse0K0A=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    />

    <style>
      /* 设置字体大小 */
      .CodeMirror {
        font-size: 16px;
      }
    </style>
  </head>
  <body>

    <!-- 编辑器节点 -->
    <textarea id="code-editor"></textarea>

    <!-- 核心js文件 -->
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/codemirror.min.js"
      integrity="sha512-sSWQXoxIkE0G4/xqLngx5C53oOZCgFRxWE79CvMX2X0IKx14W3j9Dpz/2MpRh58xb2W/h+Y4WAHJQA0qMMuxJg=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    ></script>

    <!-- javascript 语法高亮 -->
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/mode/javascript/javascript.min.js"
      integrity="sha512-Cbz+kvn+l5pi5HfXsEB/FYgZVKjGIhOgYNBwj4W2IHP2y8r3AdyDCQRnEUqIQ+6aJjygKPTyaNT2eIihaykJlw=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    ></script>

    <script>
      let code = `
function getUser(){
  let user = {
      name: "Tom",
      age: 18
  }
  
  return user;
}

console.log("hello");
`;
      var editor = CodeMirror.fromTextArea(
        document.querySelector("#code-editor"),
        {
          lineNumbers: true, //显示行号
          theme: "dracula", //设置主题
          mode: "javascript", // 实现javascript代码高亮
        }
      );

      editor.setValue(code); //给代码框赋值

      // 监听事件
      editor.on("change", function (editor, change) {
        // console.log(editor, change);
        console.log(editor.getValue()); // 获取代码框的值
      });
    </script>
  </body>
</html>

参考文章

  1. 使用 CodeMirror 打造属于自己的在线代码编辑器
  2. CodeMirror 基本使用及智能提示

标签:code,console,codemirror,代码,js,editor,CodeMirror
From: https://blog.51cto.com/mouday/6541117

相关文章

  • 基于 JSON 的 DSL 查询 - 实现步骤【ElasticSearch】
    ESDSL查询实现//todo2.准备Request-搜索哪个索引库SearchRequestsearchRequest=newSearchRequest("hotel");//todo4.所有的搜索条件封装对象searchSourceBuilderSearchSourceBuildersearchSourceBuilder=newSearchSourceBuild......
  • js 获取当前时间
    getNow(){letdate=newDate();lety=date.getFullYear();letm=date.getMonth()+1;letd=date.getDate();letH=date.getHours();letmm=......
  • 优雅地解析HTML文档-Jsoup
    一、介绍Jsoup是一个流行的JavaHTML解析器,它主要用于用于从Web页面中提取并解析HTML数据。它提供了一种简单而优雅的方式,使得开发人员可以快速解析HTML并从中提取数据。二、特性1.遵循HTML5标准。2.解析速度快,灵活性强。3.API易于使用,并提供了丰富的文档。4.......
  • 代码随想录算法训练营第十六天| 找树左下角的值 路径总和 从中序与后序遍历序列
    找树左下角的值1,层序遍历,较为简单:1intfindBottomLeftValue_simple(TreeNode*root){2intresult=0;3if(!root)returnresult;4queue<TreeNode*>selected;5selected.push(root);67while(!selected.empty())8{9......
  • 【tensorflow】连续输入+离散输入的神经网络模型训练代码
    【tensorflow】连续输入+离散输入的神经网络模型训练代码离散输入的转化问题构造词典创建离散数据、转化字典索引、创建连续数据创建离散输入+连续输入模型训练输出全部代码-复制即用  查看本系列三种模型写法:  【tensorflow】连续输入的线性回归模型训练代码 ......
  • 一些关于Research中代码能力的思考
    在Research中,代码能力有时候往往决定了复现的能力。一些优秀的idea并不会公开代码,所以你有相当出色的代码能力就可以很快的实现自己的想法。在之前的research经历中,我有接手他人工作的项目。research的代码和工业界代码无法比较,往往是杂乱无章,我承认这里面有着优秀的idea和新颖的......
  • 实际案例分析 - 根据应用程序日志的记录,反查出哪一行 ABAP 代码产生的这条日志试读版
    本文的写作动机来自笔者知识星球一个朋友的提问:调用bapi创建主数据的时候报错,没有未物料组分配特性参数文件,这个是什么原因?实际查看,特性文件已经生成了这个朋友提供的是应用程序日志(即ApplicationLog)里的截图。关于应用程序日志的详细用法,笔者之前的文章已经做过介绍。......
  • 【JS基础】instanceof 和 typeof
     instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。objectinstanceofconstructortypeof 运算符返回一个字符串,表示操作数的类型。typeofoperandconsole.log('--------------------instanceof-------------------')//t......
  • 【JS基础】hasOwnProperty 和 isPrototypeOf
    hasOwnProperty检查对象是否含有某个属性,无法检查其原型链上是否含有该属性isPrototypeOf检查一个对象是否存在于另一个对象的原型链上,比如parent.isPrototypeof(child)检查parent对象是否在child对象的原型链上 console.log('--------------------hasOwnProperty--......
  • Dart 代码风格
    本文地址目录目录目录Dart代码风格命名风格UpperCamelCaselowercase_with_underscoreslowerCamelCase缩略词和缩写词其他规则顺序格式化Dart代码风格原文命名风格UpperCamelCaseClasses--类名enums--枚举类型typedefs--类型定义typeparameters--类型参数......