http://chloerei.com/2013/07/14/turbolinks-guide/
整理了一下自己对 Turbolink 的实践。
赞
有个 typo
var foo = 'bar';
$(document).one('page:change', function() {
window.foo = null;
});
应为
var foo = 'bar';
$(document).on('page:change', function() {
window.foo = null;
});
写的好,PJAX + RJS + Backbone,这也是我对 knewone 的解决方案,当然不是所有网站都适合,更 content-base 的传统网站 turbolink 较好,而 web application 就用 ember 之类重解决方案
弱弱的问下,既然 turbolink 刷新页面是载入 body,那么把部分 js 放到 body 最后,是不是可以加载进来呢?这样就未必要全部合并成一个 js 文件了吧
Turbolinks will evaluate any script tags in pages it visit, if those tags do not have a type or if the type is text/javascript. All other script tags will be ignored.
As a rule of thumb when switching to Turbolinks, move all of your javascript tags inside the head and then work backwards, only moving javascript code back to the body if absolutely necessary.
你的想法是可行的,官方推荐还是放到 head,我还没想清楚为什么。
我的意思是像这种:用到了某巨大的富文本编辑器, 对一般浏览用户不是必须的,所以只在用户需要编辑时载入, 而编辑时又不会使用服务器资源不需要刷新页面,那么正常也只载入一次 这样对只看不写的 80% 的一般人来说,大概可以省掉他们载入时间吧
doctype html html head title = title = render "layouts/stylesheet" = javascript_include_tag "application" body = render "layouts/header" .container = notice_message = yield
= yield :skip_container
= render 'shared/uploader_footer' if needs_uploader? = javascript_include_tag "editor" if needs_editor?
我更偏好分不同布局。writings.io 分了 3 个布局:公共页面、管理页面、编辑页面。
非作者浏览文章的页面是公共页面,只有很少的 js。
管理页面有文章列表一类的 js 逻辑。
编辑页面载入编辑器。
这三类页面之间不通过 PJAX 切换,如果有链接的话也会用 data-no-turbolink 打断。目前工作得很好。
turbolink 之前用过一下,不过有个问题一直无解,搭车问下: 我有两个页面 A 和 B,第一次进入 B 的时候没问题,只要在 A 刷新一次再回到 B 之后 assets 报 404(大概,忘了= =),在 B 刷新一次又好了。一直找不到问题所在...