Node.js 是一个开发平台,有对应的编程语言(JS)、运行环境(Chrome V8),提供了实现了特定性能的 API,能够开发控制台程序、桌面应用程序、Web 应用程序。
生态系统是 npm,特点是事件驱动、非阻塞 I /O(异步回调)、单线程。
英文官网:https://nodejs.org/en/
能够切换成中文的(网站右侧)
中文 API 文档:http://nodejs.cn/api/
全局模块是不须要require
,辨别形式有两种
- 看文档给出的应用案例
-
通过查看 “ 全局变量 ”
api 有三个稳定性标记
- 弃用 0。此个性可能会触发正告。不保障向后兼容性。
- 试验 1。此个性不受语义化版本控制标准的束缚。在任何的将来版本中可能产生不向后兼容的更改或移除。倡议不要在生产环境中应用该个性。
– 稳固 2。与 npm 生态系统的兼容性是最高的优先级。
const fs = require('fs');
fs.readFile("./hello.txt");
./hello.txt
是一个相对路径,会依据执行 node
命令时所在的门路去查找。
比方上述文件在:D:\software\hello.js
但在 D 盘下,运行node software\hello.js
,则会是D:\hello.txt
__dirname
,示意以后正在执行的 js 文件所在的目录,并不是全局的。
__filename
在 __dirname
的根底上加上文件名,并不是全局的。
try-catch
只能捕捉同步操作,对异步回调无能为力
const fs = require('fs');
try {fs.readFile('不存在的门路', (error) => {console.log('读取文件', error.code);
});
} catch (error) {console.log('捕捉到谬误了', error);
}
输入 ” 读取文件 ENOENT”
require
加载模块是同步执行的,按程序顺次加载
应用相对路径的时候永远是指以后文件所在的门路
先看缓存有没有,如果是一个门路,提供后缀名间接加载,没有则依照 index.js、index.json、index.node,还没有再去找同命文件夹,认为是一个第三方模块,看外面的package.json
,main
(入口文件),如果门路不存在,再一次加载以后文件夹下的 index.js、index.json、index.node
先看缓存有没有,如果是一个模块,先在外围模块中查找,如果没有,则认为是一个第三方模块,去找以后 js 文件所在目录有没有node_moudles
,直到根目录
留神本人写的文件名也好,门路也好,不要和零碎内置模块重名。
在全局装置的模块 npm install mime -g
,能够尝试(有些模块只能在浏览器环境下跑) 通过命令行调用