AWin/aardiowin/main.aardio

86 lines
2.4 KiB
Plaintext
Raw Normal View History

2024-05-15 07:44:56 +00:00
import win.ui;
/*
载入配置,配置文件读取顺序,后读的可以覆盖先读的值。
1. 读取当前路径下的 config.json
2. 读取 %APPDATA%/%app% 路径下的 config.json。其中 %APPDATA% 为操作系统提供的当前用户软件目录。
%app% 为当前路径下的 config.json 中配置的 app
*/
gConfig = {}
// 使用示例
try {
gConfig = loadConfigs()
console.log(configs);
} catch (e) {
console.error(e.message);
}
/*DSG{{*/
mainForm = win.form(text="awin";right=759;bottom=469)
mainForm.add()
/*}}*/
import web.view;
var theView = web.view(mainForm);
//导出为 JavaScript 中的 aardio 对象
theView.external = {
onCounterUpdate = function(name,value){
if(name!==null && value!==null){
return "aardio 返回的值:网页中 React 状态值改变了value:"+value;
}
};
}
import wsock.tcp.simpleHttpServer;
/*
如果导入 simpleHttpServer则单个斜杠开头的路径会转换为嵌入式 HTTP 地址,
如果同时文件名为 index.html ,则上级目录自动设为根目录,前端应用发布根目录使用默认的 "/" 即可,不需要改动。
去掉下面的前端项目调试端口号 37151 或发布 EXE 后运行才会打开 "\web\index.html"。
否则打开 http://localhost:37151
*/
theView.go("\web\index.html",37151);
mainForm.show();
win.loopMessage();
// 配置载入函数
function loadConfigs() {
var configs = {};
var currentPath = file.dir();
var appDataPath = env.get("APPDATA");
// 读取当前路径下的 config.json
var currentConfigPath = file.path(currentPath, "config.json");
if (file.exists(currentConfigPath)) {
var currentConfigContent = file.read(currentConfigPath);
configs = json.parse(currentConfigContent);
}
// 从当前路径下的 config.json 中读取 app 值
var appValue = configs.app;
if (!appValue) {
error("'app' value not found in the config file.");
}
// 构建 %APPDATA%/%app% 路径
var appDataConfigPath = file.path(appDataPath, appValue, "config.json");
// 读取 %APPDATA%/%app% 路径下的 config.json
if (file.exists(appDataConfigPath)) {
var appDataConfigContent = file.read(appDataConfigPath);
var appDataConfig = json.parse(appDataConfigContent);
// 合并配置,后读取的覆盖先读取的
object.merge(configs, appDataConfig, true);
}
return configs;
}