gpt4 book ai didi

javascript - 在 Rails 应用程序中拆分 Javascript 或 Coffeescript 的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-28 09:59:01 25 4
gpt4 key购买 nike

假设我有一个带有资源的 Rails 应用程序 - 用户。我有 javascript,应该可用于所提供的任何页面。我有 javascript,应该可用于用户下提供的任何页面。我有 javascript,应该可用于用户下的每个特定操作。在 Rails 3.1 及更高版本中,是否有一种简单的方法来确保我的 Javascript 仅适用于需要它的页面? CoffeeScript 怎么样?

最佳答案

我认为 Bob 的链接项目是相关的(有一条评论涉及性能与加载文件数量的权衡),但我认为问题更多地与名称间距、范围和结构有关。

要具体回答这个问题(假设您使用的是 jQuery),请考虑以下 CoffeeScript:

$ ->
doSomething()
doSomethingElse("#some-element")

doSomething = ->
alert("I'm doing something")

doSomethingElse = (selector) ->
alert("I'm hiding something")
$(selector).hide()

CoffeeScript 编译器会将所有这些内容包装在一个匿名函数中,因此仅在加载页面的上下文中可用(脚本标记、特定于 Controller 的文件或全局的 application.js) visibility )。

有几个模型需要考虑。一种简单的方法是遵循模型特定的“事物”和通常有用的(全局)事物的模式。因此,如果我想要一个特定于 User 的 javascript 函数,那么它就位于 app/assets/javascripts/users.js.coffee 中,否则它需要是全局的(在 application.js 中)。咖啡)。

rails-backbone gem 提出了一个更加完整和复杂的解决方案,它具有创建 CoffeeScript 模型、 View 、模板和路由器的生成器,这些生成器取代了我们用常规方法获得的许多内容railsgeneratescaffold foo——相同类型的 CRUD 操作以完全不同的方式完成,特别是模板(嵌入的 javascript)与 ERB 模板非常相似。对我来说,这更像是一次信仰的飞跃。

无论是在应用程序范围的文件中,还是在特定于 Controller 的文件中,无论哪种情况, Assets 管道都会将所有代码组合在一起并将其全部发送给用户(假设您保留默认配置),但这是一个单独的主题。

不确定这是否回答了您的问题,但我认为区分 Assets 管道的交付执行很重要javascript,这是范围界定的问题,CoffeeScript 在这方面做得非常好,而backbone.js 做得更进一步。

关于javascript - 在 Rails 应用程序中拆分 Javascript 或 Coffeescript 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9517842/

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