Node.js 是服务端的JavaScript的运行环境 JavaScript本身依赖于浏览器
基于Google的V8引擎,事件驱动I/O服务端JavaScript环境
npm 是node的包管理器,现已集成到node中
菜鸟教程
node 的组成部分
-
引入 required 模块
-
创建服务器 (类似于 Apache 、Nginx 等 HTTP 服务器)
-
接收请求与响应请求
npm使用场景
- 从NPM服务器下载别人编写的第三方包到本地使用。
- 从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 将自己编写的包或命令行程序上传到NPM服务器供别人使用。
npm config list
项目级 npm 配置: .npmrc
script
prexxx
postxxx
会在运行 npm run xxx 时,自动执行
node_modules
node 的 module 参考了 CommonJS 规范
显著特点 多次加载仅第一次真实运行,之后读取缓存
node 中 可以将 module.exports
简写 exports
区别:module.exports 可以直接赋值;exports 直接赋值就是去效果了(指针被覆盖了)
npx
.bin > 全局 > npm官网 下 运行可执行文件
内置 API
__dirname 在 esm 模式下用不了 可以用 process.cwd() 代替
__filename
process
.pid 进程id
.env 环境变量
.arch 操作系统环境
.argv 执行进程的 命令信息
.memoryUsage 内存信息
.cwd() 工作目录
.exit() 退出进程
.kill(pid) 杀死指定进程
child_process
exec
execFile
spawn
fork 创建子进程
SSR CSR
SSR 优势
首屏提升
SEO 搜索引擎优化
next.js SSR框架 ToC
CSR ToB
node 模块
fs 文件模块
io底层 libuv 实现
方法 | 作用 |
---|---|
.access() | 检查文件是否存在,以及 Node.js 是否有权限访问。 |
.appendFile() | 追加数据到文件。如果文件不存在,则创建文件。 |
.chmod() | 更改文件(通过传入的文件名指定)的权限。相关方法:fs.lchmod() 、fs.fchmod() 。 |
.chown() | 更改文件(通过传入的文件名指定)的所有者和群组。相关方法:fs.fchown() 、fs.lchown() 。 |
.close() | 关闭文件描述符。 |
.copyFile() | 拷贝文件。 |
.createReadStream() | 创建可读的文件流。 |
.createWriteStream() | 创建可写的文件流。 |
.link() | 新建指向文件的硬链接。 |
.mkdir() | 新建文件夹。 |
.mkdtemp() | 创建临时目录。 |
.open() | 设置文件模式。 |
.readdir() | 读取目录的内容。 |
.readFile() | 读取文件的内容。相关方法:fs.read() 。 |
.readlink() | 读取符号链接的值。 |
.realpath() | 将相对的文件路径指针(.、…)解析为完整的路径。 |
.rename() | 重命名文件或文件夹。 |
.rmdir() | 删除文件夹。 |
.stat() | 返回文件(通过传入的文件名指定)的状态。相关方法:fs.fstat() 、fs.lstat() 。 |
.symlink() | 新建文件的符号链接。 |
.truncate() | 将传递的文件名标识的文件截断为指定的长度。相关方法:fs.ftruncate() 。 |
.unlink() | 删除文件或符号链接。 |
.unwatchFile() | 停止监视文件上的更改。 |
.utimes() | 更改文件(通过传入的文件名指定)的时间戳。相关方法:fs.futimes() 。 |
.watchFile() | 开始监视文件上的更改。相关方法:fs.watch()。 |
.writeFile() | 将数据写入文件。相关方法:fs.write() 。 |
加 Sync
后缀的方法为同步方法
path 路径模块
path.sep
路径分割符 跨平台兼容path.delimiter
路径定界符
方法 | 作用 |
---|---|
.basename() | 返回路径的最后一部分 第二个参数可以过滤掉文件的扩展名 path.posix.basename 不支持 反斜杠路径;.win32 可以支持 |
.dirname() | 返回路径的非最后一部分的目录 |
.extname() | 返回路径的扩展名部分 |
.isAbsolute() | 判断绝对路径 |
.join() | 拼接字符串组成新路径 |
.normalize() | 尝试计算实际的路径 |
.parse() | 解析路径为组成其的片段的对象 root: 根路径 dir: 从根路径开始的文件夹路径 base: 文件名 + 扩展名 name: 文件名 ext: 文件扩展名 |
.format() | parse 的逆向 |
.relative() | 返回从第一个路径到第二个路径的相对路径 |
.resolve() | 获得相对路径的绝对路径 |
path.resolve(__dirname, 'index.js') // 转化为绝对路径
os 操作系统模块
os.EOL 行定界符序列 \n
\r\n
方法 | 作用 |
---|---|
.arch() | 返回标识底层架构的字符串,例如 arm、x64、arm64 |
.cpus() | 返回关于系统上可用的 CPU 的信息 |
.endianness() | 根据是使用大端序或小端序编译 Node.js,返回 BE 或 LE |
.freemem() | 返回代表系统中可用内存的字节数 |
.homedir() | 返回到当前用户的主目录的路径 |
.hostname() | 返回主机名 |
.loadavg() | 返回操作系统对平均负载的计算 |
.networkInterfaces() | 返回系统上可用的网络接口的详细信息 |
.platform() | 返回为 Node.js 编译的平台 操作系统平台 |
.release() | 返回标识操作系统版本号的字符串 |
.tmpdir() | 返回指定的临时文件夹的路径 |
.totalmem() | 返回表示系统中可用的总内存的字节数 |
.type() | 标识操作系统 |
.version() | 操作系统版本信息 |
.uptime() | 返回自上次重新启动以来计算机持续运行的秒数 |
.userInfo() | 返回包含当前 username、uid、gid、shell 和 homedir 的对象 |
http 模块
属性
.METHODS 可列出所有方法
.STATUS_CODES 列出所有状态码 及描述
.globalAgent 指向 Agent 对象的全局实例
方法
http.createServer() 返回 http.Server 类的新实例
http.request() 发送 HTTP 请求到服务器,并创建 http.ClientRequest 类的实例
http.get() http.request() 使用get方法
类
- http.Agent
- http.ClientRequest 当 http.request() 或 http.get() 被调用时,会被创建
- http.Server
close() 停止服务器不再接受新的连接。
listen() 启动 HTTP 服务器并监听连接。 - http.ServerResponse
- http.IncomingMessage
url 模块
emitter 事件模块
const EventEmitter = require('events');
util 工具库
util.promisify