首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新组织Rails 5中的前端文件

重新组织Rails 5中的前端文件
EN

Stack Overflow用户
提问于 2018-01-22 15:35:03
回答 1查看 106关注 0票数 2

我的前端文件很乱,我想用这种方式重组它们:

  • 将.html.erb文件分离为较小的组件,实际上尽可能小。
  • 处理掉.scss文件。
  • 编写这样的.html.erb文件:

这是个好主意吗当用户在该应用程序上时,是否存在丢失加载速度的风险?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-22 16:59:38

这类似于如何反应和角度组织CSS和JS,但他们都有非常好的视图封装,不像Rails。您可以像您建议的那样使用范围,但是对我来说,这仍然是一种Rails反模式。在Rails中,脚本和样式应该按照设计传递到app/assets文件夹。如果您正在此项目上进行协作,或预期需要在将来的任何时候将其交给另一个团队,则最好随流程进行。最近,我继承了一个包含成千上万行内联样式和javascipt的项目,这简直是一场噩梦。约定而不是配置等等。

还请记住,浏览器不缓存内联样式和脚本,因此从长远来看,不使用链接文件并允许浏览器缓存加载时间会对加载时间产生负面影响。

在Rails中,将长视图文件和模板分解为更小的部分和帮助是一种很好的模式。至于样式表和javascripts,我建议将它们保存在app/assets文件夹中。您可以使用链轮来包含它们、requires、@includes等。

就我个人而言,我这样做是为了一种psuedo封装:

代码语言:javascript
复制
<!-- 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文件。

在您的副手和帮手中,您可以这样做:

代码语言:javascript
复制
<%= content_for :end_of_head %>
  <%= javascript_include_tag 'partials/thing' %>
  <%= stylesheet_link_tag 'partials/thing' %>
<% end %>

只是我的0.02美元

还要注意的是,这种方法得到了Rails核心团队的认可:pipeline.html#controller-specific-assets

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48385124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档