这是一个库,所以我可以直接在浏览器中加载它。它也是一个 npm 包,但我如何将它用作模块?
在浏览器中,加载一个 js 文件会很容易地更改对象,但在 nodejs 中工作时就不一样了,我无法弄清楚。
这是一个库,所以我可以直接在浏览器中加载它。它也是一个 npm 包,但我如何将它用作模块?
在浏览器中,加载一个 js 文件会很容易地更改对象,但在 nodejs 中工作时就不一样了,我无法弄清楚。
您只需安装模块:
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);
Sugar 没有用作标准的 CommonJS 模块,因为该库的全部目的是修改内置原型。您需要在项目中使用它,所有内置对象都将被扩展,您可以从那里使用它们。
编辑:从 v2.0.0 开始,这不再适用。原型修改现在是可选的,因此您可以像使用导出对象的任何其他节点模块一样使用 Sugar。有关更多信息,请参阅https://sugarjs.com/quickstart/
不要使用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 现在将扩展原生对象视为选择加入,这要好得多(因为默认情况下不扩展原生对象)。