perf: 优化体积,highlight.js按需导入与i18n按需加载 (#696)
* perf: 优化打包体积,highlight.js按需导入与i18n按需加载 1. highlight.js: 从全量导入改为 core + 注册27种常用语言,减少约500~800KB 2. i18n: 只同步加载en语言包,其他8种语言改为异步加载,首屏减少约350~400KB 3. 使用vue-i18n的setLocaleMessage API动态注册语言包 4. 新增switchLocale函数统一处理语言切换 5. 同步更新相关测试文件的mock路径和API适配 * 修复类型断言
This commit is contained in:
committed by
GitHub
parent
1b4733e755
commit
f6df0fecfa
@@ -1,6 +1,62 @@
|
||||
import hljs from 'highlight.js'
|
||||
import hljs from 'highlight.js/lib/core'
|
||||
import bash from 'highlight.js/lib/languages/bash'
|
||||
import c from 'highlight.js/lib/languages/c'
|
||||
import cpp from 'highlight.js/lib/languages/cpp'
|
||||
import csharp from 'highlight.js/lib/languages/csharp'
|
||||
import css from 'highlight.js/lib/languages/css'
|
||||
import diff from 'highlight.js/lib/languages/diff'
|
||||
import go from 'highlight.js/lib/languages/go'
|
||||
import xml from 'highlight.js/lib/languages/xml'
|
||||
import java from 'highlight.js/lib/languages/java'
|
||||
import javascript from 'highlight.js/lib/languages/javascript'
|
||||
import json from 'highlight.js/lib/languages/json'
|
||||
import kotlin from 'highlight.js/lib/languages/kotlin'
|
||||
import lua from 'highlight.js/lib/languages/lua'
|
||||
import markdown from 'highlight.js/lib/languages/markdown'
|
||||
import php from 'highlight.js/lib/languages/php'
|
||||
import python from 'highlight.js/lib/languages/python'
|
||||
import r from 'highlight.js/lib/languages/r'
|
||||
import ruby from 'highlight.js/lib/languages/ruby'
|
||||
import rust from 'highlight.js/lib/languages/rust'
|
||||
import scss from 'highlight.js/lib/languages/scss'
|
||||
import shell from 'highlight.js/lib/languages/shell'
|
||||
import sql from 'highlight.js/lib/languages/sql'
|
||||
import swift from 'highlight.js/lib/languages/swift'
|
||||
import typescript from 'highlight.js/lib/languages/typescript'
|
||||
import yaml from 'highlight.js/lib/languages/yaml'
|
||||
import plaintext from 'highlight.js/lib/languages/plaintext'
|
||||
import { copyToClipboard } from '@/utils/clipboard'
|
||||
|
||||
hljs.registerLanguage('bash', bash)
|
||||
hljs.registerLanguage('c', c)
|
||||
hljs.registerLanguage('cpp', cpp)
|
||||
hljs.registerLanguage('csharp', csharp)
|
||||
hljs.registerLanguage('css', css)
|
||||
hljs.registerLanguage('diff', diff)
|
||||
hljs.registerLanguage('go', go)
|
||||
hljs.registerLanguage('xml', xml)
|
||||
hljs.registerLanguage('html', xml)
|
||||
hljs.registerLanguage('java', java)
|
||||
hljs.registerLanguage('javascript', javascript)
|
||||
hljs.registerLanguage('js', javascript)
|
||||
hljs.registerLanguage('json', json)
|
||||
hljs.registerLanguage('kotlin', kotlin)
|
||||
hljs.registerLanguage('lua', lua)
|
||||
hljs.registerLanguage('markdown', markdown)
|
||||
hljs.registerLanguage('php', php)
|
||||
hljs.registerLanguage('python', python)
|
||||
hljs.registerLanguage('r', r)
|
||||
hljs.registerLanguage('ruby', ruby)
|
||||
hljs.registerLanguage('rust', rust)
|
||||
hljs.registerLanguage('scss', scss)
|
||||
hljs.registerLanguage('shell', shell)
|
||||
hljs.registerLanguage('sql', sql)
|
||||
hljs.registerLanguage('swift', swift)
|
||||
hljs.registerLanguage('typescript', typescript)
|
||||
hljs.registerLanguage('ts', typescript)
|
||||
hljs.registerLanguage('yaml', yaml)
|
||||
hljs.registerLanguage('plaintext', plaintext)
|
||||
|
||||
const LANGUAGE_ALIASES: Record<string, string> = {
|
||||
shellscript: 'bash',
|
||||
sh: 'bash',
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { NSelect } from 'naive-ui'
|
||||
import { switchLocale } from '@/i18n'
|
||||
|
||||
const { locale } = useI18n()
|
||||
|
||||
@@ -16,7 +17,8 @@ const options = [
|
||||
{ label: 'Português', value: 'pt' },
|
||||
]
|
||||
|
||||
function handleChange(val: string) {
|
||||
async function handleChange(val: string) {
|
||||
await switchLocale(val)
|
||||
locale.value = val
|
||||
localStorage.setItem('hermes_locale', val)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user