在这个页面上( http://docs.nodejitsu.com/articles/getting-started/what-is-require ),它指出:“如果你想把exports对象设置为一个函数或一个新的对象,你必须使用module.exports对象“。 我的问题是为什么。 // right module.exports = function () { console.log("hello world") } // wrong exports = function () { console.log("hello world") } 我console.logged结果( result=require(example.js) ),第一个是[Function]第二个是{} 。 你能解释一下它背后的原因吗? 我在这里阅读这篇文章: module.exports vs在Node.js中导出 。 这是有帮助的,但没有解释为什么这样devise的原因。 如果直接返回出口的参考资料,会出现问题吗?
我正在尝试webpack( http://webpack.github.io/ ),它看起来非常好,但我有点卡在这里。 说我正在使用一个CDN库,f.ex jQuery。 然后在我的代码中,我想让require('jquery')自动指向全局jquery实例,而不是试图从我的模块中包含它。 我试过使用像IgnorePlugin这样的IgnorePlugin : new webpack.IgnorePlugin(new RegExp("^(jquery|react)$")) 这可以忽略这个库,但是它仍然会说当我运行webpacker的时候需要的模块是“丢失”的。 不知何故,我需要告诉webpack,应该从全局上下文中取代jquery 。 看起来像一个常见的用例,所以我有点惊讶,文档没有针对这个具体。
在我的系统中,我在浏览器中加载了一些“类”,每个“类”在开发过程中分别存放一个文件,并连接在一起用于生产。 当它们被加载时,它们在全局对象(这里是G上初始化一个属性,如下例所示: var G = {}; G.Employee = function(name) { this.name = name; this.company = new G.Company(name + "'s own company"); }; G.Company = function(name) { this.name = name; this.employees = []; }; G.Company.prototype.addEmployee = function(name) { var employee = new G.Employee(name); this.employees.push(employee); employee.company = this; }; var john = new G.Employee("John"); var bigCorp = […]
我仍然对CommonJS,AMD和RequireJS感到困惑。 即使阅读了很多。 我知道CommonJS(以前称为ServerJS)是一个用于在浏览器外部使用该语言时定义一些JavaScript规范(即模块)的组。 CommonJS模块规范有一些像Node.js或RingoJS的实现,对吧? CommonJS,asynchronous模块定义(AMD)和RequireJS之间有什么关系? RequireJS是否实现了CommonJS模块定义? 如果是,AMD又是什么?
之前,babel会添加line module.exports = exports["default"] 。 它不再这样做。 这是什么意思是我可以做之前: var foo = require('./foo'); // use foo 现在我必须这样做: var foo = require('./foo').default; // use foo 不是一个巨大的交易(我猜这是它应该一直以来)。 问题是,我有很多代码依赖于以前的工作方式(我可以将其大部分转换为ES6import,但不是全部)。 任何人都可以给我提示,如何使旧的方式工作,而不必通过我的项目,并解决这个问题(甚至一些如何编写codemod做这个指令将是非常光滑的指令)。 谢谢! 例: input: const foo = {} export default foo 用Babel输出5 "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var foo = {}; exports["default"] = foo; module.exports = exports["default"]; 用Babel […]
我在Node.js模块中find了以下合同: module.exports = exports = nano = function database_module(cfg) {…} 我不知道是什么module.exports和exports之间的差异,为什么这两个在这里使用。