根据要求重构或删除 MDX
作者: remcohaszing创建于 2025年4月3日更新于 2025年4月15日
标签🤞 phase/open
初始清单
问题
最近我一直在想MDX,我看到一些怪事
- " mdx-js/mdx " 包装有汇编代码的代码。 但是它也包含了用于评价生成的代码的运行时代码. 这似乎是一个奇怪的地方。 例如,这为编译器添加了运行时间类型.
- 它为MDX编译器增加了一个额外选项.
- 模块向函数体的转换在第三方矩形插件后运行。 这增加了 recma 插件的复杂性,现在必须处理一个顶级返回语句的可能性. 4.变相有虫. 例如: 缩写 从 “ foo” 中导出 * 为 foo 从“ 栏” 导出 *
改为:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
const exportAll1 = 等待导入( resolveDynamicMdxSpecifier ('foo'))
const exportAll2 = 正在等待导入( resolveDynamicMdxSpecifier ('bar'))
//.
返回{
... 导出全部,
全部导出( E)
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?这应该是: {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? const exportAll1 = 等待导入( resolveDynamicMdxSpecifier ('foo')) const exportAll2 = 正在等待导入( resolveDynamicMdxSpecifier ('bar')) //. 返回{ foo: 导出全部1, 全部导出( E) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
5. 进口已经解决,但JSX运行时间已经注入。
6. Eval是邪恶的。 我们确实警告过评估代码的危险性 我认为很多 但是,我认为,我们仍可以通过将这一点从核心中移出来进一步阻止它。
目前的解决办法
用户可以使用 " 运行 " / " 评价 " 。 或者可以使用[recma-module-to-unction](https://GitHub.com/remcohaszing/recma-module-to-unction)。
建议的解决办法
我有一些解决办法,我们可以部分或逐步执行。
1. 目前的实施工作以`recma-module-to-unction'为基础。 我发现“recma-module-to-module-to-函数”中有些边缘病例怪异, 根据需要,目前产生的MDX的几个代码可以通过自定义的导入执行来解决. 这可能是不可突破的。 幼稚的、未经检验的执行:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
函数创建 Import( baseUrl, 运行时间) {
import.meta = {
URL: String( baseUrl), (中文(简体) ).
页:1
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
返回导入( I)
函数( I){
如果(请注明“ mdx:/jsx-runtime”){
返回运行时间
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
返回导入( 解析( 指定) ), 选项
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
函数解析( 指定) {
如果(规格类型 !=="字符串"){
返回描述符
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
尝试{
. . . . . . .内容来源: mdx-js/mdx