由于氮应用程序的构建方式,您不应该与您的应用程序紧密耦合。相反,您构建您的应用程序,提供氮气API(您将通过氮气事件e.t.c调用API)。
然后,你会打包你的应用程序作为一个OTP文件系统,把它放到氮的应用程序文件夹。当氮气开始或开始时,只要它们位于其应用程序目录中,它就会添加应用程序的路径ebin
。
例如:模型和控制器将在您的应用程序中实现。然后在你的应用程序中,你可以在你的模块中暴露函数调用(这可能是gen_server的行为),你可以从你的氮气页面调用它。美是所有这些将在相同的代码路径。
做什么:你看看氮气quickstart.sh
脚本,在它启动erlang虚拟机的地步。
echo "Starting Nitrogen on Inets (http://localhost:8000)..."
erl \
-name YOUR_NODE_NAME_HERE \
-pa ./ebin ../apps/*/ebin ../apps/*/include \
-env ERL_FULLSWEEP_AFTER 10 \
-eval "application:start(nprocreg)" \
-eval "application:start(quickstart)" \
-eval "application:start(YOUR_APPLICATION)"
如果你的应用是不是像OTP,然后创建一个名为“EBIN”中,你会把你have.The创建一个文件夹,名为梁文件的文件夹:“my_app应用-1。0" 并粘贴此EBIN文件夹中的文件夹
Nitrogen--|--/apps --|--/my_app-1.0 --|--/ebin
|--/doc
|--/rel
|--/support
|--/Quickstart
到您的束文件的完整路径应为
"$NITROGEN/apps/my_app-1.0/ebin"
。 每当氮启动时,它会添加到代码路径所有光束的文件。然后,如果在你的代码你已经启动你的东西的功能说:
main_server:start()
你会改变
$NITROGEN/Quickstart/quickstart.sh
发现出现这样的
quickstart.sh
echo "Starting Nitrogen on Inets (http://localhost:8000)..."
erl \
-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 "application:start(nprocreg)" \
-eval "application:start(quickstart)" \
-eval "main_server:start()"
这样做的好处是,如果你碰巧。将您的视图改为erlyweb,erlang web,您不需要更改模型或控制器,而是暴露了可从任何视图类型库调用的API。