作为jnr程序员,我第一次研究如何编写js代码,以便将其隔离到Rails应用程序中的某些页面。我认为,出于以下目的,这是明智之举。

a)我写的某些js我只想将单个页面上的某个元素作为目标,而不是同一控制器内其他页面上的其他元素作为目标(例如,使用类选择器并使用唯一的id标记每件事)看起来不太整洁。 (我看到Rails已经通过按控制器命名js文件来隔离控制器,但是将它们进一步划分为动作/页面名称js文件听起来也不好!)。

b)也许在找到仅在某些页面上运行js的解决方案时,可能意味着该js只需要在某些操作上加载,从而节省了加载时间。

这里有一个大家参与的方法,问题解答很多,但大多数答案都已经有6年了,而关于“ Garber Irish的Dom即刻执行的爱尔兰方法”的另一篇很好的帖子听起来很不错,但这又是相当不错的。现在已经很老了,而且都基于Rails 3 ...

因此,我不想创建重复的内容,而是想重新获得对同一问题的答案,并找出这些天是否存在最佳实践。

谢谢

最佳答案

惯例:


Rails在使用脚手架生成器时默认情况下会创建相应的


app / assets / javascripts / MODEL_NAME.coffee
应用/资产/样式表/MODEL_NAME.scss

通过“控制器”名称分隔JS和CSS逻辑


个人喜好:


与基于控制器的隔离不同,我更喜欢基于布局组件的隔离。最好通过下面的示例代码进行解释:


app / assets / javascripts / application.js

//= require_tree ./layouts/

应用/资产/ javascripts /布局/__shared.coffee

// WRITE GLOBAL JS LOGIC HERE FOR ANY LAYOUT

app / assets / javascripts / layouts / application / __ shared.coffee

// WRITE GLOBAL JS LOGIC HERE ONLY FOR THIS "application" LAYOUT

应用/资产/ javascripts /布局/博客/__shared.coffee

// WRITE GLOBAL JS LOGIC HERE ONLY FOR THIS "blog" LAYOUT IF YOU HAVE ANOTHER layout such as "layouts/blog.html.erb"

app / assets / javascripts / layouts / application / components / header.coffee

// WRITE JS code here for the header component

app / assets / javascripts / layouts / application / components / footer.coffee

// WRITE JS code here for the footer component

app / assets / javascripts / layouts / application / components / users / __ shared.coffee

// You can also divide a component into subcomponents just like this
// WRITE JS code shared amongst all users subcomponents

app / assets / javascripts / layouts / application / components / users / form.coffee

// WRITE JS CODE HERE regarding the form that creates or updates a User

app / assets / javascripts / layouts / application / components / users / list.coffee

// WRITE JS CODE HERE regarding the table listing all users




您还可以通过相同的方式构造CSS文件,以匹配组件

07-26 06:45