gpt4 book ai didi

javascript - Rails 在 View 之间共享 javascript

转载 作者:行者123 更新时间:2023-11-29 14:59:10 24 4
gpt4 key购买 nike

在我的 Rails 应用程序中,我有一段 javascript 在我的 8 个 View 中有 2 个完全重复。放置 javascript 的正确位置在哪里?

Rails 应用程序结构将 javascript 放在 app/assets/javascripts 中,其中每个模型都有一个 js.coffee 文件和一个 application.js 文件。我是将它放在 application.js 文件中,还是有一种干净的方法在两个 .js 目录之间共享 javascript?

谢谢

最佳答案

更新:

我完全误读了这个问题并认为它是关于 backbone.js View ,而不是 rails View 。下面的答案确实与所问的有所不同……也许它与使用 backbone.js 的人有关,但它并没有真正回答这个问题。对此感到抱歉!

原始答案:

我为共享代码所做的是创建一个父类,在其中包含我想共享的代码,然后让每个使用它的 View 扩展该类(用 coffeescript 术语)。

所以类似(再次在 coffeescript 中):

app/assets/javascripts/base_view.js.coffee(或任何你想放的地方)

class App.BaseView
sharedFunction: () ->
...

然后让其他 View 扩展App.BaseView(或任何你称之为父类的东西):

app/assets/javascripts/views/view2.js.coffee

class App.MyView1 extends App.BaseView
... sharedFunction() ...

app/assets/javascripts/views/view2.js.coffee

class App.MyView2 extends App.BaseView
... sharedFunction() ...

只需确保包含 App.BaseView 的文件在 application.rb 中的其他 View 之前加载。 (如果您使用的是 require.js,那么加载顺序当然无关紧要,但我假设您不是。)

另请注意,虽然您提到您只是共享“一段 javascript”,但从一开始就考虑共享模块确实更好,这样如果以后您想要扩展“一段” javascript”你有框架来做到这一点。这是 a good article关于使用 backbone.js 实现模块。

FWIW,this is the project我正在研究与公共(public) View 类共享代码的地方:App.Threads延伸App.TranslatableFieldsView延伸 App.BaseView .请注意,我在这里分享了使用 coffeescript 的 super 的初始化代码。我对模型做同样的事情。

关于javascript - Rails 在 View 之间共享 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com