我应该在package.json中引用io.js吗?如果我想编写一个与 Node和io.js兼容的模块,还有什么我应该做的不同吗?
答案 0 :(得分:2)
Heroku documentation说你可以在package.json的“engines”部分添加“iojs”条目。
答案 1 :(得分:2)
首先,您应该参考描述自1.0.0版以来对io.js所做更改的io.js changelog,正如他们所说,它引入了对API的重大更改(与Node.js 0.11相比) .14,这是叉子时的开发版本。
由于以下semver意味着主要版本的凹凸引入了向后兼容的更改,这意味着您必须在应用程序中处理这些差异,并根据平台使用适当的API调用。
快速阅读更改日志似乎表明现有API之间的差异并不显着,但在某些方面您需要格外小心。 io.js中有很多新的API在Node.js上本身不可用,因此您可能无法使用它们(或者提供一些兼容层,如果可能的话,将这些添加到Node.js)。
此外,由于ECMAScript 6功能在Node.js 0.10,0.12和io.js之间的不同级别实现,因此您必须选择可以使用哪些功能才能保持兼容,具体取决于您使用的平台和版本需要/选择支持。
这个问题正是为什么我不赞成io.js背后的团队分支并引入向后不兼容的更改和仍然使用Node.js包管理器,npm来处理的问题的确切原因他们的新平台的依赖关系。您要么最终只为其中一个编写包,要么使用一些疯狂的决策逻辑来选择如何调用函数,因为该函数的签名在两者之间不同。
最后,开发人员感到沮丧并离开另一个项目/语言,社区和模块可用性变得支离破碎,没有人会赢。
我真诚地希望社区不会分裂,而是选择一个平台,而另一个平台将会消失,无论两者中的哪一个(Node.js或io.js)都是如此。或者,项目在某个时刻汇聚,将两者的优势整合到一个平台中。