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

最近在总结这一年来制作的网页模块,网站风格统一的情况下,网站页面结构不会改变,因此想记录一部分网站中统一的结构,方便日后维护。

用到的相关技术:

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

做成的效果如图:

因为是在 vue 环境下,因此需要安装以下插件:

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

制作过程中有三个知识点:

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

菜单

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

//外层的数组代表一级菜单,内层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 ,通过遍历这个数组,制作菜单:

 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‘]

很简单。

原文地址:https://www.cnblogs.com/baiyygynui/p/10106685.html

时间: 2024-11-09 09:50:35

使用 prismjs 在网页中高亮显示代码的相关文章

prism.js——让网页中的代码更好看

粗放的代码展示 有时候,网页中会插入代码.直接把代码放入<pre></pre>标签和<code></code>标签里,也算是可以在页面中显示出来. 比如下面这样的: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>直接写代码</title> </hea

JavaScript运行网页中的代码,保存网页中的代码

<!DOCTYPE html> <html> <head> <title>在网页中运行代码,保存代码</title> <meta charset="utf-8"> </head> <body> <textarea id="code" style="width: 500px;height: 300px"> <html> <h

仿CSND实现网页中程序代码高亮显示

关于SyntaxHighlighter 3.0.83的使用 下载SyntaxHighlighter 可以到官方网站下载 在页面引入 引入shCore.js and shCore.css 添加支持相应语言的js文件 需要支持什么语言,就引入该语言对应的JS文件 引入shThemeDefault.css 将需要高亮显示的代码放置在<pre /> 或是<script />中 调用SyntaxHighlighter.all() 方法 实例 程序如下: <meta charset=&q

学习淘宝网页中的代码

1.HTML <!DOCTYPE> 标签 <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. <!DOCTYPE> 声明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令. 在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML.DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容. HTML5 不基于 SG

网页中HTML代码如何实现字体删除线效果

有的朋友在制作网站的时候,需要给字体制作删除线,例如:选择题,错误标识等!那么我们就需要用到了<s>这个标签写法如下 字体删除线: <s>这里是内容</s> 效果如下:未加删除线  加了删除线 当我们在<s>标签里面加入了删除线文字中间就会出现一横线,这就是删除线的效果 原文地址:https://www.cnblogs.com/wicc/p/10778084.html

如何在网页中加入一条竖线

HTML没有直接写竖线的专用标记,使用<hr>来做竖线有局限性,所以竖线只能通过表格table来实现.有2种方法可以写竖线,你可任选一种,例如要高90像素的竖线:1. 代码如:<table height=90 style=border-color:000000;border-left-style:solid;border-width:1px><tr><td valign=top>内容</table>效果如: 内容 2.代码如:<table

【前端】向blog或网站中添加语法高亮显示代码方法总结

向blog或网站中添加语法高亮显示的代码方法总结 文章目录 预备知识 目标 第一类方法:嵌入 第二类方法:外部引用 第三类方法:忽略HTML和PHP 最近在写代码时遇到一个问题,就是如何让代码像在IDE或专业编译器一样能够高亮显示在网页或博客中(如下图显示),上网查了很多资料,下面是我对学习到的方法的归纳总结. 下面的方法基本上都是利用第三方javascript插件实现的,因此不必担心方法有多难,只要拿过来使用就可以了.在讲述方法之前先介绍一下与之条件: 预备知识 HTML和CSS的基本知识 目

ASP.NET 网页中的嵌入式代码块

将代码添加到 ASP.NET 网页中的默认模型要么创建一个代码隐藏类文件(代码隐藏页),要么将页的代码写到具有 runat="server" 特性的 script 块中(单文件页). 编写的代码通常会与页上的控件进行交互. 例如,通过从代码中设置控件的 Text(或其他)属性,可以在页上显示信息. 另一种可能是使用嵌入式代码块将代码直接嵌入到页中. 嵌入式代码块 嵌入式代码块是在呈现页面的过程中执行的服务器代码. 块中的代码可以执行编程语句,并调用当前页类中的函数. 下面的代码示例演示

博客代码:iframe—网页中嵌入其他网页

iframe 是一个可以把另外一个网页嵌入到一个网页里的代码,非常有用.对于一个内容不错的网页,要方便地把它搬到自己的博客里,用这个代码最合适.而对于在新浪博客里不支持的一些网页效果和代码,可先把他们设置好,在支持他们的网站上使用,或上传到一个免费的网络空间或网络硬盘里,获取相应的网页地址,然后用 iframe嵌入到新浪博客里,非常好用! 一.固定位置的iframe代码: <DIV align=center><IFRAME src="http://weather.265.com