2025.1 最近的一些事情,解决的一些问题
AI Summary
简单说说 reactCompiler
Next.js 15,React.js 19 更新挺久了,随之一并带来的是 reactCompiler 等待了不知多久的 beta 版本,简单试了下 Next.js 集成,体验还不错,具体步骤就看 官方文档
简单来说装一个 babel 插件
shell
然后开 experimental 功能就行了,在 next.config.ts
typescript
开了之后,它会自动优化我们的代码,比如 useMemo
useCallback
这种缓存的使用,会尽量避免多次频繁重新渲染,组件频繁清空数据整个渲染和挂载,...emm 怎么说,感觉 React 也开始借鉴 Vue 了,变成自动档了,可以自己优化了
显示 ip 归属地的实现
最近用 maxmind
的 geoip2
库补全我 ipv6 归属地的显示,正好说一下这个的完整实现。
xml
首先到其开源仓库下载数据集:ip2region
将 ip2region.xdb
放好在 src/main/resources
同样如法炮制,下载 maxmind 的数据集,由于其商业版本收费,我们只能选择:GeoLite.mmdb
拿到 GeoLite2-City.mmdb
和 GeoLite2-ASN.mmdb
我们可以写一个 IPLocationUtil
java
还有一件事情哦,如果你使用 nginx 或 docker 部署,很可能会出现拿不到 ip 的情况,比如 nginx 中,我们要转发好访客的 ip
conf
全站更新通知的实现
这个是我最近加的一点点小功能,希望给站点加一点活力吧,毕竟我这都没几个人看 (让我难受的很啊)
双向通知当然是 websocket 的能力,而我们加到 socket 连接之后,如何告诉其他组件呢?
对了!可以使用 MessageChannel
,可以看下 MDN 的文档
这是浏览器的一个原生能力,我们在两个端口 port1
port2
之间可以实现消息的传递,通过在一个端口发送消息,一个端口监听消息,我们就可以实现很多功能啦(有点像 electron 的 ipc,node 的 emitter)
我们就先创建一个公共实例:
typescript
在socket收到事件时候:
typescript
另一面便可以处理啦:
typescript