@fluixi/ 编译器
Fluixi编译器:剖析出,下同出. 不是一个 Babel 插件 .
* 概览
@fluixi/compiler 将Fluixi源变成精细的活性输出. 两个作者
语法、JSX和 html`...` 模板, 下至 相同的主机不可识别 IR,以及
页:1 必需的后端 直接编译成 @fluixi/dom 运行时间
电话(createNativeElement编号 :spread编号 :insert编号 :createComponent/...) (中文(简体) ). 没有VDOM,没有
jsx() 运行时发送.
它拥有改变而不是运行在别人的: 代号被替换 没有任何内容被重印, 所以一个洞保存文本 作者已写出, 并且每个编辑都包含一个源地图; 类型被保留给捆绑器 脱去.
@babel/parser 是它唯一从命名空间取取的软件包,用作解析器:
vue的编译器也在同一个位置. @babel/core 而插件机是可选的
同伴,仅需满足 babel: true。 。 。 .
这个 @fluixi/jsx 自动运行时间仍然是 Esbuild 和 TypeScript 的
jsxImportSource 点;这个编译器从不发出一个调用.
它还提供 "use server" 转换(服务器函数):客户端构建
得到一个RPC活塞, 服务器构建保存和注册身体.
多数应用程序不直接使用此软件包: @fluixi/vite-plugin (和
@fluixi/start把它包起来.
它对你的密码有什么影响
除了把标记变成DOM电话:
支持你解结构 保持反应. function Card({ title }) 编译为
props.title 每次使用时,绑定都会不断更新 ...rest 成为
splitProps 打电话给你,你会写。 任何无法证明安全的东西: 重新分配
绑定, 计算出的密钥, 默认需要重运行
写作和汇报。 默认值; 设置 propsDestructure: false 送货的包裹
联合国 来源 因为重写属于编译者.
$ 内在解析不导入. $signal, (中文(简体) ), $memo, (中文(简体) ), $effect, (中文(简体) ), $store, (中文(简体) ),
$resource, (中文(简体) ), $selector, (中文(简体) ), $deferred, (中文(简体) ), $untrack, (中文(简体) ), $untrackStore 编译到运行时间
调用它们所代表,并添加一个模块实际使用的导入。 一个原始人
由它产生的约束予以确认,绝不用名称: import { signal as state } 实值
承认,当地 function signal() 没有。 装入 $ 名称保留其
拥有意义并获得诊断.
非进口标记通过规则解决. resolve 写着大写标签从哪里来
来源:每个组件的条目,或家庭的一种模式:
createVitePlugin({ resolve: [{ match: /^([A-Z]\w+)$/, module: '/src/components/$1.tsx' }] })
load: 将组件分割成自己的块. load:visible, (中文(简体) ), load:idle, (中文(简体) ),
load:interaction, (中文(简体) ), load:media 决定何时获取其模块。 它有一个组件
规则供应,在其中您输入自己:在第二种情况下,静态导入是
删除, 只有在名称被无处使用时, 才会被作为标记使用 .
它说当它不能做这些事情. 标签什么也没有供应和 load: 那个
无法在运行时同时应用干净的构建和失败,所以在构建时报告它们与
这个原因 捆绑器适配器打印; TransformResult 带着他们
propsDiagnostics, (中文(简体) ), intrinsicDiagnostics, (中文(简体) ), loadDiagnostics 财务报告和审定财务报表 unresolvedDiagnostics
如果你正在驱动 改造自己.
* 安装
pnpm add -D @fluixi/compiler
使用量
通过维特融合(共同路径):
import { defineConfig } from 'vite';
import { createVitePlugin, serverFunctionsVitePlugin } from '@fluixi/compiler/integrations';
export default defineConfig({
plugins: [
serverFunctionsVitePlugin(), // "use server" transform
createVitePlugin(),
],
});
或直接编译模块 :
import { transformTemplates } from '@fluixi/compiler/transform';
const { code, map } = transformTemplates(source, 'App.tsx', {})!;
transformTemplates 返回时 null 没有JSX,没有模板,没有
$ 内在和无报告:这样,捆绑者就可以不动文件.
通过 Babel 编译
fluixi({ babel: true }) 途径巴贝尔前端 它存在于一个
其自己的 Babel 插件必须查看已编译输出的工程; 它需要 @babel/core
和朋友安装, 说,而不是贬低。 其他一切: IR、
通过,后端:无论是哪种方式,都是相同的代码.
子路径
| 导入 | 什麽 | 宝贝 |
|---|---|---|
@fluixi/compiler | IR,代码后端,解析/优化通道,选项 | 无 |
@fluixi/compiler/builtins | 控制流程/路由器组件名称 | 无 |
@fluixi/compiler/transform | transformTemplates, (中文(简体) ), transformServerFns | 只解析器 |
@fluixi/compiler/integrations | 站台、网络包装、卷起和安装适配器 | 只解析器 |
@fluixi/compiler/babel | babel 插件的前端 | @babel/core |
no-babel-in-core.spec.ts 如果柱子停止真实, 则无法创建 .