Coffeescript编译到Node.js与浏览器js的差异
为了让我的CoffeeScript代码同时在Node.js和javascript上运行,我应该小心避免什么?显而易见的答案是“不要使用Node.js”函数,但我想知道是否还有其他小的“陷阱”会破坏在这两个函数之间的代码移植。假设您不依赖语言本身以外的任何API(例如,除了Coffeescript编译到Node.js与浏览器js的差异,coffeescript,Coffeescript,为了让我的CoffeeScript代码同时在Node.js和javascript上运行,我应该小心避免什么?显而易见的答案是“不要使用Node.js”函数,但我想知道是否还有其他小的“陷阱”会破坏在这两个函数之间的代码移植。假设您不依赖语言本身以外的任何API(例如,除了设置超时/清除超时和设置间隔/清除间隔以及那些附加到数学的函数之外,您不使用任何函数),只需要担心两件事: 您可以依赖较新的JS功能,如Array::forEach和Array::indexOf在节点中,但不在浏览器中。Coff
设置超时
/清除超时
和设置间隔
/清除间隔
以及那些附加到数学
的函数之外,您不使用任何函数),只需要担心两件事:
Array::forEach
和Array::indexOf
在节点中,但不在浏览器中。CoffeeScript分别使用arr中x的和arr
中x的语法帮助您避免这两个问题
window
;在节点中,全局对象是global
,但您通常希望导出内容。因此,如和其他人所示,通常的解决方案是在模块顶部写入root=this
,并将所有内容附加到最外层的root
,此
在浏览器中指向窗口
,在节点中指向导出
我在这里假设您是在一个脚本中定义模块。如果不是,您应该看看像sstephenson这样的工具,它允许您编写一组模块,这些模块可以
在节点中相互要求,然后“缝合”它们一起用于浏览器。+1 forroot=this
——尽管卡茨先生很强大,但如果你照伯纳姆先生说的做,你的生活总体上会简单得多。