编辑
使用 ES6 导出会更好一些
export const hello = function(){
console.log('hello');
};
导入看起来像
import {hello} from './file';
原始答案
你会想要使用module.exports
var hello = function(){
console.log('hello');
};
module.exports = hello;
如果只是导出一件事,我通常会在一行中完成所有操作
var hello = module.exports = function() {
console.log('hello');
};
附加功能
如果您使用命名函数,如果您的代码中发生错误,您的堆栈跟踪将看起来更好。这是我写它的方式
// use a named function ↓
var hello = module.exports = function hello() {
console.log("hello");
};
现在anonymous
,它不会在堆栈跟踪中显示函数名称,而是向您显示hello
. 这使得查找错误变得更加容易。
我在任何地方都使用这种模式,以便我可以轻松地调试代码。这是另一个例子
// event listeners ↓
mystream.on("end", function onEnd() {
console.log("mystream ended");
};
// callbacks ↓
Pokemon.where({name: "Metapod"}, function pokemonWhere(err, result) {
// do stuff
});
如果要导出多个东西,可以exports
直接使用,但是必须提供一个key
// lib/foobar.js
exports.foo = function foo() {
console.log("hello foo!");
};
exports.bar = function bar() {
console.log("hello bar!");
};
现在,当您使用该文件时
var foobar = require("./lib/foobar");
foobar.foo(); // hello foo!
foobar.bar(); // hello bar!
作为最后的奖励,我将向您展示如何foobar.js
通过导出单个对象来重写它但仍然获得相同的行为
// lib/foobar.js
module.exports = {
foo: function foo() {
console.log("hello foo!");
},
bar: function bar() {
console.log("hello bar!");
}
};
// works the same as before!
这允许您以最适合该特定模块的方式编写模块。耶!