两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 |
public:it:nodejs [2021/05/12 09:50] – oakfire | public:it:nodejs [2024/01/05 09:23] (当前版本) – [›› npm or yarn] oakfire |
---|
<WRAP center tip 60%> | <WRAP center tip 60%> |
News: | News: |
| * [[https://nodejs.org/en/blog/release/v18.0.0|node 18.0]] |
| * [[https://nodejs.org/en/blog/release/v16.0.0/|node 16.0]] |
* [[https://nodejs.org/en/blog/release/v10.0.0/|node 10.0]] | * [[https://nodejs.org/en/blog/release/v10.0.0/|node 10.0]] |
* [[https://nodejs.org/en/blog/release/v8.0.0/|node 8.0]] | * [[https://nodejs.org/en/blog/release/v8.0.0/|node 8.0]] |
* {{:public:it:speakerdeck-_memory_management_masterclass_devtools_2_.pdf|memory_management.pdf}} | * {{:public:it:speakerdeck-_memory_management_masterclass_devtools_2_.pdf|memory_management.pdf}} |
* [[http://huang-jerryc.com/2016/04/14/NodeJS%E4%B8%AD%E8%A2%AB%E5%BF%BD%E7%95%A5%E7%9A%84%E5%86%85%E5%AD%98/|NodeJS 内存]] | * [[http://huang-jerryc.com/2016/04/14/NodeJS%E4%B8%AD%E8%A2%AB%E5%BF%BD%E7%95%A5%E7%9A%84%E5%86%85%E5%AD%98/|NodeJS 内存]] |
| * [[https://blog.appsignal.com/2022/09/28/minimize-heap-allocations-in-nodejs.html|Minimize heap allocations in nodejs]] |
| |
| |
===== 3. Packages ===== | ===== 3. Packages ===== |
* [[https://github.com/sindresorhus/awesome-nodejs|awesome-nodejs]] <wrap em>这里可以分类查找你想要的库!</wrap> | * [[https://github.com/sindresorhus/awesome-nodejs|awesome-nodejs]] <wrap em>这里可以分类查找你想要的库!</wrap> |
==== » Modules ==== | ==== ›› Modules ==== |
* commonjs [[http://wiki.commonjs.org/wiki/Modules/1.0|Modules/1.0]] | * commonjs [[http://wiki.commonjs.org/wiki/Modules/1.0|Modules/1.0]] |
* [[http://nodejs.org/api/modules.html| modules doc]] **modules cycles 注意关于模块互相包含的处理机制** | * [[http://nodejs.org/api/modules.html| modules doc]] **modules cycles 注意关于模块互相包含的处理机制** |
==== » npm or yarn==== | ==== ›› npm or yarn==== |
* [[https://www.npmjs.com/|npm]] | * [[https://www.npmjs.com/|npm]] |
* [[https://docs.npmjs.com/files/package.json|package.json]] | * [[https://docs.npmjs.com/files/package.json|package.json]] |
* npm 使用国内淘宝源<code bash> | * npm 使用国内淘宝源<code bash> |
npm config set registry https://registry.npm.taobao.org | npm config set registry https://registry.npmmirror.com |
# 配置后可通过下面方式来验证是否成功 | # 配置后可通过下面方式来验证是否成功 |
npm config get registry | npm config get registry |
</code> | </code> |
* [[https://yarnpkg.com/zh-Hans/|yarn]]: 更快更安全 | * [[https://yarnpkg.com/zh-Hans/|yarn]]: 更快更安全 |
==== » pm2 ==== | * [[https://pnpm.io/motivation|pnpm]]: 可节省硬盘空间 |
| ==== ›› pm2 ==== |
* [[https://github.com/Unitech/pm2|pm2]] nodejs进程管理工具, 可 | * [[https://github.com/Unitech/pm2|pm2]] nodejs进程管理工具, 可 |
* 进程运行状态监测,进程重启 | * 进程运行状态监测,进程重启 |
* 超过指定内存则重启 | * 超过指定内存则重启 |
* 文件改动则重启 | * 文件改动则重启 |
==== » rxjs ==== | ==== ›› rxjs ==== |
* [[https://github.com/ReactiveX/rxjs|github repo]] | * [[https://github.com/ReactiveX/rxjs|github repo]] |
* [[https://rxjs.dev/guide/overview|overview]] | * [[https://rxjs.dev/guide/overview|overview]] |
* [[https://rxjs.dev/guide/observable|observable]] 这个要熟读并理解 | * [[https://rxjs.dev/guide/observable|observable]] 这个要熟读并理解 |
==== » async ==== | ==== ›› async ==== |
* [[https://github.com/caolan/async|async]] | * [[https://github.com/caolan/async|async]] |
* [[https://github.com/bsspirit/async_demo|async demo]] | * [[https://github.com/bsspirit/async_demo|async demo]] |
* [[http://zhangqi.im/webdevelopment/nodejsasyncone.html|部分介绍]] | * [[http://zhangqi.im/webdevelopment/nodejsasyncone.html|部分介绍]] |
* [[http://blog.fens.me/nodejs-async/|全面一点的]] | * [[http://blog.fens.me/nodejs-async/|全面一点的]] |
==== » promise ==== | ==== ›› promise ==== |
* [[http://www.thinkingincrowd.me/2013/11/13/callbacks-are-imperative/|Callbacks are imperative]] (async)回调风格是显式的控制处理流程来把很多值组织在一起,而 promises 是显式表达出值的关系来把控制流的各个组件连接在一起。回调是指令式的,promises 是函数式的 | * [[http://www.thinkingincrowd.me/2013/11/13/callbacks-are-imperative/|Callbacks are imperative]] (async)回调风格是显式的控制处理流程来把很多值组织在一起,而 promises 是显式表达出值的关系来把控制流的各个组件连接在一起。回调是指令式的,promises 是函数式的 |
* [[https://jysperm.me/2016/10/nodejs-error-handling/|引自这篇文章:]]如果有异常没有捕捉到怎么样?如果有一个异常一直被传递到最顶层调用栈还没有被捕捉,那么就会导致进程的崩溃退出,不过我们还有两个终极捕捉手段:<code javascript> | * [[https://jysperm.me/2016/10/nodejs-error-handling/|引自这篇文章:]]如果有异常没有捕捉到怎么样?如果有一个异常一直被传递到最顶层调用栈还没有被捕捉,那么就会导致进程的崩溃退出,不过我们还有两个终极捕捉手段:<code javascript> |
}); | }); |
</code> | </code> |
==== » express ==== | ==== ›› express ==== |
* 4.0 开始 express 废弃 connect, 默认的文件上传插件''multer''需要手动引入 | * 4.0 开始 express 废弃 connect, 默认的文件上传插件''multer''需要手动引入 |
==== » winston ==== | ==== ›› winston ==== |
* [[https://github.com/flatiron/winston | Homepage]] | * [[https://github.com/flatiron/winston | Homepage]] |
* Console 默认不以json格式记录, File默认以json格式记录, 可以用''json:true/false''来修改 | * Console 默认不以json格式记录, File默认以json格式记录, 可以用''json:true/false''来修改 |
* ''prettyPrint'' 会把object或json展开成多行, 利于肉眼观察不利于grep分析 | * ''prettyPrint'' 会把object或json展开成多行, 利于肉眼观察不利于grep分析 |
==== » moment ==== | ==== ›› moment ==== |
* <wrap em>坑!</wrap>moment如果使用object构造, 其中参数月份的值范围是0~11, 而其它构造方式是1~12; | * <wrap em>坑!</wrap>moment如果使用object构造, 其中参数月份的值范围是0~11, 而其它构造方式是1~12; |
* 改用 day.js | * 改用 day.js |
==== » http-server ==== | ==== ›› http-server ==== |
* 使用方便的静态http服务 ''sudo npm i http-server -g'' 安装, 之后使用''http-server''命令来启动静态网站. | * 使用方便的静态http服务 ''sudo npm i http-server -g'' 安装, 之后使用''http-server''命令来启动静态网站. |
==== » 一些好用的库 ==== | ==== ›› 一些好用的库 ==== |
* [[https://www.npmjs.com/package/shelljs|shelljs]] | * [[https://www.npmjs.com/package/shelljs|shelljs]] |
* [[https://www.npmjs.com/package/inquirer|inquirer]] 超好用的命令行界面库 | * [[https://www.npmjs.com/package/inquirer|inquirer]] 超好用的命令行界面库 |
* [[https://www.npmjs.com/package/figlet|figlet]] ascii字符图形 | * [[https://www.npmjs.com/package/figlet|figlet]] ascii字符图形 |
| |
==== » tips ==== | ==== ›› tips ==== |
* node-gyp 提示错误''/home/you/.node-gyp/0.10.26/common.gypi not found'',原因可能是上一次失败引起,直接删除''.node-gyp''整个文件夹迫使其重新编译即可。 | * node-gyp 提示错误''/home/you/.node-gyp/0.10.26/common.gypi not found'',原因可能是上一次失败引起,直接删除''.node-gyp''整个文件夹迫使其重新编译即可。 |
* :!: node 从 0.12 版本开始, ''socket.remoteAddress'' 的 IP 显示格式就变成了 IPv6 格式, 比如IP ''10.11.13.3'' 变为 ''::ffff:10.11.13.3'' | * :!: node 从 0.12 版本开始, ''socket.remoteAddress'' 的 IP 显示格式就变成了 IPv6 格式, 比如IP ''10.11.13.3'' 变为 ''::ffff:10.11.13.3'' |