由于 Nitrogen 应用程序的构建方式,您不应构建与它紧密耦合的应用程序。相反,您构建您的应用程序,为 Nitrogen 提供 API(您将从 Nitrogen 事件中调用的 API 等)。
然后你将你的应用程序打包成一个 OTP 文件系统,把它放到氮气的应用程序文件夹中。当氮气制作或启动时ebin
,只要它们在其应用程序目录中,它就会添加您的应用程序的路径。
例如:模型和控制器将在您的应用程序中实现。然后在您的应用程序中公开模块中的函数调用(可能是 gen_server 行为),您可以直接从氮页面调用这些函数调用。美妙之处在于所有这些都将在同一个代码路径中。
怎么做:你看一下 Nitrogenquickstart.sh
脚本,在它启动 erlang VM 的地方。
echo "在 Inets (http://localhost:8000) 上启动氮气..."
错误\
-name YOUR_NODE_NAME_HERE \
-pa ./ebin ../apps/*/ebin ../apps/*/include \
-env ERL_FULLSWEEP_AFTER 10 \
-eval“应用程序:开始(nprocreg)”\
-eval“应用程序:启动(快速启动)”\
-eval“应用程序:开始(YOUR_APPLICATION)”
如果您的应用程序不像 OTP,则创建一个名为“ebin”的文件夹,您将在其中放置您拥有的光束文件。创建一个名为:“my_app-1.0”的文件夹并将此 ebin 文件夹粘贴到该文件夹中
氮气--|--/apps --|--/my_app-1.0 --|--/ebin
|--/文档
|--/rel
|--/支持
|--/快速入门
梁文件的完整路径应该是
“$NITROGEN/apps/my_app-1.0/ebin”
. 每当 Nitrogen 启动时,它都会将所有光束文件添加到代码路径中。然后,如果在你的代码中你有启动你的东西的函数说:
main_server:start()
. 您将
quickstart.sh
找到的内容更改为
$NITROGEN/Quickstart/quickstart.sh
以这种方式显示。
echo "在 Inets (http://localhost:8000) 上启动氮气..."
错误\
-name YOUR_NODE_NAME_HERE \
-pa ./ebin ../apps/*/ebin ../apps/*/include \
-setcookie YOUR_FUNNY_COOKIE_HERE \
-mnesia dir '"PATH/TO/MNESIA/DIRECTORY"'\
-env ERL_FULLSWEEP_AFTER 10 \
-eval“应用程序:开始(nprocreg)”\
-eval“应用程序:启动(快速启动)”\
-eval "main_server:start()"
这样做的好处是,如果您碰巧将视图更改为erlyweb、erlang web,则无需更改模型或控制器,而是公开可以从任何视图类型库调用的 API。