封装代码编辑组件

简介: 封装代码编辑组件

1.效果


封装的这个组件,可以通过props传入数据,使后端的数据可以以代码的形式展现在页面上,供用户浏览,此组件的效果类似于CSDN的代码段功能。

1. 可输入代码,并且代码语法高亮

2. 支持编辑和不可编辑模式

3. 提交到后端到代码内容为字符串格式

效果如下:

image.png

2. 安装插件


1.安装vue-prism-editor
npm install vue-prism-editor
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.组件完整代码如下:


自己新建 .vue文件,然后注册为全局组件。即可任意使用。

<!--
 * @Author: your name
 * @Date: 2022-01-06 11:42:21
 * @LastEditTime: 2022-01-06 11:45:16
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \dogsziji\src\views\about\index.vue
-->
<template>
  <div>
    <prism-editor
      class="my-editor height-300"
      v-model="code"
      :highlight="highlighter"
      :line-numbers="lineNumbers"
    ></prism-editor>
  </div>
</template>
<script>
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
export default {
  components: {
    PrismEditor
  },
  props: ['code'],
  data: () => ({
    lineNumbers: false // true为编辑模式, false只展示不可编辑
  }),
  methods: {
    highlighter (code) {
      return highlight(code, languages.js) // returns html
    }
  }
}
</script>
<style lang="scss">
/* required class css样式必写,不然编辑器没有样式,只是纯白页面展示
“height-300” 是给编辑器设置高度的,高度可自行设置,也可以不设置,这个样式非必需*/
.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: 200px;
}
</style>
相关文章
|
前端开发 JavaScript API
020 Umi@4 中如何实现动态菜单
020 Umi@4 中如何实现动态菜单
880 0
020 Umi@4 中如何实现动态菜单
|
2月前
Qt表格中的自定义编辑组件---------------自定义代理QStyledItemDelegate
Qt表格中的自定义编辑组件---------------自定义代理QStyledItemDelegate
40 5
|
8月前
|
监控 数据可视化 前端开发
封装一个贡献度面板组件
封装一个贡献度面板组件
44 0
定义一个事件需要单独新建一个文件吗?底层原理是什么?
定义一个事件需要单独新建一个文件吗?底层原理是什么?
|
JavaScript
怎么封装弹框组件
怎么封装弹框组件
99 0
|
小程序 前端开发 JavaScript
【小程序开发】—— 封装自定义弹窗组件
【小程序开发】—— 封装自定义弹窗组件
160 0
【小程序开发】—— 封装自定义弹窗组件
|
数据安全/隐私保护
uniapp动态切换显示不同内容组件
通过点击注册或是登录按钮切换不同的组件.默认显示登陆界面,登录字样加粗显示,登录页面显示手机号密码登录.
uniapp动态切换显示不同内容组件
|
JavaScript 小程序 计算机视觉
记录一次小程序卡片组件封装的实战
来分析一下我这次所做项目的需求,首先重要的是卡片内部的布局需要卡片组件需要应用在两个场景下,每个场景的部分文本内容有区别,所以需要进行文本控制,而又要考虑到文本长度的问题,所以需要对文本内容进行一些处理,整理一下得出以下三个点
162 0
记录一次小程序卡片组件封装的实战
|
前端开发
前端工作小结28-按钮封装
前端工作小结28-按钮封装
77 0
前端工作小结28-按钮封装
|
数据可视化 图形学 流计算
Unity 基础 之 代码动态监听UI交互组件汇总
通过介绍组件面板和代码示例,演示代码监听UI交互组件。
241 0
Unity 基础 之 代码动态监听UI交互组件汇总