12

http://sugarjs.com/

这是一个库,所以我可以直接在浏览器中加载它。它也是一个 npm 包,但我如何将它用作模块?

在浏览器中,加载一个 js 文件会很容易地更改对象,但在 nodejs 中工作时就不一样了,我无法弄清楚。

4

3 回答 3

28

您只需安装模块:

npm install sugar

然后就像 API 说的那样使用它:

var http = require('http');
var sugar = require('sugar');

http.createServer(function (req, res) {

    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end('hey_there_good-lookin'.camelize());

}).listen(process.env.PORT || 8080);
于 2012-02-17T02:06:30.097 回答
8

Sugar 没有用作标准的 CommonJS 模块,因为该库的全部目的是修改内置原型。您需要在项目中使用它,所有内置对象都将被扩展,您可以从那里使用它们。

编辑:从 v2.0.0 开始,这不再适用。原型修改现在是可选的,因此您可以像使用导出对象的任何其他节点模块一样使用 Sugar。有关更多信息,请参阅https://sugarjs.com/quickstart/

于 2012-02-17T02:03:25.243 回答
1

不要使用sugar.js——它会修改原生原型,所以一切都会使用它们——不仅仅是你的模块。这样做是非常阴险的,它不是模块化的,当你最不期待的时候它会咬你的屁股。

值得再说一遍:不要在(非常合理的)polyfilling 上下文之外使用任何修改原生原型的模块。不要使用 Sugar.js。特别是在 node.js 中 - 有一个模块系统是有原因的。我个人在修改原生原型的事情上遇到了可怕的问题。奇怪的事情可能会发生在代码的深处。

以下是有关为什么修改本机对象不好的更多信息:

http://www.nczonline.net/blog/2010/03/02/maintainable-javascript-dont-modify-objects-you-down-own/

更新:听起来 Sugar v2.0.0 现在将扩展原生对象视为选择加入,这要好得多(因为默认情况下不扩展原生对象)。

于 2015-04-22T03:36:57.483 回答