我的前端文件很乱,我想用这种方式重组它们:
这是个好主意吗当用户在该应用程序上时,是否存在丢失加载速度的风险?
发布于 2018-01-22 16:59:38
这类似于如何反应和角度组织CSS和JS,但他们都有非常好的视图封装,不像Rails。您可以像您建议的那样使用范围,但是对我来说,这仍然是一种Rails反模式。在Rails中,脚本和样式应该按照设计传递到app/assets文件夹。如果您正在此项目上进行协作,或预期需要在将来的任何时候将其交给另一个团队,则最好随流程进行。最近,我继承了一个包含成千上万行内联样式和javascipt的项目,这简直是一场噩梦。约定而不是配置等等。
还请记住,浏览器不缓存内联样式和脚本,因此从长远来看,不使用链接文件并允许浏览器缓存加载时间会对加载时间产生负面影响。
在Rails中,将长视图文件和模板分解为更小的部分和帮助是一种很好的模式。至于样式表和javascripts,我建议将它们保存在app/assets文件夹中。您可以使用链轮来包含它们、requires、@includes等。
就我个人而言,我这样做是为了一种psuedo封装:
<!-- In your layout file -->
<head>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag controller.controller_name, 'data-turbolinks-track': 'reload' %>
<%= stylesheet_link_tag controller.controller_name, media: 'all', 'data-turbolinks-track': 'reload' %>
<%= yield :end_of_head %>
</head>这样,您就可以最小化加载时间,并通过只为特定控制器加载JS和CSS (不要忘记添加到config/assets.rb)以及任何全局CSS或JS来帮助封装。
例如,如果我有一个UsersController,其中有一些页面可用于查看配置文件、更改设置、注册等等,那么我将有一个app/assets/stylesheets/users.scss和一个自动加载在这些页面上的app/assets/javascripts/users.js。您甚至可以更进一步,为每个控制器操作提供JS和CSS文件。
在您的副手和帮手中,您可以这样做:
<%= content_for :end_of_head %>
<%= javascript_include_tag 'partials/thing' %>
<%= stylesheet_link_tag 'partials/thing' %>
<% end %>只是我的0.02美元
还要注意的是,这种方法得到了Rails核心团队的认可:pipeline.html#controller-specific-assets
https://stackoverflow.com/questions/48385124
复制相似问题