-
1.controller,onload写法
在controller中需要执行onload,所以在执行中需确保onload中,没有使用前端的js中的变量或函数,
比如window,document,Localstorage,等
-
2.配置
server渲染默认是开启的,当需要全部禁止时,修改config/sumeru.js中,添加一行
sumeru.config({ runServerRender:false })
单个router禁止,添加一行在router中
sumeru.router.add({ pattern:'/test', action : 'App.unittest', server_render:false })
-
3.其他变更
-
node执行环境 假设托管在bae上,app.conf需要修改为使用nodejs渲染
- url : (.*) script: $1.nodejs
-
fileserver端口,现在由原来的fileserver/socketserver的端口号合二为一,只设置:httpServerPort 即可
sumeru.config({ httpServerPort: 8080 })
-
handlebars helper 由于server渲染开启后,会默认读取执行以下两个package的controller/package.js 和 server_config/server_library.js 读取时机是启动node server加载完全部默认模块后 所以,比如有用户自定义的handlebars helper,或者其他library,如果要server渲染支持的话,要在server_config/server_library.js中包含
sumeru.packages( '../library/handlebars_helper.js' );
-
uri改造后,所有链接到本域下的a标签里面的link会被自动阻止默认行为,进行执行sumeru.redirect("link.")进行替代;
-
link里面的格式推荐格式:/{controller}/{arguments[1]}/{arguments[2]}/...?params1=string¶ms2=string
-
以前的sumeru url的link的格式:#/{controller}!params1=string¶ms2=string,也会被自动解析为上面的标准格式
router用于建立URL中params与Controller之间的对应关系,添加router的操作通常在Controller文件中一些定义。 router不仅可以运行与client端,同时也被server端渲染支持
一个Controller可以对应多个URL,一个URL只能对应一个Controller。
server router 默认是开启的,当有不需要开启server render时, 可以在app目录下config目录,添加设置,即可关闭,除了全局开关以外,还支持单个controller的禁用,如下add方法介绍
fw.config.set('runServerRender',false);
-
使用add()可以在router添加一组params与Controller的对于关系,方法如下:
sumeru.router.add(
{ pattern: '/studentList', action: 'App.studentList', }
);
sumeru.router.add(
{ pattern: '/studentList/index', action: 'App.studentList', server_render:false }
);
-
URL中的匹配值,patten中的匹配项会作为controller进行匹配, 特别的,当出现上面例子中都有 /studentList 的匹配中,会自动选取最长的进行匹配
-
对应 可执行的JS的名称
-
-
localhost:8080/debug.html/studentList/index/123/007?p=2
-
除了自动匹配到 /controller是/studentList/index之外,还会将后面的参数 /123/007 作为 arguments传入env.arguments中,供程序直接使用。 env.arguments形如 ["/studentList/index","123","007"]
- params的取法可以用 session.get("p"),也可以用params.p 以上两个结果都是"2"
-
-
设置了此项,此controller会禁用server渲染
在router中添加了hash与Controller的对应关系后,
就可以使用“localhost:8080/debug.html/studentList”运行params为"/studentList"对应的Controller。
同时我们还提供定义默认启动Controller的方法:
-
sumeru.router.setDefault('App.studentList');
在Controller中使用setDefault()后,浏览器中输入“localhost:8080/debug.html”就可以启动该Controller,不需要在URL中带hash。
-
直接使用<a href="/{controller}">标签,对于本域内的sumeru framework会自动使用history api进行无刷新页面跳转
-
启用新的router之后,在session变化以后,url会自动把session中保存的数据已明文参数的形式添加或更新原有url,以便于复制。
简而言之,session中的数据与params的数据统一为一份,session改变,params同样改变。
-
localhost:8080/{controller}默认通过index.html,如果需要调试或指定其他页面,可以自己指定localhost:8080/debug.html/{controller}