Javascript Nodejs使用变量赋值来加载模块

Javascript Nodejs使用变量赋值来加载模块,javascript,node.js,ecmascript-5,Javascript,Node.js,Ecmascript 5,大多数语言使用“导入”指令来加载其他模块代码,如 爪哇- elisp- (load a) 蟒蛇- from a import b 但是,为什么NodeJ使用变量表达式来加载其他模块函数,如 var a = require('a') 我明白了,大多数javascript的IDE,比如tern.js-emacs、nodeclipse,都无法正确地查找加载模块的源代码,因为IDE必须运行代码或进行评估才能找到,加载的模块对象包含哪些属性。您可以说JS属于一类语言,在这类语言中,一切都是平等的对象

大多数语言使用“导入”指令来加载其他模块代码,如 爪哇-

elisp-

(load a)
蟒蛇-

from a import b
但是,为什么NodeJ使用变量表达式来加载其他模块函数,如

var a = require('a')

我明白了,大多数javascript的IDE,比如tern.js-emacs、nodeclipse,都无法正确地查找加载模块的源代码,因为IDE必须运行代码或进行评估才能找到,加载的模块对象包含哪些属性。

您可以说JS属于一类语言,在这类语言中,一切都是平等的对象的思想是指导其发展的哲学的一部分。节点的require是由环境提供的一个函数对象,模块对象也是。这种模式称为通用JS格式

实际上,您不必将require函数的结果分配给变量。这在实践中是很少见的,但是您正在调用的节点模块可能只是被调用以引起一个动作发生,例如,可能需要sugar.js,它改变了一些本机对象,但没有自己提供的方法,因此,没有必要指定返回值,即在该模块执行期间提供的module.exports对象

不将模块分配给变量的一个更常见的例子是,使用require只是从模块中获取一些属性,例如var x=require'module'.methodOfInterest。类似地,有些模块返回构造函数,因此您有时可能会看到var instance=new require'ConstructorModule'选项,这在我看来很难看;请求通常应分组在文件的顶部,并仅在之后执行


注意:您的问题确实没有具体的答案,因此很可能会因为不合适而关闭。

ECMAScript 5.1是Node.js运行的语言。它没有导入功能。ES6不支持,当V8支持它时,node将支持它。同时,还有ES6->ES5转换器,允许您在JS中使用import,如果您愿意的话。这样您就可以使用变量引用返回的对象。a、 某种方法a;例如。
var a = require('a')