加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么Rails 3.1 / Sprockets 2 / CoffeeScript添加了额外的代码

发布时间:2020-12-17 04:04:12 所属栏目:百科 来源:网络整理
导读:使用Rails 3.1(rc5),我注意到我包含rails(或sprockets)的任何coffeescript文件正在添加初始化 javascript的顶部和底部.换句话说,一个空白的.js.coffee文件输出如下: (function() {}).call(this); 这很烦人,因为它搞砸了我的javascript范围(除非我真的不知道
使用Rails 3.1(rc5),我注意到我包含rails(或sprockets)的任何coffeescript文件正在添加初始化 javascript的顶部和底部.换句话说,一个空白的.js.coffee文件输出如下:

(function() {
}).call(this);

这很烦人,因为它搞砸了我的javascript范围(除非我真的不知道我在做什么).我通常将我的所有javascript类分成单独的文件,并且我相信将这些函数代码包装到我的类中只会使它们彼此超出范围.或者,至少,我似乎无法访问它们,因为我不断得到未定义的错误.

有没有办法覆盖这个?看起来sprockets中的这个文件与添加这段代码有关:
https://github.com/sstephenson/sprockets/blob/master/lib/sprockets/jst_processor.rb

我知道将函数中的所有内容包装起来似乎是一种额外的便利,因为在加载DOM之前没有任何东西可以运行,但据我所知,它只是弄乱了我的范围.

解决方法

您打算将您的对象置于全局范围内吗?我认为CoffeeScript通常将代码包装在匿名函数中,这样它就不会意外地将变量泄漏到全局范围中.如果没有办法将其关闭,那么您最好的选择可能是在窗口对象中专门添加您想要在全局范围内的任何内容:

window.myGlobal = myGlobal;

这些天似乎是一个javascript最佳实践,将代码置于函数范围内,并明确将对象添加到全局范围,这是我经常看到CoffeeScript自动执行的操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读