使用Javascript需要并在浏览器

时间:2017-10-10 14:46:34

标签: javascript node.js typescript

我知道require不在浏览器上,但为什么,nodejs是否具体?打字稿/ ES6中的import { some-module } from 'some-module-location'实际上是否也一样?

此外,可以使用import代替使用<script>在网页中嵌入js文件来使用showMenu()吗?

2 个答案:

答案 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会对importimport执行相同操作,只需使用其他语法。 TypeScript或WebPack会将require转换为与上面类似的内部语法。

此处可以看到import的浏览器支持:

MDN: 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。