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 select(列表)的操作(取值/赋值)
Aug 06 Javascript
JavaScript中变量提升 Hoisting
Jul 03 Javascript
JS正则中的RegExp对象对象
Nov 07 Javascript
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
extjs每个组件要设置唯一的ID否则会出错
Jun 15 Javascript
jquery遍历json对象集合详解
May 18 Javascript
ionic实现底部分享功能
May 11 Javascript
Js中async/await的执行顺序详解
Sep 22 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
Jan 10 Javascript
微信小程序实现锚点功能
Nov 20 Javascript
详解vue3.0 diff算法的使用(超详细)
Jul 01 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操作mysql数据库分表的方法
2016/06/09 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
javascript getElementsByClassName函数
2010/04/01 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
JS三级联动代码格式实例详解
2019/12/30 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
全面分析Python的优点和缺点
2018/02/07 Python
python3.x实现发送邮件功能
2018/05/22 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
PHP经典面试题
2016/09/03 面试题
高中毕业自我鉴定
2013/12/19 职场文书
中学教师教育感言
2014/02/21 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
小学元宵节活动总结
2015/02/06 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
田径运动会广播稿
2015/08/19 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
Python中的 enumerate和zip详情
2022/05/30 Python