我对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}是什么意思?
感谢您的时间。
答案 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