校对:soup
集成插件用于 @ ecopages/jsx (英语) ecopages中的模板。 当 Ecopages JSX 拥有时使用它 .tsx 路径、 radiant 支持的网络组件, 或针对 @ecopages/jsx 运行时间.
安装
bun add @ecopages/ecopages-jsx @ecopages/jsx @ecopages/radiant
@ecopages/jsx 财务报告和审定财务报表 @ecopages/radiant 此软件包需要同行依赖关系.
使用量
登记 ecopagesJsxPlugin 在你身边 eco.config.ts。 。 。 .
import { defineConfig } from '@ecopages/core/config';
import { ecopagesJsxPlugin } from '@ecopages/ecopages-jsx';
export default defineConfig({ integrations: [ecopagesJsxPlugin()] });
此整合拥有什么
.tsx默认路径文件。 使用extensions更改 JSX 路线后缀列表.- 通过公众可选的Radiant SSR/运行时间接线
@ecopages/radiant入门口. - 可选
.mdx编译路径@ecopages/jsx运行时间.
路由扩展
使用 extensions jSX 路由应该使用自定义后缀而不是默认 .tsx。 。 。 .
ecopagesJsxPlugin({
extensions: ['.page.tsx'],
});
发展HMR
在开发过程中,编辑一个已注册的Ecopages JSX页面通过导航运行时间刷新了当前页面. 共享布局保留在路由器可以保存的地方; 标有元素 data-eco-persist 保持他们的DOM状态。 已宣布的客户端脚本继续使用脚本HMR.
半径支持
默认启用了半径支持 。 何时 radiant: true,插件将所有权分割为:
- 生态页 JSX拥有JSX SSR的页面级别和容器水分.
- 通过服务器激活了 Radiant SSR
@ecopages/radiant/server/render-component。 。 。 . - Core在集成设置时安装了Radiant完整的光-DOM表面,在任何Page使出或定义出一个元素之前,因此出产可以导入Radiant元素模块. 利特的修理在那个完整的地表之后进行. JSX集成不安装DOM Globals作为进口副作用或首次渲染.
- 通过进口的显式头靴来激活客户端的Radiant主机水合
@ecopages/radiant/client/install-hydrator在内在自定义组件加载之前.
表示服务器已交付 RadiantElement 只有当SSR标记和明确的客户端水合器同时存在时,主机水合物才会到位. 没有客户端的水合器,拉迪安特故意倒回到第一个连接上的新鲜客户端渲染.
水能语义学: RadiantElement vs. Radiant Captain (中文(简体) )
RadiantElement(DOM保护): 自定义元素延伸RadiantElement支持真水合。 何时@ecopages/radiant/client/install-hydrator元素连接前执行,保留了现有的光-DOM SSR节点,保留了DOM节点身份,形成了输入状态,活动焦点,以及媒体回放.RadiantController(激活/模板再挂载): 通过[data-controller]当startControllers(document)名为. 激活执行控制器render()方法并将其模板重新挂入主机容器,替换服务器上的儿童节点。 反应属性和信号绑定仍然完全互动,但单个儿童DOM节点被重建.- 指导: 使用
RadiantElement当需要就地保存安全部门改革节点(如重点输入、媒体元素或CSS过渡)时。 使用RadiantController在可接受儿童DOM重建的情况下,逐步加强任意加分.
ecopagesJsxPlugin({
radiant: true,
});
设定 radiant: false 当您的 JSX 页面不需要 Radiant SSR 或 Radiant 浏览器运行时间 .
插件靴子是有意的,而不是依靠自定义元素模块来随机安装Radiant水合器.
对于服务器侧自定义元素的例子,偏好明确的SSR模式,而不是更古老的布尔独占合同.
new MyElement().renderHostToString({ mode: 'plain' });
new MyElement().renderHostToString({ mode: 'hydrate' });
遗产 hydrate: true 选项仍然兼容,但 mode 是目前的安全部门改革合同。 包含破折号的已注册内在标签是SSR候选人,框架特定主机渲染应该通过服务器自定义元素使钩子,而不是硬编码框架分支被修改为JSX页面代码.
集成通过公众装入 Radiant 主机序列化 @ecopages/radiant/server/radiant-element-ssr core 在集成设置中安装共享服务器DOM后导出. 应用程序不需要单独的 Radiant SSR 副作用导入 .
已注册的 Radiant 脚本 (ssr: true(中文(简体) )
宣布自定义注册一次 dependencies.scripts. Ecopages JSX 预装标记条目 ssr: true 在服务器上,在渲染之前,主机可以不需要冗余 import './my-element.script.ts' 在组件文件中。 预装分解和无效状态属于应用程序 AppRuntime,因此单独的应用程序保持单独的预装历史.
export const ThemeToggle = eco.component({
dependencies: {
scripts: [{ src: './theme-toggle.script.ts', ssr: true, lazy: { 'on:idle': true } }],
},
render: () => <theme-toggle />,
});
保留 import type 当您只需要脚本模块中的道具时。 不添加 ssr: true 到只接触浏览器脚本 window 或者说 document 没有警卫.
MDX 支持
添加一个 mdx 要处理的对象 .mdx 作为 JSX 路由编译的文件 @ecopages/jsx 运行时间。 关闭属性以禁用 MDX 。 打开 remarkPlugins, (中文(简体) ), rehypePlugins,以及 recmaPlugins 旁边 compilerOptions里面没有.
import { defineConfig } from '@ecopages/core/config';
import { ecopagesJsxPlugin } from '@ecopages/ecopages-jsx';
export default defineConfig({
integrations: [
ecopagesJsxPlugin({
mdx: {
extensions: ['.mdx', '.md'],
},
}),
],
});
混合渲染
Ecopages JSX可以拥有外页外壳或仅仅是被窝住的外子树. Ecopage将外国子树交回JSX渲染器.
重要内容:
- 交叉集成外壳堆栈应使用
EcoEmbed从@ecopages/ecopages-jsx/eco-embed(或相匹配的集成适配器). 普通不透明对象在核心外-子树队列边界上迅速失败;它们没有被胁迫String(object)。当EcoEmbed无需. - 可能使外国儿童成为外国儿童的组成部分必须宣布这些儿童为:
config.dependencies.components。 。 。 . - 生态页验证了在准备过程中申报的附属地的混合委托人所有权。 它不只将HTML作为真相的来源.
- 路由级依赖解决器可应要求提供组件; Ecopages JSX 包括那些在决定一个外子树是否需要交接时被解决的根.
- 生态页 JSX在 JSX 渲染器内部保留原始标记.
- JSX 渲染器使用所需的核心
AssetProcessingService用于处理已宣布的组件依赖关系.