什么是最好的做法。将JS隔离到Rails项目中的页面/操作?

时间:2017-06-23 15:10:06

标签: javascript ruby-on-rails dom

作为一名jnr progammer,我第一次看到如何编写我的js代码,以便它与我的Rails应用程序中的某些页面隔离。我认为这是一个明智的做法;

a)我写的某些js我只希望定位单个页面上的某个元素,而不是同一个控制器中其他页面上的其他元素,这些元素可能因为使用类选择器而被拾取并标记每一个东西具有独特身份的人似乎不太整洁。 (我看到rails已经通过控制器对js文件的命名进行控制器隔离,但是进一步将操作/页面名称分成js文件并不好听!)。

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

有一个参加人数很多的问题here,人们接近这里,但大多数答案现在已经有6年了,还有另一篇关于所谓的“加尔伯特爱尔兰方法”的好消息。 here这听起来相当不错,但现在又很老了,所有这些都基于Rails 3 ......

因此,在不想创建重复内容的情况下,我试图获得对同一问题的更新答案,并找出现在是否已经建立了最佳实践。

由于

1 个答案:

答案 0 :(得分:1)

公约:

  • 默认情况下使用脚手架生成器时的Rails会创建相应的
    • 应用/资产/ Javascript角/ MODEL_NAME.coffee
    • 应用/资产/样式表/ MODEL_NAME.scss
  • 将JS和CSS逻辑分离为" controller"名称

个人偏好:

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

    • 应用程序/资产/ Javascript角/ application.js中

      //= require_tree ./layouts/
      
    • 应用程序/资产/ Javascript角/布局/ __ shared.coffee

      // WRITE GLOBAL JS LOGIC HERE FOR ANY LAYOUT
      
    • 应用程序/资产/ Javascript角/布局/应用/ __ shared.coffee

      // WRITE GLOBAL JS LOGIC HERE ONLY FOR THIS "application" LAYOUT
      
    • 应用程序/资产/ Javascript角/布局/博客/ __ shared.coffee

      // WRITE GLOBAL JS LOGIC HERE ONLY FOR THIS "blog" LAYOUT IF YOU HAVE ANOTHER layout such as "layouts/blog.html.erb"
      
    • 应用程序/资产/ Javascript角/布局/应用/组件/ header.coffee

      // WRITE JS code here for the header component
      
    • 应用程序/资产/ Javascript角/布局/应用/组件/ footer.coffee

      // WRITE JS code here for the footer component
      
    • 应用程序/资产/ Javascript角/布局/应用/组件/用户/ __ shared.coffee

      // You can also divide a component into subcomponents just like this
      // WRITE JS code shared amongst all users subcomponents
      
    • 应用程序/资产/ Javascript角/布局/应用/组件/用户/ form.coffee

      // WRITE JS CODE HERE regarding the form that creates or updates a User
      
    • 应用程序/资产/ Javascript角/布局/应用/组件/用户/ list.coffee

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

您还以相同的方式构建CSS文件,匹配组件