从 Node.js 中的模块导出函数的语法是啥?
Posted
技术标签:
【中文标题】从 Node.js 中的模块导出函数的语法是啥?【英文标题】:What is the syntax to export a function from a module in Node.js?从 Node.js 中的模块导出函数的语法是什么? 【发布时间】:2017-12-23 14:57:27 【问题描述】:从 Node.js 中的模块导出函数的语法是什么?
function foo()
function bar()
export foo; // I don't think this is valid?
export default bar;
【问题讨论】:
What is "export default" in javascript?的可能重复 绝对不是重复的。这是当前 Node 构建中的功能支持问题。各位,反对票是怎么回事? 【参考方案1】:在 Node 中,您使用 module.exports
特殊对象导出内容。例如:
这会导出两个函数:
module.exports = foo, bar ;
它们可以用作:
const foo, bar = require('./module/path');
要将其中一个函数导出为***对象,您可以使用:
module.exports = foo;
module.exports.bar = bar;
可以用作:
const foo = require('./module/path');
和:
const bar = require('./module/path');
或:
const foo = require('./module/path');
const bar = foo;
或:
const foo = require('./module/path');
const bar = foo.bar;
等等
这是问题中所问的“从 Node.js 中的模块导出函数的语法”——即 Node.js 原生支持的语法。 Node 不支持import
/export
语法(请参阅this 了解原因)。正如 slezica 在下面的 cmets 中指出的那样,您可以使用像 Babel 这样的转译器将 import
/export
关键字转换为 Node 可以理解的语法。
查看这些答案了解更多信息:
Is it ok to use Babel npm package for node.js server application javascript - Why is there a spec for sync and async modules?【讨论】:
啊,谢谢。相同的 ES2015 模块语法是什么? 这是 Node 开始支持import
/export
ES6 语法之前的唯一方法,它目前不支持。您还可以使用 Babel,安装 babel-cli
和 babel-preset-latest
作为开发依赖项,然后预编译您的 javascript 或运行 babel-node
。我为我的所有项目都这样做【参考方案2】:
公开 foo 和 bar 函数:
module.exports =
foo: function() ,
bar: function()
【讨论】:
【参考方案3】:你也可以用更短的形式来做
// people.js
function Foo()
// ...
function Bar()
// ...
module.exports = Foo, Bar
进口:
// index.js
const Foo, Bar = require('./people.js');
【讨论】:
【参考方案4】:export function foo()...;
或者,如果函数之前已声明:
export foo;
参考:MDN export
【讨论】:
以上是关于从 Node.js 中的模块导出函数的语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章