淘系前端架构周刊:Node.js v17.0.0 发布、VS Code 发布浏览器版本
祝大家 1024 程序员节快乐!
🗞 News
Node.js v17.0.0 发布
重要更新:
- Node.js 现在包含了 OpenSSL 3.0,尤其是 quictls/openssl,它提供了 QUIC 支持
- V8 JavaScript 引擎升级至 v8.9.5
readline
模块提供了一个接口用于一次从可读流(例如process.stdin
)中读取一行数据- &etc.
Release Blog:Node v17.0.0 (Current) | Node.js (nodejs.org)
VS Code 发布浏览器版本
随着 GitHub 推出 github.dev 在线浏览 GitHub Repo 的能力后,VS Code 也迎来了浏览器版本,只需要在浏览器访问 https://vscode.dev 即可在浏览器中使用 VS Code。
浏览器版本的 VS Code 与 Electron 客户端版本在基本能力上保持一致,可以打开本地项目进行开发。相信在不久的将来,在 iPad 上也能进行开发了。
Release Blog:https://code.visualstudio.com/blogs/2021/10/20/vscode-dev
React 新文档上线
曾几何时,React 的官方文档一直被人诟病,一方面文档的结构不够清晰,另一方面较多示例还在使用 Class Components,因此 React 团队打算对文档做一次彻底的重构。
新文档采用 Next.js 构建,并且使用了 Tailwind 实现页面布局,引入了暗黑模式等,界面非常清晰简洁。
文档链接:React Docs Beta (reactjs.org)
📦 Open Source
ts-morpher
TypeScript
自身 提供的 AST 接口 过于复杂,并且稳定性较差(如它曾经在某一个版本将所有 AST 接口收敛到了 factory
命名空间下),因此 ts-morph 诞生了,相比于其他 AST 封装库,ts-morph
对 TypeScript 有着更好的支持(毕竟它本身就基于 TypeScript AST API 封装而来),并且在一定程度上简化了许多操作,屏蔽了 Node
、TypeNode
、Syntax
、Statement
、Declaration
等等一系列对于那些没有学习过或者是对其知之甚少编译原理的开发者算不上友好的概念。
Home Page:LinubuduLab: TSMorpher (ts-morpher.vercel.app)
@swc/jest
一个去掉了类型检查的 Jest Transformer,非常快,用于替换 babel-jest 和 ts-jest。
配置基本与 babel-jest 和 ts-jest 一致:
// jest.config.js module.exports = { transform: { '^.+\\\\.(t|j)sx?$': '@swc/jest', }, }
默认配置会读取仓库目录下的 .swcrc
文件,可以通过以下方式自定义配置:
const fs = require('fs') const config = JSON.parse(fs.readFileSync(`${__dirname}/.swcrc`, 'utf-8')) module.exports = { transform: { '^.+\\\\.(t|j)sx?$': ['@swc/jest', { ...config, /* custom configuration in jest */ }], }, }
GitHub Repo:swc-project/jest: Super-fast alternative for babel-jest or ts-jest without type checking (github.com)
vscode-theme-generator
一个能够自定义 VS Code 主题的库,采用 TypeScript 开发,能够帮助你轻松自定义 VS Code 的主题。
import { generateTheme, IColorSet } from 'vscode-theme-generator'; const colorSet: IColorSet = { base: { background: '#12171F', foreground: '#EFEFEF', color1: '#399EF4', color2: '#DA6771', color3: '#4EB071', color4: '#FFF099', } }; generateTheme('My Theme', colorSet, path.join(__dirname, 'theme.json'));
GitHub Repo:Tyriar/vscode-theme-generator: Easily generate themes for VS Code with only a few colors (github.com)
Nginx Playground
一个能够快速验证 Nginx 配置的在线演示工具。
在线地址:nginx playground (wizardzines.com)
Probot
一个用于构建 GitHub Apps 的框架,可以用它来实现工作流的自动化。
官方文档:probot
GitHub Repo:probot/probot: 🤖 A framework for building GitHub Apps to automate and improve your workflow
use-context-selector
一个基于 Context API 的封装,优化 Context 导致的 rerender 问题,虽然有一些限制,但可以通过这个设计实现更好了解 Context API。
使用方法:
import React, { useState } from 'react'; import ReactDOM from 'react-dom'; import { createContext, useContextSelector } from 'use-context-selector'; const context = createContext(null); const Counter1 = () => { const count1 = useContextSelector(context, v => v[0].count1); const setState = useContextSelector(context, v => v[1]); const increment = () => setState(s => ({ ...s, count1: s.count1 + 1, })); return ( <div> <span>Count1: {count1} span> <button type="button" onClick={increment}>+1 button> {Math.random()} div> ); }; const Counter2 = () => { const count2 = useContextSelector(context, v => v[0].count2); const setState = useContextSelector(context, v => v[1]); const increment = () => setState(s => ({ ...s, count2: s.count2 + 1, })); return ( <div> <span>Count2: {count2} span> <button type="button" onClick={increment}>+1 button> {Math.random()} div> ); }; const StateProvider = ({ children }) => { const [state, setState] = useState({ count1: 0, count2: 0 }); return ( <context.Provider value={[state, setState]}> {children} context.Provider> ); }; const App = () => ( <StateProvider> <Counter1 /> <Counter2 /> StateProvider> ); ReactDOM.render(<App />, document.getElementById('app'));
GitHub Repo:dai-shi/use-context-selector: React useContextSelector hook in userland (github.com)
📑 Article
Naive UI 是如何开发出来的
文章从 Naive UI 的 Button 组件开始,以小见大,逐步介绍实现一个组件库需要经历的过程,窥探 Naive UI 的奥秘。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云原生周报 | BFE 控制平面开源;Grafana 8.2.2 发布
1 业界要闻 1.BFE 控制平面正式开源发布! 摘要:完整的 BFE 解决方案可以分为数据平面和控制平面。本次发布控制平面的核心组件后,用户已经可以使用 BFE 已开源的各个组件,组成完整的七层负载均衡和流量接入平台,满足组织和企业的流量接入和管理需求。 2.2022 LF APAC开源布道者团队开放申请 摘要:布道者 (Evangelist)源自希腊语,意思是带来好消息的人。"开源布道者"其实不光是一个工作头衔,更是一种生活方式,2022年的LFAPAC Open Source Evangelist计划的申请已经开放。 2 上游进展 1.Grafana 8.2.2发布,系统指标监控平台 https://www.oschina.net/news/165567/grafana-8-2-2-released 摘要:Grafana 8.2.1 现已发布,此版本主要包括:改进了标签搜索性能,企业版现在可选缓存大小的指标收集,Promethus删除了指标自动完成限制。 3云原生最佳实践 1.网易数帆基于 Envoy 的云原生网关实践 摘要:Envoy 是由 Lyft 开源的高性能网络代理软件,...
- 下一篇
安全事件周报,流行的 NPM 库被劫持;SCUF 游戏商店遭黑客攻击
报告编号:B6-2021-102501 报告来源:360CERT 报告作者:360CERT 更新日期:2021-10-25 1. 事件导览 本周收录安全热点29项,话题集中在恶意软件、网络攻击方面,涉及的组织有:Thingiverse、TikTok、Twitter、Thingiverse等。勒索软件大肆攻击国家关键设施。对此,360CERT 建议使用360 安全卫士进行病毒检测、使用360 安全分析响应平台进行威胁流量检测,使用360 城市级网络安全监测服务 QUAKE进行资产测绘,做好资产自查以及预防工作,以免遭受黑客攻击。 2. 事件目录 恶意程序 抖音可能成为黑客对儿童发动攻击的有力工具 针对医疗行业顶级勒索软件团伙的分析 Twitter上出现针对网络安全研究人员的攻击 流行的NPM库被劫持安装密码窃取者和挖矿软件 辛克莱电视台因周末勒索软件袭击而瘫痪 REvil勒索软件的Tor站点被劫持 TeamTNT在Docker Hub上部署恶意Docker映像 PurpleFox添加了使用WebSocket的新后门 新的karma勒索团伙可能是以前的勒索团伙改头换面的结果 勒索软件新的商...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Red5直播服务器,属于Java语言的直播服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2整合Redis,开启缓存,提高访问速度