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 相关文章推荐
JavaScript定义类的几种方式总结
Jan 06 Javascript
使用js画图之正弦曲线
Jan 12 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
Feb 24 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
May 16 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
微信小程序常用简易小函数总结
Feb 01 Javascript
JavaScript 九种跨域方式实现原理
Feb 11 Javascript
js实现点击生成随机div
Jan 16 Javascript
原生js实现九宫格拖拽换位
Jan 26 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
PHP多个版本的分析解释
2011/07/21 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
php时间计算相关问题小结
2016/05/09 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
Python实现的检测网站挂马程序
2014/11/30 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
python实现扫雷游戏
2020/03/03 Python
python 绘制国旗的示例
2020/09/27 Python
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
Ajax请求总共有多少种Callback
2016/07/17 面试题
光电信息专业应届生求职信
2013/10/07 职场文书
考博专家推荐信
2014/05/10 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python