本专栏(FE weekly news)文章随缘更新,由于精力有限,每篇周报的内容可能不多,欢迎大家关注
新闻
1. 2023 JavaScript Rising Stars新鲜出炉
新一年的Rising Stars统计结果发布啦!
- 综合来看Star增长最快项目是shadcn/ui,它是基于Radix、tailwindcss实现的组件集合。我们可以通过简单的命令来将指定shadcn/ui组件集成在我们项目中,组件代码将直接被拷贝在我们的项目中,就好像我们自己写的一样,这让开发者可以更方便的对组件定制化。
- 在前端框架中,React的Star增速遥遥领先于其他框架,除此之外htmx增速位居第二,该框架旨在让用户以html的语义写代码,通过js实现了各种html扩展。使用htmx的过程就仿佛在使用升级版的html。具体可以看第二条新闻。
- 在React生态中,增速最快的shadcn/ui就不多说了,增速第二的Excalidraw是一个手绘风格的画板,画板支持生成各种手绘风格的图片。
- Vue生态中,增速第一的是Nuxt,增速第二的Slidev 是一个可以用markdown写ppt的工具,但是我试了下,感觉功能还不稳定,而且还要学习各种语法,目前而言,让我用这个写ppt的话——达咩。
- 移动端中,增速第一的Expo是一个基于React Native实现的跨平台框架,相比React Native,Expo提供了更好的开发体验以及多端兼容性适配。一次开发可以同时满足安卓、IOS和web端。
2. Is htmx Just Another JavaScript Framework?
发布在htmx官网上的一篇文章,回应了开发者对于htmx的一些质疑(比如htmx到底是框架还是库?htmx的优势到底在哪里?),文章的作者认为,htmx是一个框架,但它是一个遵守html语义的框架,开发者使用htmx的过程其实就是使用html的过程,而不是像vue、react一样,要学他的各种与html无关的语法。用一张图来表示的话:
文章
33 JavaScript concepts every developer should know.
里面列出了开发者需要掌握的33个概念,如果你想给自己找点事情做的话,不妨对照着该文章,夯实一下自己的js基础。
工具
一个现代文件API—— fsx
这是一个对标fs的文件系统API,据作者自述,他受够了市场上现有的文件系统API,觉得它们都非常极其特别难用且过时,所以才有了自己写一套的想法,fsx由此诞生。
文章我没全看,大概挑着说一下该文件系统的功能吧。
-
读文件
fsx在读文件时可以指定返回格式,并且当文件不存在时,不会像其他api一样throw error,而是返回undefined。
// read plain text const text = await fsx.text("/path/to/file.txt") ?? "default value"; // read JSON const json = await fsx.json("/path/to/file.json") ?? {}; // read bytes const bytes = await fsx.arrayBuffer("/path/to/file.png") ?? new ArrayBuffer(16);
-
写文件
fsx写文件API支持两个参数;
-
filePath:string
-文件路径 -
value:string|ArrayBuffer
- 写入的内容当文件路径不存在时,fsx不会像其他API一样报异常,而是会自动创建对应的路径&文件。
// write a string await fsx.write("/path/to/file.txt", "Hello world!"); const bytes = new TextEncoder().encode("Hello world!").buffer; // write a buffer await fsx.write("/path/to/file.txt", bytes);
-
-
检测文件是否存在
// 存在则返回true,不存在返回false,而非像fs.stat一样不存在就throw error if (await fsx.isFile("/path/to/file.txt")) { // handle the file }
-
删除文件
fsx中文件和目录都可以删除
// delete a file await fsx.delete("/path/to/file.txt"); // delete a directory(目录不为空会将目录中的内容也全部删除) await fsx.delete("/path/to");