我知道require
不在浏览器上,但为什么,nodejs是否具体?打字稿/ ES6中的import { some-module } from 'some-module-location'
实际上是否也一样?
此外,可以使用import
代替使用<script>
在网页中嵌入js文件来使用showMenu()
吗?
答案 0 :(得分:0)
在nodejs var profile = new FirefoxProfile(@"C:\Users\<MyUsername>\TestProfile", deleteSourceOnClean: false);
中的实现方式与require
类似。它不是一种语言功能,而是一种普通的功能。
如果你在node.js中切换到调试模式,你会看到每个填充都包含在一个函数中:
requirejs
另一方面, (function( exports, require, module, __filename, __dirname) {
// the original source of the file
})
是ES6规范的一部分。
内部node.js会对import
和import
执行相同操作,只需使用其他语法。 TypeScript或WebPack会将require
转换为与上面类似的内部语法。
此处可以看到import
的浏览器支持:
答案 1 :(得分:0)
我知道
require
不在浏览器上,但为什么,nodejs是否具体?打字稿/ ES6中的import { some-module } from 'some-module-location'
实际上是否也一样?
您说得对,require
不是原生浏览器功能。但是,它是CommonJS规范的一部分,但不是node.js独有的。你看,在ES2015 / ES6之前,没有本地方式来进行模块化组织/加载JavaScript。为了解决这个问题,出现了两种主要方法:CommonJS和异步模块定义(AMD)。
两者都有一个require
“关键字”,用于将指定的模块加载到上下文中。但是,每个都以不同的方式加载它。您可以阅读很多关于不同问题的差异,例如:Difference between RequireJS and CommonJS。主要区别在于CommonJS是同步的,而AMD是异步的。
不同的框架和库使用不同的加载器。 AMD由require.js,Dojo和AngularJS使用(虽然不完全符合规范)。最常见的CommonJS实现是逐节点.js。