技术爱好者周刊(第40期)

 

Map vs Object 终极对决:90%开发者不知道的六大性能杀招💡 开篇灵魂拷问 为什么Vue3源码中使用了12 - 掘金 车泽民

说是map性能好


async/await 必须使用 try/catch 吗?在 JavaScript 中使用 async/await - 掘金 王森

刚好今天讨论过 try…catch,这位作者也有自己的观点,求同存异。


WebSocket太笨重?试试SSE的轻量级魅力!一、 前言 Hello~ 大家好。我是秋天的一阵风~ 关注我时间长一点 - 掘金 李勇鲁

  1. 轮询的缺点
    • 资源浪费
      • 网络带宽:频繁请求会增加不必要的网络流量。
      • 服务器负载:即使空返回,也会增加服务器的CPU和内存负载。
    • 用户体验
      • 界面卡顿:频繁请求和更新可能造成界面卡顿。
  2. WebSocket与SSE对比
    • 客户端实现
      • WebSocket需处理连接建立、维护、关闭及重连逻辑,SSE相对简单,只需处理接收数据和连接关闭。
    • 适用场景
      • WebSocket适用于双向通信场景,如聊天应用、在线游戏;SSE适合单向数据推送场景,如股票价格更新、新闻订阅。
    • 实现复杂性
      • WebSocket是全双工通信协议,实现复杂;SSE是单向通信协议,实现中等。
    • 数据格式
      • WebSocket支持二进制和文本数据;SSE仅支持文本数据,通常为JSON。
    • 控制流
      • WebSocket客户端和服务器都可控制消息发送;SSE服务器完全控制数据推送。
    • 安全性
      • WebSocket需要wss://保证安全;SSE通过HTTPS提供数据传输安全。
    • 适用场景(补充)
      • WebSocket适用于需要双向交互的应用;SSE适用于服务器到客户端的单向数据流;轮询适用于更新频率不高的场景。
  3. SSE详细介绍
    • 定义:允许服务器主动向客户端浏览器推送数据的技术,基于HTTP协议,但不同于传统请求 - 响应模式。
    • 工作原理
      • 建立连接:客户端通过HTTP请求订阅SSE端点,服务器响应并保持连接打开。
      • 服务器推送消息:服务器有新数据时通过连接发送事件,包含文本数据流。
      • 客户端接收消息:客户端监听事件,收到新数据时触发处理程序。
      • 连接管理:连接中断时客户端可自动尝试重新连接。
    • 代码示例
      • Java后端代码:使用Spring框架的SseEmitter实现,通过无限循环发送待办数量更新事件,每5秒发送一次。
      • 前端代码:创建EventSource对象订阅端点,监听onmessage和onerror事件,组件销毁时关闭连接。
    • 改造后效果:客户端只发送一次HTTP请求,后续结果在event.data中获取,改善了界面效果。
  4. 总结
    • SSE优势与局限
      • 优势:简单、实时性好、开销相对较低,适用于服务器频繁更新客户端数据的场景。
      • 局限:不支持二进制数据传输,只支持文本格式数据流,兼容性在一些旧版浏览器中需polyfill或降级方案。
    • 技术选择建议
      • 需要双向通信或传输二进制数据选WebSocket;数据更新频率不高或偶尔查询服务器状态选轮询;需要服务器频繁更新客户端数据选SSE。选择应综合考虑项目需求、资源限制、用户体验和可维护性。

使用electron+vue3+ts+vite搭建桌面端项目 陆欣

使用electron+vue3+ts+vite搭建桌面端项目


都2024年了你还傻傻分不清楚“编译时”和“运行时”吗? - 前端欧阳 - 博客园 徐堂鑫

这篇文章详细解释了前端开发中的“编译时”和“运行时”概念。编译时通常发生在Node.js环境中,如使用Webpack或Vite等构建工具将源代码打包成浏览器可执行的代码,分为生产环境和开发环境两种情况。运行时则发生在浏览器中,如Vue应用通过挂载组件到DOM进行渲染。文章还提到Vue的全局构建版本内置了编译器,允许直接在浏览器中编译代码,无需构建工具,但这种方式的性能不如使用构建工具提前打包。最后,文章总结了编译时和运行时的区别,并指出在特殊情况下,编译时也可以在浏览器中进行。


https://developer.chrome.com/docs/devtools/memory-problems/get-started?hl=zh-cn 崔鹏程

内存分析中常用的术语,适用于适用于不同语言的各种内存性能分析工具


工具函数刘世豪

一个模块联邦提供的工具函数(link 1),可以配合另个vite插件(link 2)将项目拆分成多个子应用

  1. ​https://module-federation.io/zh/practice/bridge/index.html
  2. https://module-federation.io/zh/guide/basic/vite.html

https://interjectedfuture.com/visual-programming-is-stuck-on-the-form/ 张伟达

真正的设计应该是”形式服从功能”而不出“功能服从形式” 如果一个设计很好,它的外观、感受和功能是其本质、代数和理性的裸露表达” UI = f(data) 弄清楚了底层,UI 自然显现。低代码的问题在于先有 UI(形式),再有代码(功能)


函数式编程入门 黄鹤翔

介绍了函数式编程的相关概念以及实践应用