vue中使用highlight.js 高亮代码块

项目环境

近期在做旧项目的重构,在搭建新项目的时候使用了Vue+Typescript,在前期的准备工作时,想做一套针对于公司的ui组件库,element-ui很好,但是个人喜欢花里胡哨。希望用户能操作的元素上增添些动画效果。故而自己开始设计些常有的效果组件。所有使用到了highlight.js这个插件。

一、安装Highlight.js依赖项

npm install --save highlight.js

二、自定义Vue.js指令:v-highlightjs

在Vue.js组件中使用highlight.js,我们将创建一个名为highlightjs的自定义Vue.js指令。在main.ts文件中直接声明此指令:

// 代码高亮插件
import hljs from 'highlight.js';
// 必须导入 否则没样式
import 'highlight.js/styles/atom-one-dark-reasonable.css';
const high: any = {
  deep: true,
  bind: function (el: any, binding: any) {
    const targets = el.querySelectorAll('code')
    targets.forEach((target: any) => {
      if (binding.value) {
        target.textContent = binding.value;
      }
      (hljs as any).highlightBlock(target);
    })
  },
  componentUpdated: function (el: any, binding: any) {
    const targets = el.querySelectorAll('code')
    targets.forEach((target: any) => {
      if (binding.value) {
        target.textContent = binding.value;
        (hljs as any).highlightBlock(target);
      }
    })
  }
}
Vue.directive('highlightjs', high)

三、使用v-highlight.js

<pre v-highlightjs><code class="javascript">{{ sourcecode }}</code></pre>
<pre v-highlightjs="sourcecode"><code class="javascript"></code></pre>

四、选择样式

highlightjs官网
选择想要的styles,然后在main.ts的导入样式文件给替换成对应的右侧文件即可

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基于Vue的一些资料 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 element★...
    尝了又尝阅读 1,176评论 0 1
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    流觞小菜鸟阅读 1,842评论 2 8
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    小姜先森o0O阅读 9,622评论 0 72
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    随行者pgl阅读 3,358评论 0 15
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    柴东啊阅读 15,876评论 2 140