在Yaws框架中提供的动态WEB页文档中,我们可以用<erl></erl>嵌入Erlang代码来定义函数,然后使用out(Args)函数来调用它,以达到实现动态页面目的。
按照目前流行的WEB后端开发的基本方式,Erlang代码定义的业务函数和静态页面的HTML代码应尽量分开存储在不同的文件中,在Yaws中也是可以实现的。
一、修改配置文件
Yaws在渲染页面内容时,会根据配置文件来自动搜索模块并实现对其中的函数调用,所以要实现代码分离,首先要修改配置文件,如下图所示:
配置文件的第14行添加了搜索目录为d:\Yaws2/myebin(注意这里路径的写法)。
二、编写相关外部被调用函数
这里只是一个简单的示例,其文件放在自动搜索目录d:\Yaws2/myebin中,即:
%% d:\Yaws2/myebin/my_out.erl
-module(my_out).
-export([out/0]).
out() ->
"<p>Hello Out!</p>".
并将其编译为.beam文件。
三、实现调用外部模块函数的页面
文件路径:d:\Yaws2/www/myout.yaws
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<erl>
out(Arg) ->
{html,my_out:out()}.
</erl>
</body>
</html>
可见,在erl标签中,直接调用了外部模块my_out中的out()函数。
四、测试
浏览URL:localhost:8080/myout.yaws,如图:
实现了动态页面的效果。