我有1个控制器,有数百条路线。是否有一个系统将应用分成几个部分,只加载该部分所需的javascript文件?
否则,用户可能必须从第一次加载下载整个应用程序的所有javascript。
似乎某些控制器命中,它应该检测是否需要新的javascript下载。
答案 0 :(得分:5)
您可以查看RequireJS。
请记住,动态加载模块也有其缺点:
理想情况下,您希望保留模块/多文件方法,但是为了部署,将所有内容合并到一个文件中。即使它是一个巨大的文件,它仍然会比50个文件加载更快,并且对于用户来说比每次导航到应用程序的不同部分时都必须看到加载屏幕更令人愉快。
我认为RequireJS提供了两种功能,您可以在开发时随时随地加载内容,但是当您准备好部署时,您仍然可以将所有内容打包在一个文件中。
答案 1 :(得分:2)
我建议使用资产包装程序,例如Jammit,这样可以根据需要将多个脚本缩小为一个压缩文件。
通过这种方式,您可以构建脚本,但是对您来说更有意义,将它们分成您想要的任意数量的文件,资产句柄将负责压缩和组合它们。 如果某些脚本太大而无法在任何地方加载,您可以随时使用 content_for
将更大的脚本加载到需要这些脚本的视图中例如:
<% content_for :head do %>
<%= include_javascripts :my_big_files %>
<% end %>
答案 2 :(得分:0)
另一种选择可能是Stitch。它是节点生态系统的一部分,可以动态编译coffeescript。