3 个值得关注的 TypeScript 小众项目
GitHub 上每天都有新项目诞生,但大部分都被淹没在信息的海洋里。今天发现三个有意思的小众项目,专注解决特定场景下的实际问题。
react-exe:浏览器里的 React 沙盒
vgulerianb/react-exe · 181 ⭐
这个库解决了一个简单但常见的需求:在浏览器里安全地执行 React 组件代码。
它把传入的 JSX 字符串编译成可在浏览器直接运行的组件,配合 iframe 沙箱实现代码隔离。对于需要在线展示 React 组件效果的场景(文档站、教程、组件库 Demo 等)特别有用。
import { useReactExe } from 'react-exe';
const code = `
export default function App() {
return <h1>Hello World</h1>
}
`;
function MyComponent() {
const { Component, loading, error } = useReactExe({ code });
if (loading) return <div>编译中...</div>;
if (error) return <div>编译错误: {error.message}</div>;
return <Component />;
}
核心原理是在客户端动态编译 JSX,支持自定义作用域注入,还能配置 iframe 的 CSP 策略。
vite-plugin-mkcert:一键 HTTPS 本地开发
liuweiGL/vite-plugin-mkcert · 747 ⭐
本地开发 HTTPS 一直是件麻烦事:自签名证书浏览器不信任,配置过程繁琐。
这个 Vite 插件自动生成本地受信任的 HTTPS 证书,无需手动操作。
// vite.config.ts
import mkcert from 'vite-plugin-mkcert';
export default {
plugins: [
mkcert() // 就这么简单
]
};
首次运行时会自动安装本地 CA 证书并生成域名证书,后续启动直接使用已生成的证书。支持自定义域名、证书保存路径,也允许配置代理服务器。
对于需要测试 HTTPS 特性(Service Worker、Geolocation、摄像头等)的项目,省去大量配置时间。
Module Federation for Vite:微前端的基础设施
module-federation/vite · 614 ⭐
Webpack 的 Module Federation 一直是微前端的标杆方案,现在 Vite 生态也有官方支持了。
这个插件让 Vite 项目能够像 Webpack 一样实现模块联邦:应用 A 可以动态加载应用 B 的组件,双方独立部署、独立构建。
// 暴露模块(远程应用)
// vite.config.ts
import { federation } from '@module-federation/vite';
export default {
plugins: [
federation({
name: 'remoteApp',
filename: 'remoteEntry.js',
exposes: {
'./Button': './src/components/Button.tsx',
'./Header': './src/components/Header.tsx'
},
shared: ['react', 'react-dom']
})
]
};
// 消费模块(宿主应用)
federation({
name: 'hostApp',
remotes: {
remote: 'remoteApp@http://localhost:5001/mf-manifest.json'
},
shared: ['react', 'react-dom']
});
// 动态加载远程组件
const RemoteButton = lazy(() => import('remote/Button'));
插件处理了 Vite 原生不支持的依赖共享、远程模块加载等问题,目前已支持生产环境构建。
小结
| 项目 | 场景 | Stars |
|---|---|---|
| react-exe | React 组件在线执行 | 181 |
| vite-plugin-mkcert | 本地 HTTPS 开发 | 747 |
| module-federation/vite | 微前端架构 | 614 |
三个项目解决的都是具体且高频的开发痛点,代码量不大但设计精巧。如果你的项目有类似需求,值得一试。