|
45 | 45 | <el-button class="float-right" text type="primary" @click="copy(item.code)"> |
46 | 46 | {{ t('common.copy') }} |
47 | 47 | </el-button> |
48 | | - <div v-highlight> |
49 | | - <code>{{ item.code }}</code> |
| 48 | + <div> |
| 49 | + <pre><code class="hljs" v-html="highlightedCode(item)"></code></pre> |
50 | 50 | </div> |
51 | 51 | </el-tab-pane> |
52 | 52 | </el-tabs> |
@@ -180,6 +180,34 @@ const copy = async (text: string) => { |
180 | 180 | message.success(t('common.copySuccess')) |
181 | 181 | } |
182 | 182 | } |
| 183 | +
|
| 184 | +/** |
| 185 | + * 代码高亮 |
| 186 | + */ |
| 187 | +import hljs from 'highlight.js' // 导入代码高亮文件 |
| 188 | +import 'highlight.js/styles/github.css' // 导入代码高亮样式 |
| 189 | +import java from 'highlight.js/lib/languages/java' |
| 190 | +import xml from 'highlight.js/lib/languages/java' |
| 191 | +import javascript from 'highlight.js/lib/languages/javascript' |
| 192 | +import sql from 'highlight.js/lib/languages/sql' |
| 193 | +import typescript from 'highlight.js/lib/languages/typescript' |
| 194 | +const highlightedCode = (item) => { |
| 195 | + const language = item.filePath.substring(item.filePath.lastIndexOf('.') + 1) |
| 196 | + const result = hljs.highlight(language, item.code || '', true) |
| 197 | + return result.value || ' ' |
| 198 | +} |
| 199 | +
|
| 200 | +/** 初始化 **/ |
| 201 | +onMounted(async () => { |
| 202 | + // 注册代码高亮的各种语言 |
| 203 | + hljs.registerLanguage('java', java) |
| 204 | + hljs.registerLanguage('xml', xml) |
| 205 | + hljs.registerLanguage('html', xml) |
| 206 | + hljs.registerLanguage('vue', xml) |
| 207 | + hljs.registerLanguage('javascript', javascript) |
| 208 | + hljs.registerLanguage('sql', sql) |
| 209 | + hljs.registerLanguage('typescript', typescript) |
| 210 | +}) |
183 | 211 | </script> |
184 | 212 | <style lang="scss"> |
185 | 213 | .app-infra-codegen-preview-container { |
|
0 commit comments