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的一些特性和用法整理小结
Jan 13 Javascript
基于Jquery的开发个代阴影的对话框效果代码
Jul 28 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
Apr 07 Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 Javascript
Javascript中的call()方法介绍
Mar 15 Javascript
Bootstrap的基本应用要点浅析
Dec 19 Javascript
JavaScript调试的多个必备小Tips
Jan 15 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 Javascript
页面内锚点定位及跳转方法总结(推荐)
Apr 24 Javascript
js中apply和call的理解与使用方法
Nov 27 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实现在线通讯录功能(附源码)
2016/05/13 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
PHP中串行化用法示例
2016/11/16 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
Prototype Object对象 学习
2009/07/12 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
django 常用orm操作详解
2017/09/13 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
keras 多任务多loss实例
2020/06/22 Python
Python实现手绘图效果实例分享
2020/07/22 Python
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
岗位职责的含义
2013/11/17 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
毕业自我评价
2014/02/05 职场文书
转让协议书范本
2014/04/15 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
英文感谢信范文
2015/01/21 职场文书
开学典礼致辞
2015/07/29 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书