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 相关文章推荐
JS location几个方法小姐
Jul 09 Javascript
JavaScript 编写匿名函数的几种方法
Feb 21 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
浅析Node在构建超媒体API中的作用
Jul 30 Javascript
jquery ajax双击div可直接修改div中的内容
Mar 04 Javascript
在IE8上JS实现combobox支持拼音检索功能
May 23 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
原生JS实现随机点名项目的实例代码
Apr 30 Javascript
vue使用自定义指令实现拖拽
Jan 29 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
Oct 30 Javascript
JavaScript中layim之整合右键菜单的示例代码
Feb 06 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初学者头疼问题总结
2006/07/08 PHP
php 错误处理经验分享
2011/10/11 PHP
PHP仿盗链代码
2012/06/03 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
php导入模块文件分享
2015/03/17 PHP
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
vue使用Google地图的实现示例代码
2018/12/19 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
详解python中__name__的意义以及作用
2019/08/07 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
国际贸易实务实训报告
2014/11/05 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS