vue项目页面嵌入代码块vue-prism-editor的实现


Posted in Javascript onOctober 30, 2020

需求:

vue项目页面嵌入代码块vue-prism-editor的实现

1. 可输入代码,并且代码语法高亮
2. 支持编辑和不可编辑模式
3. 提交到后端到代码内容为字符串格式

实现

在gitbug上找到vue-prism-editor,可以满足以上需求。

使用

1.安装vue-prism-editor

npm install vue-prism-editor

由于vue-prism-editor需要依赖 prismjs,所以还需要安装prismjs

npm install prismjs

2.在需要使用vue-prism-editor的组件中引入

import { PrismEditor } from "vue-prism-editor";
import "vue-prism-editor/dist/prismeditor.min.css"; // import the styles somewhere

// import highlighting library (you can use any library you want just return html string)
import { highlight, languages } from "prismjs/components/prism-core";
import "prismjs/components/prism-clike";
import "prismjs/components/prism-javascript";
import "prismjs/themes/prism-tomorrow.css"; // import syntax highlighting styles

3.html代码

<prism-editor
 class="my-editor height-300"
 v-model="code"
 :highlight="highlighter"
 :line-numbers="lineNumbers"
></prism-editor>

code----为需要高亮显示的代码内容
highlighter----定义在methods中的一个方法,用于把code高亮显示
lineNumbers----是否可编辑标识

4.js代码

export default {
 components: {
 PrismEditor
 },
 data: () => ({
 code: 'console.log("Hello World")',
 lineNumbers: true, // true为编辑模式, false只展示不可编辑
 }),
 methods: {
 highlighter(code) {
 return highlight(code, languages.js); //returns html
 }
 }
};

5.css代码

<style lang="scss">
/* required class */
.my-editor {
 background: #2d2d2d;
 color: #ccc;

 font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
 font-size: 14px;
 line-height: 1.5;
 padding: 5px;
}

/* optional */
.prism-editor__textarea:focus {
 outline: none;
}

/* not required: */
.height-300 {
 height: 300px;
}
</style>

注意: css样式必写,不然编辑器没有样式,只是纯白页面展示
“height-300” 是给编辑器设置高度的,高度可自行设置,也可以不设置,这个样式非必需

到这里,功能基本就实现了。
但是在过程中遇到一些问题,这里也一并总结。

问题

1.如果仅安装vue-prism-editor,没有安装prismjs,会报以下错误,npm install prismjs即可

vue项目页面嵌入代码块vue-prism-editor的实现

2.如果报错中有提示升级或者安装ajv或者vue2.6.X版本,根据提示安装即可

npm install ajv@^6.9.1
npm install vue@^2.6.11

个人理解,如果ajv和vue版本过低,可能会导致vue-prism-editor依赖的相关东西安装不上,建议升级完ajv和vue之后,再重新安装vue-prism-editor和prismjs.

3.vue与vue-template-compiler版本不一致

vue项目页面嵌入代码块vue-prism-editor的实现

卸载低版本vue-template-compiler

npm uninstall vue-template-compiler

然后安装跟vue同样版本的vue-template-compiler

npm install vue-template-compiler@2.6.11

到此这篇关于vue项目页面嵌入代码块vue-prism-editor的文章就介绍到这了,更多相关vue项目页面嵌入代码块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
Javascript 刷新全集常用代码
Nov 22 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
Nov 20 Javascript
js切换光标示例代码
Oct 10 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
Oct 24 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
Jquery元素追加和删除的实现方法
May 24 Javascript
JS代码实现根据时间变换页面背景效果
Jun 16 Javascript
基于JavaScript实现前端数据多条件筛选功能
Aug 19 Javascript
JavaScript面试出现频繁的一些易错点整理
Mar 29 Javascript
angular实现input输入监听的示例
Aug 31 Javascript
基于vue实现web端超大数据量表格的卡顿解决
Apr 02 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
Oct 30 #Javascript
vue2.0 watch里面的 deep和immediate用法说明
Oct 30 #Javascript
JavaScript实现轮播图效果
Oct 30 #Javascript
vue组件添加事件@click.native操作
Oct 30 #Javascript
解决removeEventListener 无法清除监听的问题
Oct 30 #Javascript
详解 javascript对象创建模式
Oct 30 #Javascript
ES6中的Javascript解构的实现
Oct 30 #Javascript
You might like
一个简单的域名注册情况查询程序
2006/10/09 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
php文件上传类完整实例
2016/05/14 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
js 图片等比例缩放代码
2010/05/13 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
2016/12/21 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
js实现小星星游戏
2020/03/23 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
Python列表操作方法详解
2020/02/09 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
优秀的自荐信要注意哪些
2014/01/03 职场文书
出生公证书样本
2014/04/04 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
公司授权委托书格式范文
2014/10/02 职场文书