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文本框高亮显示插件代码
Apr 02 Javascript
extjs3 combobox取value和text案例详解
Feb 06 Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 Javascript
js判断日期时间有效性的方法
Oct 24 Javascript
AngularJS进行性能调优的7个建议
Dec 28 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
Jan 19 Javascript
一百行JS代码实现一个校验工具
Apr 30 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
Quasar Input:type=&quot;number&quot; 去掉上下小箭头 实现加减按钮样式功能
Apr 09 Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
Ant Design的Table组件去除
Oct 24 Javascript
详解nginx配置vue h5 history去除#号
Nov 09 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命名空间(Namespace)简明教程
2014/06/11 PHP
php实现无限级分类
2014/12/24 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
react系列从零开始_简单谈谈react
2017/07/06 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
Django URL传递参数的方法总结
2016/08/28 Python
python实现图片转字符小工具
2019/04/30 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
次世代生活态度:Hypebeast
2018/07/05 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
高中自我评价分享
2013/12/05 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
大学生毕业求职自荐书范文
2014/02/04 职场文书
我的老师教学反思
2014/05/01 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
可怜妈妈观后感
2015/06/09 职场文书
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS
Python实现对齐打印 format函数的用法
2022/04/28 Python