分享 Turbolinks 向导

Rei · 2013年03月28日 · 最后由 rei 回复于 2016年05月06日 · 7167 次阅读
本帖已被管理员设置为精华贴

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;
});

#2 楼 @linjunpop 是 one,只执行一次。

写的好,PJAX + RJS + Backbone,这也是我对 knewone 的解决方案,当然不是所有网站都适合,更 content-base 的传统网站 turbolink 较好,而 web application 就用 ember 之类重解决方案

很好的分享,我也用过 backbone,觉得 js debug 用太多时间了。?

我怎么记得 js 里面用var来声明了的对象的作用域是document而不是window

#6 楼 @lilu

做了个测试

> var foo = 'bar'
undefined
> window.foo
"bar"
> document.foo
undefined
> document === window.document
true

@Rei 有没有想过做一个 Octopress 导入 writtingsIO 的工具?

#12 楼 @huobazi 有计划,还没排到。

#13 楼 @Rei 如果 weittingsIO 能和 git repo 挂起来,每次都把发完文章后再 push 一份到自己指定的 repo 上去,就可以有数据安全以及版本可循了。

谢谢分享

#13 楼 @Rei 问个无关问题,在 1G 内存,甚至 512M 内存的 VPS 上运行 rails,如果跑 Mongodb 会不会很吃力,据说 Mongodb 很费内存

#16 楼 @jiang_plus 上图好了

这要看数据量和程序复杂度。

弱弱的问下,既然 turbolink 刷新页面是载入 body,那么把部分 js 放到 body 最后,是不是可以加载进来呢?这样就未必要全部合并成一个 js 文件了吧

#17 楼 @Rei 能否谈谈对 AngularJS 的看法,google 推的前端。个人感觉进步很大。

#18 楼 @aptx4869 官方文档有这么两段

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,我还没想清楚为什么。

#19 楼 @chenge 这个我没用过额,有空看看。

我的意思是像这种:用到了某巨大的富文本编辑器, 对一般浏览用户不是必须的,所以只在用户需要编辑时载入, 而编辑时又不会使用服务器资源不需要刷新页面,那么正常也只载入一次 这样对只看不写的 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?

#22 楼 @aptx4869 可行。

我更偏好分不同布局。writings.io 分了 3 个布局:公共页面、管理页面、编辑页面。

非作者浏览文章的页面是公共页面,只有很少的 js。

管理页面有文章列表一类的 js 逻辑。

编辑页面载入编辑器。

这三类页面之间不通过 PJAX 切换,如果有链接的话也会用 data-no-turbolink 打断。目前工作得很好。

turbolink 之前用过一下,不过有个问题一直无解,搭车问下: 我有两个页面 A 和 B,第一次进入 B 的时候没问题,只要在 A 刷新一次再回到 B 之后 assets 报 404(大概,忘了= =),在 B 刷新一次又好了。一直找不到问题所在...

#24 楼 @saiga 信息不足判断不了,按理说切换页面不会请求 head 里面的 assets,写在别的地方了?

#25 楼 @Rei 没有,全部都在 head 里面,搞不懂为什么会丢了...开发和部署模式都报错。

#26 楼 @saiga 要贴代码和错误信息才行。

我比较有兴趣了解 Turbolink 和各种 js mvc 是怎么结合的,不知有没好文推荐?

连接可以更新一下了 @Rei

#29 楼 @hpyhacking 好,更新了。

@rei 你的博客文章怎么打不开了?想看看你分享的技术。

#31 楼 @eiyamaya 有的文章我隐藏了因为过了一段时间发现写得不是很好,建议看官方文档,有不理解的可以发帖讨论。

@rei 访问不了,麻烦更新下地址。

#32 楼 @rei 嗯,这样子呀,但还是期待你的新分享哦

rei 好像一直建议 关闭 turbolinks @rei

#35 楼 @jicheng1014 我建议理解 Turbolinks 一整套方案,但是很多人没有时间学习,只想立即解决问题,这时候我就建议关闭。

@rei i 想拜读,但是链接无法访问,用了代理也是一样,求重发下

#37 楼 @xiao__liang 看官方文档吧,我的文章过时了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号