初始化项目
This commit is contained in:
commit
89e908fe21
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/.idea/
|
9
Readme.md
Normal file
9
Readme.md
Normal file
@ -0,0 +1,9 @@
|
||||
# AWin
|
||||
一个基于 aardio 简单封装的窗口,只运行于 Windows 下。用于使用 web 技术快速开发 windows 程序。
|
||||
|
||||
|
||||
|
||||
## TODO
|
||||
[ ] 静态 tray
|
||||
[ ] 动态 tray
|
||||
[ ] 日志模块
|
10
aardiowin/default.aproj
Normal file
10
aardiowin/default.aproj
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project ver="10" name="awin" libEmbed="true" icon="..." ui="win" output="awin.exe" CompanyName="aardio" FileDescription="awin" LegalCopyright="Copyright (C) 作者 2024" ProductName="awin" InternalName="awin" FileVersion="0.0.0.1" ProductVersion="0.0.0.1" publishDir="/dist/" dstrip="false">
|
||||
<file name="main" path="main.aardio"/>
|
||||
<folder name="窗体" path="forms" comment="" embed="true" local="false" ignored="false"/>
|
||||
<folder name="网页" path="web" embed="true" comment="目录" local="true">
|
||||
<file name="index.html" path="web\index.html" comment="web\index.html"/>
|
||||
<file name="index.js" path="web\index.js" comment="web\index.js"/>
|
||||
</folder>
|
||||
<folder name="网页源码" path="web.src" embed="false" comment="目录" local="false" ignored="true"/>
|
||||
</project>
|
17
aardiowin/lib/config.aardio
Normal file
17
aardiowin/lib/config.aardio
Normal file
@ -0,0 +1,17 @@
|
||||
//config 配置文件
|
||||
import fsys.config;
|
||||
config = fsys.config("/config/");
|
||||
//config = fsys.config( io.appData("/软件作者/应用程序名/") );
|
||||
|
||||
//不需要序列化的配置名字前请添加下划线
|
||||
namespace config {
|
||||
__appName = "应用程序名";
|
||||
__website = "http://www.aardio.com/";
|
||||
}
|
||||
|
||||
/**intellisense(config)
|
||||
__appName = 应用程序名
|
||||
__website = 官方网站
|
||||
saveAll() = 写入所有配置到文件
|
||||
? = 获取值时指定不以下划线开始的配置表名称,\n返回一个可自动序列化到同名配置文件的表对象。\n如果此对象名以下划线开始,则可以正常读写值不会序列化为配置文件。\n否则不能对此对象直接赋值,只能对配置表对象的成员赋值。\n\n配置表可自动自文件加载,退出线程前自动序列化并存入文件。\n仅序列化以字符串、数值为键的元素,\n仅序列化值为字符串、数值、buffer 以及定义了 _serialize 元方法的成员。\n循环引用的值转换为 null,序列化时忽略成员函数\n!fsys_table.
|
||||
end intellisense**/
|
85
aardiowin/main.aardio
Normal file
85
aardiowin/main.aardio
Normal file
@ -0,0 +1,85 @@
|
||||
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;
|
||||
}
|
||||
|
||||
|
15
aardiowin/web/index.html
Normal file
15
aardiowin/web/index.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body style="margin:50px;white-space: pre;">
|
||||
请在工程中右键点击「网页源码」目录,
|
||||
然后在弹出菜单中点击「用外部编辑器」打开。
|
||||
|
||||
在 VSCode 中打开以后,运行 npm install 安装依赖,
|
||||
然后再运行 npm run build 编译网页代码。
|
||||
|
||||
最后在 aardio 中点击发布生成 EXE 文件。
|
||||
</body>
|
||||
</html>
|
11
portable-template/config.json
Normal file
11
portable-template/config.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"app" : "",
|
||||
"title" : "",
|
||||
"icon" : "",
|
||||
"backend" : "",
|
||||
"frontend" : "",
|
||||
"window" : {
|
||||
"width" : "",
|
||||
"height" : ""
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user