2017-07-18 54 views
0

在Node.js中从模块中导出函数的语法是什么?在Node.js中从模块中导出函数的语法是什么?

function foo() {} 
function bar() {} 

export foo; // I don't think this is valid? 
export default bar; 
+1

可能的复制[什么是“出口默认“在JavaScript?](https:// stackoverflow。com/questions/21117160/what-is-export-default-in-javascript) – Erazihel

+1

绝对不是重复的。这是当前Node构建中的功能支持问题。什么是降薪,人们? – slezica

回答

3

在节点导出事情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本地支持的语法。节点不支持import/export语法(请参阅this以了解原因)。由于slezica在下面的评论中指出,您可以使用像Babel这样的转译器将import/export关键字转换为Node可以理解的语法。

见这些问题的答案以获得更多信息:

+0

啊,谢谢。同样的ES2015模块语法是什么? – Ben

+1

这是Node开始支持'import' /'export' ES6语法的唯一方法,**它目前不支持**。你也可以使用Babel,安装'babel-cli'和'babel-preset-latest'作为开发依赖项,然后预编译你的javascript或运行'babel-node'。我为我的所有项目都这样做 – slezica

1

以暴露foo和bar功能:

module.exports = { 
    foo: function() {}, 
    bar: function() {} 
} 
1

你也可以做到这一点的更短的形式

// people.js 
function Foo() { 
    // ... 
} 

function Bar() { 
    // ... 
} 

module.exports = { Foo, Bar} 

导入:

// index.js 
const { Foo, Bar } = require('./people.js'); 
0
export function foo(){...}; 

或者,如果功能已申报早些时候:

export {foo}; 

参考:的MDN export

相关问题