当前位置: 首页 > news >正文

CodeMirror使用

1.什么是Code Mirror

Code Mirror是由js写的一款插件,其功能非常强大,用来实现网页端代码编辑器非常方便。

2.使用Code Mirror

首先要到Code Mirror官网下载此插件,然后在网页中引入即可。http://codemirror.net/

首先,要引用是 lib 目录下的 codemirror.js,还有一个就是同目录下的codemirror.css 文件

<script src="lib/codemirror.js"></script>
<link rel="stylesheet" href="lib/codemirror.css"/>

接下来要引用的就是在mode目录下编辑器中要编辑的语言对应的js文件,下面以python文件为例:

<script src="mode/python/python.js"></script>

引用的文件用于支持对应语言的语法高亮。

在实际项目中,一般都不会直接把body作为编辑器的容器。而最常用的,是使用textarea。

要把 textarea 实现成一个支持高亮的编辑器,CodeMirror 提供了非常简单的方法:

<textarea id="editor" name="editor"></textarea>
var myTextarea = document.getElementById('editor');
var CodeMirrorEditor = CodeMirror.fromTextArea(myTextarea, {
              mode: "text/x-python", 
              lineNumbers: true
});

配置说明

在使用CodeMirror的时候,不管是直接使用 CodeMirror() 还是使用 fromTextArea() ,都可以通过传递第二个参数来配置编辑器。

var myCodeMirror = CodeMirror.fromTextArea(el, {
    // options...
});

options 可以使用的主要参数

value: string | CodeMirror.Doc
编辑器的初始值(文本),可以是字符串或者CodeMirror文档对象(不同于HTML文档对象)。

mode: string | object
通用的或者在CodeMirror中使用的与mode相关联的mime,当不设置这个值的时候,会默认使用第一个载入的mode定义文件。一般地,会使用关联的mime类型来设置这个值;除此之外,也可以使用一个带有name属性的对象来作为值(如:{name: “javascript”, json: true})。可以通过访问CodeMirror.modes和CodeMirror.mimeModes获取定义的mode和MIME。

indentUnit: integer
缩进单位,值为空格数,默认为2 。

extraKeys: object
给编辑器绑定与前面keyMap配置不同的快捷键。

lineNumbers: boolean
是否在编辑器左侧显示行号。

autofocus: boolean
是否在初始化时自动获取焦点。默认情况是关闭的。但是,在使用textarea并且没有明确指定值的时候会被自动设置为true。

要把 textarea 实现成一个支持联想提示的引用下面的文件即可:

<link rel="stylesheet" href="addon/hint/show-hint.css">
<script src="addon/hint/show-hint.js"></script>
<script src="addon/hint/anyword-hint.js"></script>

在开发过程中

注意一:要是代码编辑器是模态框的话,提示及时引用上述文件也提示不出来,原因是层级,提示层没有弹出框和模态框大,需要将show-hint.css的z-index设置的很大即可

注意二:就是多个codeMirror时会相互影响,代码打开会有蒙层覆盖,看不了代码,此时需要每加载一次codeirror需要定时刷新一次,即可解决相互影响问题。

 

转载于:https://www.cnblogs.com/lingwang3/p/7354298.html

相关文章:

  • Sencha Cmd 6 和 Ext JS 6 指南文档(部分官方文档中文翻译)
  • 给你的手机加上安全保障,请设置SIM卡PIN码
  • Linux之RPM包
  • 高性能JavaScript阅读简记(三)
  • 每天学一点Scala之type
  • OC字符串常用函数
  • 百度 语音识别 REST API
  • React Native移动开发实战-3-实现页面间的数据传递
  • Java利用序列化实现对象的深拷贝
  • How to run Java main class and pass application arguments in Maven?
  • Swift2.0语言教程之函数嵌套调用形式
  • Java中Action层、Service层、Modle层和Dao层的功能区分
  • mongodb中直接根据某个字段更新另外一个字段值
  • mysql 索引
  • 收集尝试登录到服务器的密码尝试失败的ip和次数
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Android 控件背景颜色处理
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • go append函数以及写入
  • IndexedDB
  • JavaScript 奇技淫巧
  • Laravel 中的一个后期静态绑定
  • node 版本过低
  • REST架构的思考
  • SegmentFault 2015 Top Rank
  • SpingCloudBus整合RabbitMQ
  • 初识MongoDB分片
  • 翻译--Thinking in React
  • 机器学习 vs. 深度学习
  • 区块链共识机制优缺点对比都是什么
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用docker-compose进行多节点部署
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 收藏好这篇,别再只说“数据劫持”了
  • 新版博客前端前瞻
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #Linux(Source Insight安装及工程建立)
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (1)STL算法之遍历容器
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C语言)字符分类函数
  • (LeetCode) T14. Longest Common Prefix
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (一)kafka实战——kafka源码编译启动
  • (转载)(官方)UE4--图像编程----着色器开发
  • .gitignore文件---让git自动忽略指定文件
  • .naturalWidth 和naturalHeight属性,
  • .net Application的目录
  • .NET Framework .NET Core与 .NET 的区别
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET值类型变量“活”在哪?