我理解Ruby语言中require
、load
和autoload
之间的细微差别,但我的问题是,你怎么知道该使用哪一种?
除了能够在匿名模块中“包装”load
之外,require
似乎更受欢迎。
但是,autoload
允许您延迟加载文件--这听起来很棒,但我不确定您实际上从require
获得了什么
其中一种方法比另一种更受欢迎吗?是否存在一种方法脱颖而出的情况?
发布于 2009-04-29 23:08:12
通常,您应该使用require
。load
每次都会重新加载代码,因此如果您从多个模块执行此操作,您将需要做大量额外的工作。Ruby的懒惰在理论上听起来不错,但许多autoload
模块做的事情就像修补其他类一样,这意味着程序中不相关部分的行为可能取决于给定的类是否已被使用。
如果您想创建自己的自动重新加载程序,以便在代码每次更改或每次有人点击URL时加载(出于开发目的,您不必每次都重新启动服务器),那么使用load
是合理的。
发布于 2011-10-17 14:36:37
下面是使用autoload
胜过require
所获得的好处
Ruby主要用于加速autoload
程序或Rails应用程序的初始化阶段。通过在需要时才加载资源,可以大大提高速度。
另一个优点是,如果用户不使用某些特性,您可能不需要加载代码的某些部分,从而缩短了加载时间并减少了内存占用。
发布于 2013-06-14 20:16:37
除了别人已经告诉你的事情之外,autoload
的未来是不确定的。它计划在Ruby 2.0中被弃用,但在2.0特性冻结之前,它并没有被及时弃用。现在预计在Ruby2.1,but that is not even certain anymore中autoload
将被弃用。
https://stackoverflow.com/questions/804297
复制相似问题