根据https://nodejs.org/api/child_process.html
的文件下一行发生了什么,为什么会这样?
A,B
据我所知,它只是将exec包装到另一个对象中,即
const { exec } = require('child_process');
然后有一项任务.. -Mind Blown -
答案 0 :(得分:4)
您的代码示例:
const { exec } = require('child_process');
产生的结果与:
相同const exec = require('child_process').exec;
这称为解构分配,是ES2015(ES6)中的新功能,在此处描述:MDN上的Destructuring Assignment。它允许使用各种快捷方式将源对象中的一个或多个属性分配给各种类型的目标。在这种情况下,源对象是require('child_process')
的结果,所需的目标是名为exec
的单个变量,它将从源接收单个命名属性。
当您指定多个属性时,它会变得更有用:
const { exec, spawn, fork } = require('child_process');
这将创建名为exec
,spawn
和fork
的模块级变量,这些变量包含子进程模块中的那些导出属性。在进行结构分配之前,可以做一个:
const child = require('child_process');
const exec = child.exec;
const spawn = child.spawn;
const fork = child.fork;
或者刚刚这样做了:
const child = require('child_process');
然后,使用child.exec()
和child.spawn()
以及child.fork()
来使用这些方法。正如您所看到的,解构分配是一个重要的捷径。有许多形式的解构,你可以做更高级的事情,比如指定接收变量的名称与命名的属性不同,解构可以与数组一起使用,而不仅仅是对象。
以下是关于该主题的其他几篇参考文章:
Destructuring and parameter handling in ECMAScript 6
答案 1 :(得分:0)
这是符合ES6规范的特殊符号。
在这里,您在具有相同名称的变量中通过require提取对象返回的属性exec
的值。
const { exec } = require('child_process');
// Equals
const exec = require('child_process').exec;
您可以将somme属性提取为这样的对象。
const { exec, spawn, fork } = require('child_process');
let { a, b } = { a: 'foo', b: 'bar' };
加载库时它特别有用。