目录
⭐node你需要掌握:
- 包管理:npm、 yarn、 npx;
- 常用包:文件读写fs、 路径查找path、 网络http。
前言
什么是Node.js?
- Node.js 不是一门语言,也不是 JavaScript 的框架,也不是像Nginx一样的Web服务器 ,而是 JavaScript 在服务器端的运行环境(平台)。
- Node.js 使用了一个事件驱动、非阻塞式 I/O的模型,使其轻量又高效。Node.js 的包管理工具 npm 是全球最大的开源库生态系统。
- Node.js 内部采用 Google Chrome 的 V8 引擎,作为 JavaScript 语言解释器;同时结合自行开发的 libuv 库,扩展了 JS 在后端的能力(比如 I/O 操作、文件读写、数据库操作等)。使得 JS 既可以在前端进行 DOM 操作(浏览器前端),又可以在后端调用操作系统资源,是目前最简单的全栈式语言。
为什么要学Node.js?
- 了解前后端交互流程;
- Node.js 使用 JavaScript 语言开发服务器端应用,便于前端同学上手;
- 实现了前后端的语法统一,有利于和前端代码整合,甚至共用部分代码;
- Node.js 性能高、生态系统活跃,提供了大量的开源库。
模块化
① 简介
在【ES6】学Vue前必须掌握的内容(下) 这篇文章中解释了模块化的基本概念,不过这里面说明的import & export是 ES6规范 的。
模块化规范:对代码进行模块化的拆分与组合时,需要遵守的那些规则。
模块化规范还有:
- 服务器端规范 :CommonJS规范(是 Node.js 使用的模块化规范)
- 浏览器端规范:AMD规范和CMD规范
// PS:面试时,经常会问AMD 和 CMD 的区别。
- AMD规范:是RequireJS在推广过程中对模块化定义的规范化产出。
- 异步加载模块;
- 依赖前置、提前执行:require([`foo`,`bar`],function(foo,bar){}); //也就是说把所有的包都 require 成功,再继续执行代码。
- define 定义模块:define([`require`,`foo`],function(){return});
- CMD规范:是SeaJS在推广过程中对模块化定义的规范化产出。淘宝团队开发。
- 同步加载模块;
- 依赖就近,延迟执行:require(./a) 直接引入。或者Require.async 异步引入。 //依赖就近:执行到这一部分的时候,再去加载对应的文件。
- define 定义模块, export 导出:define(function(require, export, module){});
Node.js中根据模块的来源,将模块分成了3类:
- 内置模块:由Node.js官方提供,如fs、path、http等;⭐
- 自定义模块:用户创建的每个js文件;
- 第三方模块:非官方提供也不是用户创建,使用前需要下载。