国际化支持
Internationalization support
为什么需要国际化?
- i18next - 最强大的选择
配置翻译
Modules: CommonJS modules
Modules: ECMAScript modules
os
// Node.js 应用运行的全栈视图:
┌─────────────────────────────────────┐
│ 你的Node.js应用代码 │ ← JavaScript
├─────────────────────────────────────┤
│ Node.js 运行时 │ ← V8引擎 + LibUV
├─────────────────────────────────────┤
│ 操作系统内核 (OS Kernel) │ ← Linux/Windows/macOS
├─────────────────────────────────────┤
│ 硬件 (Hardware) │ ← CPU、内存、磁盘、网络
└─────────────────────────────────────┘
总结:Node.js 与 OS 的关系
1. Node.js不是操作系统,是运行在OS之上的运行时环境
2. Node.js通过LibUV与OS交互,处理I/O操作
3. OS提供:进程管理、内存管理、文件系统、网络栈
4. Node.js负责:JavaScript执行、事件循环、模块系统
// 开发时需要了解的OS知识:
- 文件描述符限制
- 进程/线程模型
- 内存管理基础
- 网络协议栈
- 跨平台差异
生产环境建议:
const productionChecklist = {
linux: [
'调整文件描述符限制',
'优化TCP参数',
'监控系统负载',
'配置合适的交换分区',
'使用cgroups限制资源'
],
general: [
'监控内存使用,防止OOM',
'配置合理的进程守护(pm2/systemd)',
'日志轮转配置',
'备份和恢复策略'
]
};
记住:Node.js 让你专注于业务逻辑,OS 处理底层复杂性。但了解 OS 原理能帮助你写出更好、更稳定的 Node.js 应用。
Performance measurement APIs
process
性能测量API提供了一套高精度、跨平台的方法来测量应用程序的性能。它主要包括两个部分:
高精度时间测量:提供微秒级精度的时间戳,用于测量代码执行时间、网络延迟等。
性能时间线:记录各种性能条目(如资源加载、用户自定义测量等),并允许通过PerformanceObserver异步获取这些条目。
Node.js 的 process 对象是掌控进程的核心,它提供了:
进程信息:获取PID、环境变量、命令行参数等
进程控制:退出、杀死、改变工作目录等
事件监听:处理异常、信号、退出等事件
进程通信:父子进程间IPC通信
性能监控:内存、CPU使用情况
掌握 process 对象的使用,对于构建健壮、可维护的Node.js应用至关重要。无论是处理优雅退出、监控性能,还是实现多进程架构,都离不开对进程对象的深入理解。
在实际开发中,建议结合具体场景合理使用 process 的功能,特别是在生产环境中,要确保有完善的错误处理和信号处理机制,以保证应用的稳定性和可靠性。
Readline
使用场景 命令行工具:创建交互式CLI工具。
配置文件生成:通过问答生成配置文件。
数据导入:逐行读取大型文件进行处理。
教学工具:创建交互式教学程序。
游戏:创建文字冒险游戏
REPL
Node.js REPL(交互式解释器)全面指南 REPL(Read-Eval-Print Loop)是 Node.js 的交互式编程环境,允许你逐行执行 JavaScript 代码并立即查看结果。它是学习、调试和快速测试代码的强大工具。
Single executable applications
单可执行应用程序(Single Executable Applications,SEA)是 Node.js 的一项实验性功能,允许你将 Node.js 应用程序及其依赖打包成一个单独的可执行文件,无需在目标机器上安装 Node.js 运行时。
SQLite
我们首先来了解一下SQLite。SQLite是一个轻量级的、基于文件的数据库管理系统,它不需要独立的服务器进程,而是直接读写磁盘上的数据库文件。它非常适合于嵌入式设备、小型到中型应用程序,以及作为应用程序的本地数据存储。
在Node.js中,我们可以使用多个模块来操作SQLite数据库,其中最流行的是sqlite3模块。