从 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-clibabel-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 中的模块导出函数的语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何访问和测试 node.js 模块中的内部(非导出)函数?

更正 node.js 中的异步函数导出

node.js的基本语法

node.js 基础操作

node.js 中的 Haste 模块映射是啥?

Node.js模块导入导出