前言
写点代码让网页直接展示代码文件的内容!
正文
显示代码文件:codeFile.js
这需要引入:
1 |
|
设计一个 codeFile
类表示文本文件的代码块,用于控制文本文件的相关逻辑:
具有如下功能:
-
自动根据文件地址返回代码语言,渲染代码块
Tip
fetch()
是一个用于发送网络请求的 JavaScript 原生 API,基于Promise
,用于替代传统的XMLHttpRequest
。它可以发起各种 HTTP 请求(如 GET、POST 等),并处理响应数据。基本用法:
1
2
3
4fetch(url, options)
.then(response => response.json()) // 解析响应数据
.then(data => console.log(data)) // 使用响应数据
.catch(error => console.error(error)); // 错误处理 -
使用
highlight.js
进行代码高亮:Tip
`highlight.js` 会将识别下列结构:
1
<pre class="hljs lang"><code></code></pre>
-
使用
highlightjs-line-numbers.min.js
给代码块添加行号。Tip
这段代码将扫描网页中的所有高亮后的代码块并添加行号。
1
hljs.initLineNumbersOnLoad();
-
所有代码块实例渲染完后,派发消息
allCodeFilesRendered
供其它代码使用。 -
销毁代码块
使用如下代码将文本文件内容渲染成代码块:
1 |
|
代码文件工具栏:codeFileTools.js
这需要引入:
1 |
|
sequenceDiagram codeFile.js->>codeFileTools.js: $(document).trigger('CodeFileRendered')
给创建的代码块添加一个工具栏,具有如下功能:
- 收缩代码块
- 显示文件名
- 复制文件内容
- 下载文件
其余的交给 CSS(为了适应主题随便写写)。
显示代码文件树状结构:codeFileTree.js
在 codeFile
类的基础上,借助 jstree
,实现树状文件结构的展示!设计 CodeFileTreeNode
类和 CodeFileTree
类:
classDiagram class CodeFile { + isInitialized + Instances + link + fileName + lang + text + $codeElement + $preElement + $root + needRender + rendered + getFileName() + getLang() + loadFile() + render() + destroy() + initLineNumbers() + getLanguageFromExtension() } class codeFileTreeNode { + isFolder + folderName + children + fileName + icon + convertToJsTreeData() } class codeFileTree { + id + root + defaultNode + jsTreeData + codeFile + jsTree + container + render() } codeFileTreeNode --o codeFileTree CodeFile ..> codeFileTree
这需要引入:
1 |
|
再写个 CSS,大功告成!
使用方法:
1 |
|
效果(点击文件图标展示文件内容):