MDH 前端周刊第 43 期:Suspense 基础、2022 CSS 特性、Next.js 迁 Remix、发布 Deno 模块到 Npm - 图1
封面图:mbenna @ unsplash。

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

本期主要内容有这些:

  • Suspense 基础
  • 2022 CSS 特性
  • 迁移 Next.js 到 Remix
  • 发布 Deno 模块到 Npm
  • 15 个有用的 Lodash 方法
  • Rails on Node
  • 5 种 Observer

Suspense 基础

https://www.chakshunyu.com/blog/a-fundamental-guide-to-react-suspense/

作者提了几个问题。Suspense 是什么?为什么需要 Suspense?Suspense 如何解决数据获取问题?使用 Suspense 的好处?

1、Suspense 主要解数据获取的问题。
2、数据获取有什么问题?在此之前,通常有两种机制,Fetch on Render 和 Fetch then Render。前者的问题是慢,会有渲染和请求的瀑布流;后者的问题是在请求好之前页面一片空白。
3、Suspense 如何解这个问题?首先基于 Fetch then Render,然后同时解请求完成前页面空白的问题,即 Render as You Fetch。Suspense 将请求和渲染这两个任务异步化,不影响渲染,数据好了后以最快速度完成渲染。
4、除了让初始数据加载更快,还有一些有点,比如避免 race condition、更直观的加载状态、集成化的错误处理等。

2022 CSS 特性

https://www.smashingmagazine.com/2022/03/new-css-features-2022/

2022 有非常多新的 CSS 特性加入,有些会在更多浏览器中获得支持。比如 Container Queries、:has、@when/@else、accent-color、新 color 函数、@layer、Sub Grid、Scroll Timeline、CSS 嵌套等。

迁移 Next 到 Remix

https://www.adamcollier.co.uk/blog/moving-from-next-to-remix

作者把个人网站从 Next.js 换成 Remix,解释了背后的原因,Remix 的优点,为啥 Next.js 虽强大但不适合这个场景等。

除此之外,其他的技术栈包括,

发布 Deno 模块到 Npm

https://deno.com/blog/dnt-oak

支持发布 Deno 模块到 Npm 应该是广泛需求,小众社区想要更好发展,兼容更大的社区应该是必须的,否则除了死忠粉,应该较少愿意放弃 Npm 社区。此功能支持后,开发者就多了个选择,用 Deno 方式开发,然后同时支持 Npm 社区。

支持的方式是通过 dnt。dnt 可以将 deno 代码转化为兼容 Node 的 TypeScript 代码,处理补丁、deno 内置模块,转化来自 skypack 或 esm.sh 的模块为依赖,生成 package.json、ESM、CJS 和 TypeScript 类型定义文件等。

dnt 主体功能已可用,除了 HTTP/2、WebSockets、FormData、top level await 等。

15 个有用的 Lodash 方法

https://blog.bitsrc.io/15-useful-lodash-methods-for-everyday-coding-4454d98f8ab0

Lodash 300 多个方案,很难记住,通常大家都是用到了去查查看是否有相关函数。但有些常用的是可以记一记的,作者整理了其中 15 个。

  • shuffle | 打乱数组顺序
  • orderBy | 让对象数组以某个 key 排序
  • chunk | 给数组分组,返回二维数组
  • take | 取数组的前几个,合成新的数组
  • difference | 返回数组差异
  • intersection | 返回数组交集
  • isEmpty| 检查 object、collection、map 或 set 是否为空
  • throttle
  • debounce | 延迟执行,防抖
  • merge | 对象的深度合并
  • cloneDeep | 深度拷贝
  • startCase | 转化字符串为大驼峰
  • kebabCase | 转化字符串,用中划线连接
  • snakeCase | 转化字符串,用下划线连接
  • camelCase | 转化字符串为小驼峰

Rails on Node

https://world.hey.com/dhh/no-railsconf-faa7935e

感觉 Rails 才是把前端打包应用研究地最透的框架,Rail 7 之后分别提供了 less Node、full Node 和 no Node 的方案,面向不同的用户群体。开发了 importmaps-rails、jsbundling-rails、cssbundling-rails 等方案,以及面向前端流行库深度整合的 tailwindcss-rails 和 dartsass-rails。

5 种 Observer

https://mp.weixin.qq.com/s/-fLZe164aWAaPJ55iZ_m2w

作者分别介绍了 5 种 Observer:MutationObserver、IntersectionObserver、PerformanceObserver、ResizeObserver 和 ReportingObserver。

  • IntersectionObserver,监听元素可见性,可见比例达 .5 或 1 时触发回调,可用于埋点、图片懒加载等
  • MutationObserver,监听元素属性和子节点的变化,可用于和去广告去水印类的插件斗智斗勇
  • ResizeObserver,监听元素尺寸变化,width、height 变更时触发回调
  • PerformanceObserver,用于记录时间点,监听资源加载的耗时
  • ReportingObserver,用于监听来自 Reporting API 的信息,比如 CSP、Feature-Policy、过期特性报告、Crash、UA 干预等

发布

以下是上周社区的重要发布。

小结

以上就是本期我的分享。如果需要文内资讯的链接,请点击「查看原文」。持续更新不易,如果你喜欢本周刊,请转发给你的朋友,告诉他们到这里来订阅,这是对我最大的帮助。下期见!

MDH,让开发者有笑容 :)