【发布时间】:2019-10-27 01:44:20
【问题描述】:
在我们公司,我们喜欢编写 django 驱动的应用程序,我们也喜欢使用 react。最近我们考虑为 python 编写一个基于组件的模板引擎,其中模板可以使用 JSX 编写为类似反应的组件。
理想情况下,应该可以将 JSX 嵌入到 Python 代码中,这样您就可以编写如下组件:
在header.pyx:
import PyReact
from my_awsome_project.components import Logo, Link
def Header(context):
page_title = context.get('page_title')
links = context.get('links')
return (
<div>
<Logo />
{page_title}
<ul>
{[<Link href={link.url}>{link.title}</Link> for link in links]}
</ul>
</div>
)
这当然需要先转译文件以获得有效的 python 代码。它会转译成有点类似的东西:
import PyReact
from my_awsome_project.components import Logo, Link
def Header(context):
page_title = context.get('page_title')
links = context.get('links')
return (
PyReact.createComponent('div', context, [
PyReact.createComponent(Logo),
page_title,
PyReact.createComponent('ul', context, [
[
PyReact.createComponent(Link, {'href': link.url}, link.title)
for link in links
]
]),
])
)
问题是:我将如何编写这样的转译器?
我们还考虑过,我们可以返回一个包含 JSX 的字符串,而不是直接将 JSX 直接嵌入到 Python 代码中,该字符串会被独立解析。那会是更好/更简单的方法吗?
【问题讨论】:
标签: python parsing jsx interpreter template-engine