这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
node.js应用场景
1.前端工程化
2.web服务端应用
3.electron跨端桌面应用
商业应用:vscode\zoom\slack
大型公司内的效率工具
大部分场景在选型时值得考虑
node.js运行时结构
1.V8:JavaScript Runtime 、诊断调试工具
libuv:eventloop\syscall(系统调用)
2.特点
异步
单线程: worker_thread可以起单独线程,但每个线程的模型没有太大变化,实际是js是单线程的,node.js的线程有js线程、uv线程、v8任务池、v8Inspector线程
跨平台:开发成本低
ssr首屏渲染时间更短
重构:不重构无法保证事件触发
如果用react+ssr开发会做很多重复的工作,next.js的意义就是如此
数据注入的三种方式
getInitailProps:(老的API)页面内跳转会在客户端走这个方法,但是在页面外跳转或者刷新或者刚打开就会在服务端走这个方法
getServerSideProps:只会在服务端走
getStaticProps:SSG,用在偏固定,数量不多的情况
路由:
路由优先级
会自动生成路由,不需要手动写
路由跳转的方式
1.next/link
2.useRouter钩子
3.原生
可以修改Header,针对页面定制TDK
多媒体适配
用rem:灵活换算
用js适配
大图优化
webp体积相比png会缩小很多倍,在慢网下webp更快,在快网下webp更慢,并非所有设备都兼容
API是在服务器端的,直接在页面上用debug是断不到的,所以有两种方式,一种是用vsode的服务端控制台,一种是跑npm run debugger命令
可以帮助我们快速搭建数据管理平台
加上populate=deep参数,会将所有结构体全部遍历出来的
题外话: 学习知识一开始不要学习知识本身,先去学习知识产生缘由和它解决的痛点