概述 
ok,要写 Node.js 就要基本上对它有一个大体的概念性了解。
- nodejs 并不是 - JavaScript应用,也不是编程语言,因为编程语言使用的 JavaScript,Nodejs 是 JavaScript 的运行时。
- Nodejs 是构建在 V8 引擎之上的,V8 引擎是由 C/C++编写的,因此我们的 JavaSCript 代码需要由 C/C++转化后再执行。 
- NodeJs 使用异步 I/O 和事件驱动的设计理念,可以高效地处理大量并发请求,提供了非阻塞式 I/O 接口和事件循环机制,使得开发人员可以编写高性能、可扩展的应用程序,异步 I/O 最终都是由 libuv 事件循环库去实现的。 
- NodeJs 使用 npm 作为包管理工具类似于 python 的 pip,或者是 java 的 Maven,目前 npm 拥有上百万个模块。 www.npmjs.com/ 
- nodejs 适合干一些 IO 密集型应用,不适合 CPU 密集型应用,nodejsIO 依靠 libuv 有很强的处理能力,而 CPU 因为 nodejs 单线程原因,容易造成 CPU 占用率高,如果非要做 CPU 密集型应用,可以使用 C++插件编写 或者 nodejs 提供的 cluster。(CPU 密集型指的是图像的处理 或者音频处理需要大量数据结构 + 算法) 
nodeJs 大致架构图 

npm 
npm (全称 Node Package Manager)是 Node.js 的包管理工具,它是一个基于命令行的工具,用于帮助开发者在自己的项目中安装、升级、移除和管理依赖项。
npm 命令 
- npm init初始化一个新的 npm 项目,创建 package.json 文件
- npm install <package-name>简写为- npm i <package-name>在没有写- <package-name>的时候为安装一组包,否则为安装指定的包,特别强调的是当额外添加- --save-dev(简写为- -D),则此次安装是天津到 package.json 文件中的开发依赖列表中,- -g则是全局安装。
- npm update <package-name>更新指定的包
- npm uninstall <package-name>卸载指定的包
- npm info <package-name>查看指定包的详细信息
- npm list简写为- npm ls列出当前项目中安装的所有包 ,特别的,如果此刻输入的命名是- npm ls -g它则是列出当前电脑中全局的包
- npm audit检查当前项目中的依赖项是否存在安全漏洞。
- npm publish发布自己开发的包到 npm 库中。
- npm login登录到 npm 账户。
- npm logout注销当前 npm 账户。
- npm link将本地模块链接到全局的 node_modules 目录下
- npm config list用于列出所有的 npm 配置信息。执行该命令可以查看当前系统和用户级别的所有 npm 配置信息,以及当前项目的配置信息(如果在项目目录下执行该命令)
- npm get registry用于获取当前 npm 配置中的 registry 配置项的值。registry 配置项用于指定 npm 包的下载地址,如果未指定,则默认使用 npm 官方的包注册表地址
- npm set registry npm config set registry <registry-url>命令,将 registry 配置项的值修改为指定的- <registry-url>地址
Package.Json 一些定义 
- name项目名称,必须是唯一的字符串,通常采用小写字母和连字符的组合。
- version项目版本号,通常采用语义化版本号规范。
- description项目描述。
- main项目的主入口文件路径,通常是一个 JavaScript 文件。
- keywords项目的关键字列表,方便他人搜索和发现该项目。
- author项目作者的信息,包括姓名、邮箱、网址等。
- license项目的许可证类型,可以是自定义的许可证类型或者常见的开源许可证(如 MIT、Apache 等)。
- dependencies项目所依赖的包的列表,这些包会在项目运行时自动安装。
- devDependencies项目开发过程中所需要的包的列表,这些包不会随项目一起发布,而是只在开发时使用。
- peerDependencies项目的同级依赖,即项目所需要的模块被其他模块所依赖。
- scripts定义了一些脚本命令,比如启动项目、运行测试等。
- repository项目代码仓库的信息,包括类型、网址等。
- bugs项目的 bug 报告地址。
- homepage项目的官方网站地址或者文档地址。
 zerone
zerone