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 Tips(2) 关于$()包装集你不知道的
Dec 14 Javascript
通过隐藏iframe实现文件下载的js方法介绍
Feb 26 Javascript
移动设备web开发首选框架:zeptojs介绍
Jan 29 Javascript
JavaScript学习笔记之DOM基础 2.4
Aug 14 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
Bootstrap表单布局样式代码
May 31 Javascript
JavaScript实现简单的四则运算计算器完整实例
Apr 28 Javascript
JS实现动态无缝轮播
Jan 11 Javascript
Vue toFixed保留两位小数的3种方式
Oct 23 Javascript
微信小程序实现单个或多个倒计时功能
Nov 01 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
详解TypeScript中的类型保护
Apr 29 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 全局变量范围分析
2009/08/07 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
jquery插件开发方法(初学者)
2012/02/03 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
python如何修改装饰器中参数
2018/03/20 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
python之super的使用小结
2018/08/13 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
解析Python的缩进规则的使用
2019/01/16 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
初中考试作弊检讨书
2014/02/01 职场文书
学生检讨书怎么写
2014/10/09 职场文书
优秀班集体申报材料
2014/12/25 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
浅析Python中的套接字编程
2021/06/22 Python
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫