feat: 重构主应用逻辑,分离挂载操作到 main.js,优化中文语言包加载
This commit is contained in:
@@ -126,7 +126,9 @@
|
||||
<!-- xterm.js -->
|
||||
<script src="https://unpkg.com/xterm@5.3.0/lib/xterm.js"></script>
|
||||
<script src="https://unpkg.com/xterm-addon-fit@0.8.0/lib/xterm-addon-fit.js"></script>
|
||||
<!-- 组件 -->
|
||||
<!-- 主应用(创建 Vue 实例,但不挂载) -->
|
||||
<script src="./js/app.js"></script>
|
||||
<!-- 组件(注册到 app) -->
|
||||
<script src="./js/components/dashboard.js"></script>
|
||||
<script src="./js/components/llm-config.js"></script>
|
||||
<script src="./js/components/channels-config.js"></script>
|
||||
@@ -135,7 +137,7 @@
|
||||
<script src="./js/components/scheduler.js"></script>
|
||||
<script src="./js/components/terminal.js"></script>
|
||||
<script src="./js/components/logs.js"></script>
|
||||
<!-- 主应用 -->
|
||||
<script src="./js/app.js"></script>
|
||||
<!-- 挂载应用 -->
|
||||
<script src="./js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,6 +7,18 @@ const { createApp, ref, reactive, computed, onMounted, watch } = Vue;
|
||||
// API 基础路径
|
||||
const API_BASE = '/api';
|
||||
|
||||
// 全局 app 变量,供组件注册使用
|
||||
var app = null;
|
||||
|
||||
// 获取 Element Plus 中文语言包(兼容不同变量名)
|
||||
const zhCnLocale = (function() {
|
||||
if (typeof ElementPlusLocaleZhCn !== 'undefined') return ElementPlusLocaleZhCn;
|
||||
if (typeof ELEMENT_PLUS_LOCALE_ZH_CN !== 'undefined') return ELEMENT_PLUS_LOCALE_ZH_CN;
|
||||
// 如果都没有,返回 undefined,Element Plus 会使用默认英文
|
||||
console.warn('Element Plus 中文语言包未加载');
|
||||
return undefined;
|
||||
})();
|
||||
|
||||
// API 请求封装
|
||||
const api = {
|
||||
async get(url) {
|
||||
@@ -40,7 +52,7 @@ const api = {
|
||||
};
|
||||
|
||||
// 创建 Vue 应用
|
||||
const app = createApp({
|
||||
app = createApp({
|
||||
setup() {
|
||||
// 状态
|
||||
const isCollapsed = ref(false);
|
||||
@@ -230,7 +242,7 @@ const app = createApp({
|
||||
saveLLMConfig,
|
||||
saveChannelsConfig,
|
||||
saveProxyConfig,
|
||||
zhCn: ElementPlusLocaleZhCn
|
||||
zhCn: zhCnLocale
|
||||
};
|
||||
}
|
||||
});
|
||||
@@ -243,5 +255,4 @@ for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
|
||||
// 使用 Element Plus
|
||||
app.use(ElementPlus);
|
||||
|
||||
// 挂载应用
|
||||
app.mount('#app');
|
||||
// 注意:挂载操作在 main.js 中进行,确保组件先注册
|
||||
|
||||
13
src/minenasai/webtui/static/webui/js/main.js
Normal file
13
src/minenasai/webtui/static/webui/js/main.js
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* MineNASAI WebUI 入口文件
|
||||
* 在所有组件注册完成后挂载应用
|
||||
*/
|
||||
|
||||
// 确保 app 存在
|
||||
if (typeof app !== 'undefined' && app) {
|
||||
// 挂载应用
|
||||
app.mount('#app');
|
||||
console.log('MineNASAI WebUI 已启动');
|
||||
} else {
|
||||
console.error('Vue 应用初始化失败,请检查控制台错误');
|
||||
}
|
||||
Reference in New Issue
Block a user