大多数时候,我使用 Vue.js 或 React 来构建我的前端 Web 应用程序,主要是因为我喜欢它们的组件系统的工作方式。所以现在我正在尝试构建我自己的 JavaScript 框架,比如 React,这就是我到目前为止所做的:
我在我的 javascript 中使用 Babel,它都与 webpack 捆绑在一起。我使用babel-plugin-transform-jsx来转换这个 jsx 类型的表达式:
var object = (
<article>
<h1>Hello, kitten!</h1>
<img href="http://placekitten.com/200/300" alt="A cute kitten"/>
It is soooo cute.
</article>
)
进入这个 javascript 对象:
var object = {
elementName: 'article',
attributes: {},
children: [
{
elementName: 'h1',
attributes: {},
children: ['Hello, kitten!']
},
{
elementName: 'img',
attributes: {
href: 'http://placekitten.com/200/300',
alt: 'A cute kitten'
},
children: null
},
'It is soooo cute.'
]
}
我知道如何用这个对象构建一个真实的 DOM,但是可以说我想在 JSX 中包含另一个组件,如下所示:
render() {
<article>
<OtherComponent />
</article>
}
在 OtherComponent 类内部,我将有一个渲染函数,该函数将插入其父级,就像 React 一样。我怎样才能做到这一点?