【问题标题】:Coffeescript compiled to Node.js vs browser JS differencesCoffeescript 编译为 Node.js 与浏览器 JS 的区别
【发布时间】:2012-03-02 10:53:35
【问题描述】:

为了让我的 CoffeeScript 代码在 Node.js 和 javascript 上运行,我应该小心避免什么?显而易见的答案是“不要使用 Node.js”函数,但我想知道是否还有其他小的“陷阱”会破坏两者之间的代码移植。

【问题讨论】:

    标签: coffeescript


    【解决方案1】:

    假设您不依赖语言本身之外的任何 API(例如,您不使用除 setTimeout/clearTimeoutsetInterval/clearInterval 以及附加到 Math 之外的任何函数) ,只有两件事需要担心:

      1234563 CoffeeScript 分别使用 for x in arrif x in arr 语法帮助您避免这两个问题。
    1. 在浏览器中,全局对象为window;在 Node 中,全局对象是 global,但您通常希望导出一些东西。因此,正如Underscore.js 和其他人所展示的,通常的解决方案是在模块顶部写root = this,并将所有内容附加到root。在最外层范围内,this 在浏览器中指向 window,在 Node 中指向 exports

    我在这里假设您在单个脚本中定义您的模块。如果没有,你应该看看像 sstephenson 的 stitch 这样的工具,它可以让你编写一组可以在 Node 中相互require 的模块,然后将它们“拼接”在一起以供浏览器使用。

    【讨论】:

    • +1 for root = this -- 尽管 Katz 先生的 reassuring tone in this article 很厉害,但如果你按照 Burnham 先生所说的那样做,你的生活总体上会简单得多。
    猜你喜欢
    • 2015-10-14
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2021-12-31
    • 1970-01-01
    • 2012-06-09
    相关资源
    最近更新 更多