在vue中使用hilightjs-line-numbers实现代码高亮并且增加行号

highlight.js

实现代码高亮是很容易的,有很多库都支持,比较有名的是highlightjs,它的使用方法是:

  1. 先引入css文件和js文件
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.3/styles/default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.3/highlight.min.js"></script>
  1. 再将你的代码用<code>包裹
<code>{{ 你的代码 }}</code>
  1. 再调用hljs的高亮函数,它的原理是找到所有的code标签,然后通过操作DOM,给你的代码设置高亮样式。
<script>
		hljs.initHighlightingOnLoad();
	</script>

highlightjs-line-numbers.js

hilightjs-line-numbers.js在highlight.js的基础上,给代码增加了行号,项目地址👇:

https://github.com/wcoder/highlightjs-line-numbers.js

它的原理是将highlight.js渲染结构改装成<table>,第一列是行号,第二列才是代码。这种思路是非常棒的!

它的使用方法是在highlight.js的使用方法上加了两步:

  1. 除了引用highlight.js之外,还要引用highlightjs-line-numbers.js
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.3/styles/default.min.css">
	<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.3/highlight.min.js"></script>
  <script src="../src/highlightjs-line-numbers.js"></script>
  1. 将你的代码用<pre><code>包裹
<pre><code>{{ 你的代码 }}</code></pre>
  1. 调用
<script>
		hljs.initHighlightingOnLoad();
		hljs.initLineNumbersOnLoad({
            // singleLine:true,
            // startFrom: 5,
        });
	</script>

在vue中使用

奶奶的,在vue的组件中引用这个库,发现总是不能正确调用。我试了好久,终于找到了一个很nice的方法,就是直接在public下的index.html中引用,然后在组件中调用。

image-20230317001209249

效果差强人意,但总算是把功能实现了

image-20230317001321999

其它实现方法

在网上搜索,会发现还有另一种实现原理:使用vue.directive,自动在代码前面加一个<ul>,显示行号;这种方法也可以实现,但是样式很难调整,容易出现行号错位。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值