基本NodeJS需要语法

时间:2015-02-16 00:20:52

标签: javascript node.js

我对NodeJS的这个基本语法提出了一个问题请求语法。

在这个存储库中,

https://github.com/alduro/generator-flux-webapp/blob/master/app/templates/src/app.js

它在第10行使用此代码:

var {Router} = require('director');

然后在第40行:

var router = new Router(routes).configure({html5history: true}).init();

这很有效。

但如果我从var {Router} = require('director');更改为var Router = require('director');

它会抛出异常, TypeError: Router is not a constructor.

它不再起作用了。


所以我的问题是{variable}是什么意思?

感谢您的时间。

1 个答案:

答案 0 :(得分:7)

var {Router} = require('director');行正在利用ES6 object destructuring。等效的行为var Router = require('director').Router;director模块导出一个具有名为Router的属性的对象。解构只是一种简单的方法,用于声明一个名为Router的变量,并使用相同名称的对象属性值初始化它。

更新:更改object destructuring link以指向更好的参考。

要查看此操作示例,请使用Babel's REPL进行尝试。 (Babel曾经是6to5。)

有多种不同的(大多数是等同的)方法可以完成同样的事情:

var Router = require('director').Router; // Pure ES5
var {Router: Router} = require('director'); // ES6 named destructuring
var {Router} = require('director'); // ES6 destructuring shorthand
import {Router} from 'director'; // ES6 module import