Cor*_*urn 12 node.js typescript
我一直没能找到一个带有Typescript教程的有价值的NodeJS,所以我在没有指导的情况下潜水,当然我有一个问题.
我不明白这两行之间的区别:
import * as http from 'http';
// and
import http = require('http');
Run Code Online (Sandbox Code Playgroud)
他们似乎以相同的方式运作,但我想他们的行为可能有一些细微差别,否则其中一个可能不存在.
我确实理解第一种方法可以让我有选择地从一个模块导入,但如果我导入所有模块,那么两者之间有区别吗?有首选方式吗?如果我从我自己的文件导入,这会改变什么呢?
小智 10
import http = require('http') //Common JS
Run Code Online (Sandbox Code Playgroud)
这是常见的 JS 模块。在 12.2 版本之前,这是在 Node JS 中使用模块的唯一方法。
import * as http from 'http'; //ES 6
Run Code Online (Sandbox Code Playgroud)
这是 ES6 模块。在 ECMAScript 6 标准中,Javascript 本身支持模块。Node JS 在 12.2 版本中实现了此功能。
在这两个模块中,我总是更喜欢 ES6 模块,因为它是 javascript 实现的一部分。浏览器也支持ES6模块。但浏览器不支持 Common JS,因为它是同步的。AMD 模块在 ES 6 之前的浏览器中使用,因为它是异步的,与 CommonJS 不同
在第一种形式中,您在代码中创建一个http对象(完全干净),然后,解释器将在http模块中查找每个可能的导入并将其逐个附加到代码中的http对象,这是一个你得到在http模块中定义的module.exports对象,然后将这个引用复制到代码中的新http对象,这是具有特定上下文的节点特殊函数中的对象,比第二种形式慢一点(不多),不仅是代码中使用模块内容创建的对象.
| 归档时间: |
|
| 查看次数: |
17708 次 |
| 最近记录: |