Nodejs入门须知的基本概念

769 阅读2分钟

Node.js 是一个开发平台,有对应的编程语言(JS)、运行环境(Chrome V8),提供了实现了特定功能的API,可以开发控制台程序、桌面应用程序、Web应用程序。

生态系统是npm,特点是事件驱动、非阻塞I/O(异步回调)、单线程。


英文官网:nodejs.org/en/ 可以切换成中文的(网站右侧)

3004133-bcc379fa4104e54d.png 中文API文档:nodejs.cn/api/


全局模块是不需要require,区分方式有两种

  1. 看文档给出的使用案例
  2. 通过查看 "全局变量"

3004133-bba1c1a267bafd55.png


api有三个稳定性标记

c.png

  • 弃用 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.jsonmain(入口文件),如果路径不存在,再一次加载当前文件夹下的index.js、index.json、index.node

先看缓存有没有,如果是一个模块,先在核心模块中查找,如果没有,则认为是一个第三方模块,去找当前js文件所在目录有没有node_moudles,直到根目录

注意自己写的文件名也好,路径也好,不要和系统内置模块重名。


在全局安装的模块npm install mime -g,可以尝试(有些模块只能在浏览器环境下跑)通过命令行调用

d.png