在Engee与Genie合作
*Engee*提供了使用*Genie*框架直接在您的环境中开发自己的应用程序的机会。 这允许用户在不离开Engee工作区的情况下创建自己的应用程序、web界面和各种集成解决方案。
*Engee*是一个现成的和定制的环境,用于运行使用Genie框架创建的应用程序。 *Engee*还为其修改提供了基本功能。 接下来,这篇文章展示了与精灵合作的基本原则,知道哪些,你可以根据你的需要调整现成的应用程序。 *Genie*是为Julia开发web应用程序的框架。 阅读更多有关框架的资料,请浏览 链接:https://learn.genieframework.com/framework/[官方网站]。
精灵已经写好了,功能齐全 xref:教程/过滤器设计器。adoc[], xref:指南/雷达-方程-计算器。adoc[] 和 xref:tutorial/calculation-of-the-power-grid-modes。adoc[].
*Engee*环境针对使用Genie框架进行了优化,尽管完全支持Julia和Python内核,但不建议使用任何其他框架。
使用精灵
要在*Engee*中创建自己的应用程序,请按照以下说明操作。 应用程序可以表示为。带有文件的jl脚本或目录 应用程序。jl. 这些应用程序的放置是在目录内执行的 /用户. 启动、管理和使用基于精灵的应用程序的基本步骤如下所述。
-
应用程序放置-创建的应用程序必须放置在目录中
/用户. 如果应用程序是一个目录,请确保其中有一个文件。应用程序。jl. 安置的例子:/用户/应用/MyGenieApp/ 应用程序。jl 公众人士/ src公司/ -
启动应用程序-要启动应用程序,请运行以下命令:
恩吉。精灵。开始("/user/apps/MyGenieApp",devel=true,log_file="/user/apps/MyGenieApp")
这里:
-
德维尔:可选选项,启用开发模式,允许您在不重新启动的情况下查看更改。 -
日志文件:保存应用程序日志的路径。 这是没有必要指定。如果指定了相对路径,则该命令搜索相对于当前目录的应用程序。
-
-
停止应用程序-要停止正在运行的应用程序,请运行:
恩吉。精灵。停止("/用户/应用/MyGenieApp")路径可以设置为相对或绝对。
-
正在运行的应用程序列表-要检查当前正在运行的应用程序,请运行命令:
恩吉。精灵。名单()
-
将数据从应用程序传输到会话-功能
恩吉。精灵。发送(wsVarName,值)它用于将值从Genie应用程序传输到*Engee*工作区。 第一个论点wsVarName将变量名称设置为字符串。 第二个论点价值-存储在变量中的值。 如果没有具有该名称的变量,则会自动创建该变量。 使用此功能一般保存中间结果和用户数据。 例如:恩吉。精灵。发送("a",42) 恩吉。精灵。发送("消息","你好") -
从会话获取数据到应用程序-功能
恩吉。精灵。recv(wsVarName;context=…)允许您在Genie上执行应用程序期间从*Engee*环境中获取变量的值。 论点wsVarName设置变量的名称。 如果变量在另一个模块中定义,则使用该参数。上下文环境,指示在哪个命名空间中搜索它。 如果变量预先定义在主应用程序模块的范围之外,这是必要的。 例如:恩吉。精灵。recv("a") 恩吉。精灵。recv("讯息") 恩吉。精灵。recv("值";上下文=MyModule) -
工作区中的代码执行-功能
恩吉。精灵。eval(代码::AbstractString)允许您直接从Genie应用程序在*Engee*工作区中的Julia上执行任意代码。 它用于运行单个表达式、调试或动态执行代码,而无需重新启动应用程序。恩吉。精灵。eval("x=10") 恩吉。精灵。eval("println(\"X的值:\$x\")")传输的字符串
代码::AbstractString在当前*Engee*会话的全局区域中执行。 这样,您可以通过在Engee会话中传递来自Genie应用程序的命令来从外部控制变量或逻辑。 -
查看应用程序日志-要获取正在运行的应用程序的日志,请使用命令:
engee.genie.logs("/user/apps/MyGenieApp")如果,启动应用程序时,参数
日志文件如果未指定,该命令仍将输出当前日志。
在应用程序中使用第三方包
您可以在应用程序中使用第三方包。
为此,您需要下载文件 工程。汤姆尔 并运行命令:
engee.genie.pkg_instantiate("/path/to/app")
与此同时:
-
档案
应用程序。jl和工程。汤姆尔必须位于目录中/路径/到/应用. -
工程。汤姆尔*不应该*包含*Engee*包,但它们仍然可用于精灵。
用于处理包的其他命令:
- 查看已安装软件包的列表
-
要列出应用程序中使用的所有包,请运行命令:
engee.genie.pkg_status("/path/to/app") - 安装新软件包
-
要安装一个或多个软件包,请使用:
engee.genie.pkg_add("/path/to/app", "SomePackage")或
engee.genie.pkg_add("/path/to/app", ["SomePackage1", "SomePackage2"]) - 删除包
-
要删除一个或多个包,请运行:
engee.genie.pkg_rm("/path/to/app", "SomePackage")或
engee.genie.pkg_rm("/path/to/app", ["SomePackage1", "SomePackage2"])
使用的限制和特点
| 在Genie中,数组从零开始索引,不像Julia,索引从一开始。 |
-
无法安装未包含在*Engee*构建中的新软件包。 但是,您可以使用以下命令查看可用的包:
print(read("/usr/local/genie/environments/v1.10/Project.toml",String)) -
应用程序显示为带有文件的目录
应用程序。jl,被认为是标准的。 这是组织项目的推荐方式。
公共软件管理方法详解 精灵 在文章中呈现 精灵的公共软件管理方法.
创建应用程序的示例
创建文件 应用程序。jl 在目录中 /用户 文件浏览器
:
→ 
在文件中 应用程序。jl 添加使用Genie框架编写的应用程序代码:
module App
using GenieFramework
@genietools
@app begin
@in N = 0
@out squared = 0
@onchange N begin
squared = N^2
end
end
function ui()
[
cell([
p("Enter a number to calculate its square:")
]),
cell([
textfield("N", :N)
]),
cell([
bignumber("The square of the number is:", :squared)
])
]
end
@page("/", ui)
end
应用代码详解
-
创建模块:
module App这是模块的开始
应用程序. 在Julia中,模块用于组织代码并将其隔离。 所有的应用程序代码都将在这个模块中。 -
连接图书馆
精灵工作:using GenieFramework @genietools这里:
-
使用GenieFramework:连接库以使用web应用程序; -
@genietools:为应用程序准备环境的宏,包括必要资源(如图标和样式)的连接。
-
-
声明响应式应用程序:
@app begin @in N = 0 @out squared = 0这里:
-
@应用程序:应用程序的反应式代码块的开始; -
@在N=0:响应变量的声明N,它将存储自定义值; -
@out平方=0:响应变量的声明平方,其中将包含数字的平方。 此变量是只读的。
-
-
反应式逻辑:
@onchange N begin squared = N^2 end这里:
-
@交换N:表示变量N的值改变时,执行如下代码块; -
平方=N^2:更新变量的值平方(输入的数字是平方的)。
-
-
定义用户界面:
function ui() [ cell([ p("Enter a number to calculate its square:") ]), cell([ textfield("N", :N) ]), cell([ bignumber("The square of the number is:", :squared) ]) ] end这里:
-
功能ui():创建应用程序接口的函数的定义; -
细胞([。..]):将界面元素打包成一个结构单元:-
第一块
细胞([]):显示带有说明的文本:"输入一个数字来计算它的平方"; -
第二块
细胞([]):数字输入栏(textfield("N",:N));-
"N":输入字段的签名; -
:N:字段与变量的关系N;
-
-
第三块
细胞([]):显示结果(数字的平方)使用n.号码,号码;-
"数字的平方是:":签名; -
:平方:与变量的关系平方.
-
-
-
-
创建路由并关闭模块
@page("/", ui) end这里:
-
@页("/"):定义应用程序主页面的路由(/); -
用户界面:表示页面内容将由函数生成用户界面; -
结束:模块结束应用程序.
-
接下来,保存应用程序文件 应用程序。jl 经修订:

并使用命令运行应用程序:
engee.genie.start("/user/app.jl")
此应用程序允许您将输入的数字平方,演示如何在Engee工作区中创建自己的应用程序。

如果*Engee*会话已完成且应用程序保持打开状态,系统将发出错误。:
