MDH 前端周刊第 67 期:一周新闻、Father 4、选择你的框架、Tauri vs. Electron - 图1
封面图:House of the Dragon。

Hi,我是云谦,欢迎打开新一期的「MDH:前端周刊」,这是第 0067 期,发表于 2022/08/29。

本周有这些内容想和你分享:

  • 一周新闻
  • Father 4
  • 选择你的框架
  • Tauri vs. Electron
  • React + TypeScript 最小知识集
  • React 组件 composition 进阶

一周新闻

新增「一周新闻」栏目,一句话介绍本周内发现的前端资讯和发布。

Father 4

https://zhuanlan.zhihu.com/p/558192063

MDH 前端周刊第 67 期:一周新闻、Father 4、选择你的框架、Tauri vs. Electron - 图2

约两个月前,我们发布了 father 4 的 RC 版本,在 RC 阶段我们收到了不少尝鲜用户的反馈建议,也持续对 father 4 做了不少优化;今天,终于可以满怀喜悦地和大家分享 father 4 的第一个正式版本了!

作为一款全新的 NPM 包研发工具,father 4 的具备如下核心特性:

  • 双模式构建: 支持 Bundless 及 Bundle 两种构建模式,ESModule 及 CommonJS 产物使用 Bundless 模式,UMD 产物使用 Bundle 模式
  • 多构建核心: Bundle 模式使用 Webpack 作为构建核心,Bundless 模式使用 esbuild 及 Babel 两种构建核心,可通过配置自由切换
  • 类型生成: 无论是源码构建还是依赖预打包,都支持为 TypeScript 模块生成 .d.ts 类型定义
  • 项目体检: 对 NPM 包研发常见误区做检查,让每一次发布都更加稳健
  • 微生成器: 为项目追加生成常见的工程化能力,例如使用 jest 编写测试
  • 依赖预打包: 开箱即用的依赖预打包能力,帮助 Node.js 框架/库提升稳定性、不受上游依赖更新影响(实验性)

除了 RC 发布时 为大家隆重介绍的双模式构建、多 Bundless 构建核心 及 依赖预打包之外,正式版还带来了 项目体检 及 微生成器 两个新特性。

选择你的框架

https://www.chooseyourframework.dev/

MDH 前端周刊第 67 期:一周新闻、Father 4、选择你的框架、Tauri vs. Electron - 图3

你是否曾觉得选择一个 JavaScript UI 框架很像挑选一个初始的口袋妖怪? 我们中的大多数人都没有深刻理解它们之间的比较。 我们挑选了一个,并在接下来的几年里确信它是最好的选择。

所以,你的选择是?

Tauri vs. Electron

https://www.levminer.com/blog/tauri-vs-electron

MDH 前端周刊第 67 期:一周新闻、Father 4、选择你的框架、Tauri vs. Electron - 图4

作者分别用 Tauri 和 Electron 实现了 Authme,然后从打包、启动时间、性能、后端、应用渲染、安全、自动更新、开发体验共 8 个维度进行了对比。

1、「打包」Tauri 完胜。1)尺寸上 Tauri 2.5M vs. Electron 85M,2)Tauri 的产物是二进制的,反编译解码逻辑所需成本相比 Electron 会高很多。
2、「启动时间」Tauri 胜。Tauri 2s vs. Electron 4s。
3、「性能」Tauri 完胜。
4、「后端」Electron 胜。因为 Electron 后端基于 Node,而 Tauri 基于 Rust。当然如果你会 Rust 则是另一回事。另外,Tauri 的 Roadmap 里有支持其他后端绑定的计划,比如 Deno,届时就又可以用 JavaScript/TypeScript 写后端了。
5、「应用渲染」Electron 胜。Electron 使用 Chromium,所以你的用户在 Windows、Linux 和 macOS 上看到的东西是一样的。Tauri 使用系统的 WebView,Windows 上使用 Edge Webview2(Chromium),Linux 上使用 WebKitGTK,macOS 上使用 WebKit。这里的问题是 Webkit 的支持总是落后一点,所以你可能会需要额外的补丁。
6、「安全」Tauri 胜。Tauri 内置大量安全功能,可以明确启用或禁用某些 API。Electron 中则可以完全访问 Node 的 API,所以相比来说更容易被黑客利用。
7、「自动更新」Electron 胜。Tauri 和 Electron 都内置了自动更新器,而 Tauri 的相对简单,同时需要维护依赖并手动更新 JSON,而 Electron 可基于 electron-updater 并直接从 Github 发布的二进制文件中提取,要方便很多。
8、「开发体验」Tauri 胜。基于 Tauri CLI 就会包含热重载、为所有平台构建你的应用程序、生成应用程序图标等全部功能,而 Electron 啥都没有提供,只有框架本身。

React + TypeScript 最小知识集

https://ente.io/blog/tech/typescript-for-react/

TypeScript非常棒,但 TypeScript 也有一个学习曲线。社区上较少有这种将 TypeScript 引入 JavaScript 项目的知识最小集文章,这篇就是。

  1. import React, { HTMLAttributes, PropsWithChildren } from 'react';
  2. interface HelloProps extends HTMLAttributes<HTMLDivElement> {
  3. name: string;
  4. }
  5. const Hello: React.FC<PropsWithChildren<HelloProps>> = ({
  6. name,
  7. children,
  8. ...rest}) => {
  9. return (
  10. <div>
  11. <div {...rest}>{`Hello, ${name}!`}</div>
  12. {children}
  13. </div>
  14. );
  15. };

只有 3 个知识点,有眼就能学会。1)React.FC 表示 Function Component 函数式组件,2)PropsWithChildrenprops.children 带类型,3)HTMLAttributes<HTMLDivElement>props 可以使用 html 属性比如 className

React 组件 composition 进阶

https://frontendmastery.com/posts/advanced-react-component-composition-guide/

MDH 前端周刊第 67 期:一周新闻、Father 4、选择你的框架、Tauri vs. Electron - 图5

在这篇文章中,作者深入探讨了用于分解组件和设计可组合 API 的主要原则。

周刊一锅端

小结

如果你喜欢 MDH 前端周刊,请转发给你的朋友,告诉他们到这里来订阅,这是对我最大的帮助。下期见!
MDH,让开发者有笑容 :)