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 相关文章推荐
基于node.js的快速开发透明代理
Dec 25 Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 Javascript
js禁止回车提交表单的示例代码
Dec 23 Javascript
js取float型小数点后两位数的方法
Jan 18 Javascript
jQuery实现Email邮箱地址自动补全功能代码
Nov 03 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
Sep 09 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
利用JavaScript实现栈的数据结构示例代码
Aug 02 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 jQuery
通过原生vue添加滚动加载更多功能
Nov 21 Javascript
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
聊天室php&amp;mysql(五)
2006/10/09 PHP
php发送post请求的三种方法
2014/02/11 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
php抽象类用法实例分析
2015/07/07 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
PHP实现简单日历类编写
2020/08/28 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
京东优选小程序的实现代码示例
2020/02/25 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
Python中的is和id用法分析
2015/01/26 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
python调用c++传递数组的实例
2019/02/13 Python
python pytest进阶之fixture详解
2019/06/27 Python
智能旅行箱:Horizn Studios
2018/04/30 全球购物
一个大学生十年的职业规划
2014/01/17 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
2014年国培研修感言
2014/03/09 职场文书
安全教育演讲稿
2014/05/09 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
2014年班务工作总结
2014/12/02 职场文书
初中学生操行评语
2014/12/26 职场文书
小学生优秀评语
2014/12/29 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
Python&Matlab实现樱花的绘制
2022/04/07 Python
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang