|
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