2. Mitosis是如何做到通过一次性开发,可以通用多种主流前端框架的?

127 阅读1分钟

上篇我们介绍了如何用Mitosis开发单个组件并编译成react组件的:Mitosis从0到1,一次性开发组件库,通用多个主流框架。这篇来简单介绍下原理。

工作原理

Mitosis是JSX的静态子集,灵感来自于SolidJS。我们可以输入一段简单的JSON,便可以构建不同框架的前端项目。 以下是一段Mitosis代码:

export function MyComponent() {
  const state = useStore({
    name: 'Steve',
  });

  return (
    <div>
      <input value={state.name} onChange={(event) => (state.name = event.target.value)} />
    </div>
  );
}

会解析成:

{
  "@type": "@builder.io/mitosis/component",
  "state": {
    "name": "Steve"
  },
  "nodes": [
    {
      "@type": "@builder.io/mitosis/node",
      "name": "div",
      "children": [
        {
          "@type": "@builder.io/mitosis/node",
          "name": "input",
          "bindings": {
            "value": "state.name",
            "onChange": "state.name = event.target.value"
          }
        }
      ]
    }
  ]
}

这样的JSON可以序列化成多种语言和框架,比如Angular:

@Component({
  template: `
    <div>
      <input [value]="name" (change)="name = $event.target.value" />
    </div>
  `,
})
class MyComponent {
  name = 'Steve';
}

下一篇:初始化Mitosis项目该如何配置?

参考

github.com/BuilderIO/m…