这是我参与「第五届青训营」伴学笔记创作活动的第 7 天
一.Node.js应用场景
- 前端工程化(目前难以替代)
- web服务端应用
学习曲线平缓,运行效率高,SSR - Electron跨桌面应用(vscode,zoom)
二.Node.js运行结构
特点:
- 异步I/O 执行I/O操作不阻塞线程、额外占用内存等,在响应返回后恢复操作
- 单线程
主线程是单线程
四个线程:JS线程+UV线程池+ V8任务线程池 +V8 Inspector线程
不需要锁 - 跨平台
线程池:在程序运行开始,创建好多个线程挂起等待任务。线程不回收,直接进入等待队列
多线程:任务来的时候创建,然后执行任务,线程完成任务后回收
三.React SSR
避免重复写代码
qps较低,要考虑服务器端渲染的情况
难点:需要处理打包代码
安装strapi的一点体会:
strapi是headless cms
安装strapi前需要安装好Node.js,最好有nvm管理版本(window是nvm4w),在安装过程中可能要根据strapi升降node版本
node14.x.x和18.x.x版本都没有成功,最后是node16+ubuntu成功的(无vs),成功会弹出一个界面,创建项目成功不等于能正常运行,会显示(keep trying,cd 项目路径 && npm install)
看下载下来的文件,strapi似乎采用的是v6
ubuntu下载前更新apt,一开始忘了更新,下载的node居然是10.x.x版本的
npm和yarn要全局安装,环境变量配置尽量在一个位置(yarn的cache在c盘,global在d盘,报错)
如果create报错先进入项目里在npm install
——quickstart模式下调用的是本地Sqlite数据库,就不用再配置其他数据库,会相对比较方便
安装依赖环境时间比较久,多多等等就好了
从strapi的开发手册来看,目前window系统只支持winow10,window11还太清楚能不能成功