当前位置: 首页 > 工具软件 > nitrogen > 使用案例 >

Nitrogen 学习过程实录(9)

萧萧迟
2023-12-01

4、动态网页的创建和初始内容

进入创建的项目目录:

$ cd d:/erl5.6.5/lib/nitrogen/project1

创建一个新网页:

$ nitrogen page /web/blog/post

escript: Failed to open file: /usr/local/bin/nitrogen

结果失败了。原因可能是使用shell命令ln不对造成的。也不知道如何纠正。

改用命令如下:

$ escript nitrogen page /web/blog/post

Creating file: "web_blog_post.erl"

这次成功了。目录D:/erl5.6.5/lib/nitrogen/project1/src/pages中看到了这个文件:

-module (web_blog_post).

-include_lib ("nitrogen/include/wf.inc").

-compile(export_all).

main() -> 

#template { file="./wwwroot/template.html"}.

title() ->

"web_blog_post".

body() ->

#label{text="web_blog_post body."}.

event(_) -> ok.

需要弄清的4个问题:

(1)函数main()的用途:

它是自动运行的,确定以静态网页file作为生成动态网页的模板。模板以记录形式表示:

    #template { file="./wwwroot/template.html"}.

(2)-include_lib ("nitrogen/include/wf.inc").路径是否可以这样?

在Eshell中实验编译web_blog_post.erl:

2> c("D://erl5.6.5//lib//nitrogen//project1//src//pages//web_blog_post").    

d:/erl5.6.5/lib/nitrogen/project1/src/pages/web_blog_post.erl:2: can't find include lib "nitrogen/include/wf.inc"

d:/erl5.6.5/lib/nitrogen/project1/src/pages/web_blog_post.erl:6: record template undefined

d:/erl5.6.5/lib/nitrogen/project1/src/pages/web_blog_post.erl:12: record label undefined

error

可见不行。将wf.inc所在的目录改为绝对路径:

-include_lib ("d:/erl5.6.5/lib/nitrogen/include/wf.inc")

再次在Eshell中实验编译:

3> c("D://erl5.6.5//lib//nitrogen//project1//src//pages//web_blog_post").

{ok,web_blog_post}

4>

成功了。当然这并非唯一的解决办法。

(3)wf.inc文件干什么用?

它类似C语言的.h头文件,定义一些宏、记录等数据结构。

文件的内容格式是:

-ifndef(wf_inc).

具体定义的内容……

-endif.

这个结构保证程序编译时,wf.inc不被重复包含。

这个文件很重要,Nitrogen自定义的数据结构全部在此。

(4)#label{text="web_blog_post body."}.是什么意思?

在动态网页中,它被翻译成:

<span id='temp577000' class='label '>web_index body.</span> 

label是class的名字,"web_blog_post body."是显示的内容。

 类似资料: