Node执行import引发的思考

终端执行命名: node TypeScript-Http.ts

import http  from "http";
http.createServer((req,res)=> {
    res.statusCode = 200;
    res.setHeader("Content-Type","plain/html");
    res.end("Hello world!")
})

终端现象:
报错信息如下:
Node执行import引发的思考_第1张图片

语法错误:不期望的标识符。

推论:Node执行文件里的代码时,import导入模块语句还不能识别。

那么我自己会问:import这个关键词,是什么时候引入JS语言中的?

接下来要调查的问题:
1.import出现的初衷是什么?

- 在ES6语言标准层面,实现了静态化。

2.import是要解决什么样的问题?

- 编译时就确定了依赖关系,以及输入输出变量

3.为什么要引入import?

- JS代码在历史上,从来没有模块化体系,导致无法把大项目拆分成一个个文件啊  

4.import适用范围在哪里?

- 浏览器和Node,python语言也支持

5.为什么不能用别的方法解?

- 用commonJS和AMD,一个在服务端,一个在浏览器端。

关键词JS引擎有它的解析规则。
查询import MDN JavaScript一手资料
import-JavaScript| MDN
阅读文档后,只是用法,浏览到浏览器兼容性,使用范围。

更改了js文件后缀名为.mjs执行Node的命令,结果还是不行。

就查阅阮一峰对于Module的认识,Modules,得到了答案,Node的CommonJS和ES6模块格式不兼容。

发现了node执行.mjs文件的方法,加上参数,里面的代码正确的执行了。

node --experimental-modules Typescript-http.mjs

查阅了自己电脑上的Node版本是10.x.x。选择了Node文档的版本,ECMAScript modules | Node
在第一段就写上了执行命令要加上flag才能执行ES6模块。

简单把体会写下,也算输出,考虑不足下次完善。

你可能感兴趣的:(node.js,javascript)