浏览 2342 次
锁定老帖子 主题:mochiweb 学习笔记1
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-10
最后修改:2009-06-10
代码布局 标准的erlang otp目录结构 mochiweb本身应该算一个web 服务器的核,然后可以围绕它定制自己的web server scripts目录下提供了一个new_mochiweb.erl的可执行的escript,看头就知道了 #!/usr/bin/env escript 执行入口是 main([Name]) -> main([Name, "."]); escript的入口函数必须是以一个list为参数的,有几个命令行参数,list里就应该有几个元素 Run: /your-mochiweb-path/scripts/new_mochiweb.erl mochiconntest 调用的是 mochiweb_skel:skelcopy,将 $mochiweb_home/priv/skel/ 下的所有文件复制到新的目录 mochiconntest中,并替换文件名和内容中所有的 "skel" ( 跟rails的脚手架还挺像) 生成的就是我们要进一步开发的一个基础代码框架,可以直接make后运行,start-dev.sh #!/bin/sh cd `dirname $0` exec erl -pa $PWD/ebin $PWD/deps/*/ebin -boot start_sasl -s reloader -s skel $0是当前脚本文件名 dirname $0返回所在目录全路径 -s reloader -s skel(这个skel实际已经被替换成实际的名字) 分别调用reloader:start() 和 skel:start() reloader是一个gen_server ,通过 %% @spec init([]) -> {ok, State} %% @doc gen_server init, opens the server in an initial state. init([]) -> {ok, TRef} = timer:send_interval(timer:seconds(1), doit), {ok, #state{last = stamp(), tref = TRef}}. 启动一个定时器,然后定时传递消息,调用回调函数 handle_info(doit, State) -> Now = stamp(), doit(State#state.last, Now), {noreply, State#state{last = Now}}; doit进行code:all_loaded()的所有moudule进行更新,根据最后修改时间判断是否reload skel里启动application 然后研究下inets,结合代码看erlang doc看来才是最佳学习方法 纯属新手,请勿见笑。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |