2023.09.14前端周刊

43 阅读2分钟

本专栏(FE weekly news)文章争取每周一更,但由于精力有限,每篇周报的内容可能不多,欢迎大家关注

新闻

1. Astro3.0发布

新版本的Astro做了一系列优化,比如:

  • 支持SSR的各种页面动画(在此之前只支持spa单页面应用)
  • 通过精简代码(删除无用代码、用更简单的代码替换复杂冗余代码)、优化代码(去掉那些没必要的async code和generator)大幅提高了渲染速度,大多数组件与2.9相比,渲染速度提高了超过30%。
  • 优化了图片处理(比如通过一些配置可以使你打包后的图片自动部署在CDN上)
  • Serverless SSR优化:按路由自动分割代码、将打包后的代码动态部署运行在离用户较近的服务器上、新增了可以为用户提供hosting信息的API
  • 优化JSX的热模块更新:支持了React Fast Refresh(与HMR相比,它可以在不改变当前UI State的情况下更新代码),React、Preact、Solid的热模块更新稳定性得到了提高。
  • 优化打包效果:打包后生成的html更小、增强打包后类名的可读性、将小块css自动打包到html中,而非单独请求css文件

2. Node.js支持通过.env文件配置环境变量了

随着Node.js 20.6.0的发布,现在的Node.js支持通过.env文件加载环境变量了。

通过该功能,可以把一些本应写在环境文件中的配置,从代码中拆出来放在.env文件中。Node.js在启动时会加载并解析该文件,因此在该文件中你也可以配置Node.js本身的环境变量。 比如如果我们在.env中配置了

NODE_OPTIONS="--no-warnings --inspect=127.0.0.1:9229"

启动后的Node.js后就会监听指定好的ip和端口号(127.0.0.1:9229)

配置&启动方式

.env文件类似下面这样:

PASSWORD=supersecret
API_KEY=84de8263ccad4d3dabba0754e3c68b7a
# .env files can have comments too

通过--env-file来指定要加载的.env文件

image.png

局限性

目前.env的功能有限,仅支持一些基本的配置功能,比如下面这些都是不支持的:

  • 不支持multiline values
  • 不支持variable expansion
  • 只能加载一个.env文件。比如下面这条指令,只会加载.env.development文件,不会加载.env文件
    node --env-file .env --env-file .env.development
    

文章

Shuffling Arrays in JavaScript (stackabuse.com)

本文介绍了打乱(一维/二维)数组顺序的一些方法,并对这些方法给出了性能上的测试。

值得注意的是,lodash的shuffle方法虽然用的就是Fisher-Yates shuffle algorithm,但在性能测试中可以看到,自己手搓的Fisher-Yates shuffle algorithm比起lodash的shuffle,性能会更好,因为各种工具库多多少少都会有一些额外的抽象处理,所以不要动不动就用工具库哦~