Mitosis 概览

Mitosis 是 JSX 的一个子集。它支持为多个前端框架生成代码,包括 React、Vue、Angular、Svelte 和 Solid。

目录

  • 如何工作
  • 格式选项
  • 项目结构
  • 组件
  • 上下文
  • 钩子
  • 需注意的事项
  • 可定制性
  • 配置
  • 命令行界面

如何工作

Mitosis 使用了受 Solid 启发的 JSX 的静态子集。这意味着我们可以将其解析为一个简单的 JSON 结构,然后轻松构建针对各种框架和实现的序列化器。

  1. export function MyComponent() {
  2. const state = useStore({
  3. name: 'Steve',
  4. });
  5. return (
  6. <div>
  7. <input value={state.name} onChange={(event) => (state.name = event.target.value)} />
  8. </div>
  9. );
  10. }

转换为:

  1. {
  2. "@type": "@builder.io/mitosis/component",
  3. "state": {
  4. "name": "Steve"
  5. },
  6. "nodes": [
  7. {
  8. "@type": "@builder.io/mitosis/node",
  9. "name": "div",
  10. "children": [
  11. {
  12. "@type": "@builder.io/mitosis/node",
  13. "name": "input",
  14. "bindings": {
  15. "value": "state.name",
  16. "onChange": "state.name = event.target.value"
  17. }
  18. }
  19. ]
  20. }
  21. ]
  22. }

这可以被重新序列化为许多语言和框架。例如,要支持 Angular,我们只需创建一个循环遍历 JSON 并生成以下内容的序列化器:

  1. @Component({
  2. template: `
  3. <div>
  4. <input [value]="name" (change)="name = $event.target.value" />
  5. </div>
  6. `,
  7. })
  8. class MyComponent {
  9. name = 'Steve';
  10. }

通过插件系统,添加对框架的支持非常容易(文档即将推出)。

格式选项

Mitosis 支持生成代码以匹配您喜好的格式、库等的设置。这些输出选项将很快支持通过插件进行自定义和扩展。

关于 Mitosis - 图1