使用 prismjs 在网页中高亮显示代码

最近在总结这一年来制做的网页模块,网站风格统一的状况下,网站页面结构不会改变,所以想记录一部分网站中统一的结构,方便往后维护。css

用到的相关技术:html

vue, element-ui, prismjs, vue-prism-editor, vue-router

作成的效果如图:vue

由于是在 vue 环境下,所以须要安装如下插件:vue-router

npm i prismjs
npm i vue-prism-editor
npm i element-ui

制做过程当中有三个知识点:npm

  1. element-ui 菜单
  2. 展现代码经过组件间传值
  3. prismjs 代码皮肤

菜单

sibar.js 菜单结构是经过一个json实现的,数据结构使用相似 router 的组件嵌套方式,方便维护:element-ui

//外层的数组表明一级菜单,内层sub数组表明二级菜单。
module.exports = [{
    name: 'Anviz Module',
    id:'anviz',
    sub: [{
        name: 'layout 布局',
        componentName: 'AnvizLayout'
        }, {
        name: 'container 布局容器',
        componentName: 'AnvizContainer'
    }]
},{
    name: 'Module',
    id: 'utec',
    sub: [{
            name: 'details',
            componentName: 'ProductCard'
        }, {
            name: 'table',
            componentName: 'Table'
    }]
}]

在 Sidebar 组件中加载这个 sibar.js ,经过遍历这个数组,制做菜单:json

 
 import menu from '@/config/sibar.js;
<el-submenu v-for="item in menu" :index="item.id" :key="item.id">
     <template slot="title">
         <i class="icon icon-rem-twentyfour icon-dashbord"></i>
         <span v-text="item.name"></span>
     </template>
     <div class="normal-padding" v-for="sub in item.sub" :key="sub.componentName">
         <el-menu-item :index="sub.componentName" v-text="sub.name"></el-menu-item>
     </div>
</el-submenu>

代码皮肤

代码显示区域为一个 CodeView 的子组件,使用 prism-editor 的方法显示相关代码。 prism-editor 支持将 code 定义为变量,经过改变 code 的不一样的值来显示不一样的内容。数组

<prism-editor :code="htmlCode" language="html" class="my-editor"></prism-editor>

传值

而父组件给子组件传的值是定义不一样的显示内容,好比 html/css/js等,显示的内容直接使用模板字符串的方式,将整个结构或结构所需样式传递。数据结构

<template>
 <div>
     <codeView :htmlCode="htmlCode" :jsCode="jsCode" :cssCode="cssCode"></codeView>
 </div>
</template>

let htmlCode = ``
let jsCode = ``
let cssCode = ``
//子组件接收并给组件变量赋值
props:['htmlCode','jsCode','cssCode']

 

很简单。ide

相关文章
相关标签/搜索