一、yaws查找在yaws.conf中的配置:
根据appmods判断这是一个erlyweb应用,转向调用同名模块erlyweb的out(A)方法,并将out(A)返回值回传给请求方.
这里A是yaws args参数,包含了客户请求的所有内容,并插入" <opaque><opaque>***<opaque></opaque></opaque> </opaque>"<opaque><opaque>之间的内容(可以通过atom: opaque)取出。
二、erlyweb的out(A)根据A中的opaque信息取得appname值music,如果这是是这个app的根调用,就调用app_music_controller的hook方法,hook方法默认转向去调用app_music_view中的index(data)方法(模板中简写为<% data %>),如果找不到的话,调用显式定义的第一个index(,,)方法
三、如果是调用component里的controller,则首先调用controller的index(A)方法,
</opaque></opaque>
总之,每一个component的调用总是首先查找controller的index(A)方法,然后用相应view的index(data)或者index(data, ,,,)方法render
xml 代码
- <server localhost>
- port = 8002
- listen = 0.0.0.0
- docroot = d:/my-project/erlywebtest/apps/music/www
- appmods = music, erlyweb>
- <opaque>
- appname = music
-
</opaque>
- </server>
根据appmods判断这是一个erlyweb应用,转向调用同名模块erlyweb的out(A)方法,并将out(A)返回值回传给请求方.
这里A是yaws args参数,包含了客户请求的所有内容,并插入" <opaque><opaque>***<opaque></opaque></opaque> </opaque>"<opaque><opaque>之间的内容(可以通过atom: opaque)取出。
二、erlyweb的out(A)根据A中的opaque信息取得appname值music,如果这是是这个app的根调用,就调用app_music_controller的hook方法,hook方法默认转向去调用app_music_view中的index(data)方法(模板中简写为<% data %>),如果找不到的话,调用显式定义的第一个index(,,)方法
三、如果是调用component里的controller,则首先调用controller的index(A)方法,
</opaque></opaque>
- 通常返回一个正好匹配相应的view中的index(data,,)的参数(data, Data)。
- 或者返回(ewr, ...)转向,
- 或者返回(ewc, ...)载入子components到本页。
总之,每一个component的调用总是首先查找controller的index(A)方法,然后用相应view的index(data)或者index(data, ,,,)方法render