@ecopages/ecopages-jsx

中文文档
0.7.1发布于 2026/11/13MITTypeScriptES Module构建来源已验证近 30 天下载 3390

Ecopage 的 JSX 集成插件

中文使用文档
文档目录10 节
  1. 安装
  2. 使用量
  3. 此整合拥有什么
  4. 路由扩展
  5. 发展HMR
  6. 半径支持
  7. 水能语义学: RadiantElement vs. Radiant Captain (中文(简体) )
  8. 已注册的 Radiant 脚本 ( ssr: true (中文(简体) )
  9. MDX 支持
  10. 混合渲染

校对: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 用于处理已宣布的组件依赖关系.

版本与发布记录

@ecopages/ecopages-jsx 共发布 114 个版本,首次发布于 2026/04/15;过去 12 个月发布了 114 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.7.1latest2026/11/13今天
0.7.02026/11/094 天前
0.6.12026/10/3014 天前
0.6.02026/10/2915 天前
0.5.02026/10/2420 天前
0.4.02026/10/2221 天前

其他发布通道:alpha → 0.2.0-alpha.55,beta → 0.2.0-beta.43,rc → 0.2.0-rc.14。

关于 @ecopages/ecopages-jsx 的常见问题

@ecopages/ecopages-jsx 是什么?

Ecopage 的 JSX 集成插件

如何安装 @ecopages/ecopages-jsx?

在项目目录运行 npm install @ecopages/ecopages-jsx,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@ecopages/jsx(^0.8.2)、@ecopages/core(0.7.1)、@ecopages/radiant(^0.8.2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@ecopages/ecopages-jsx 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ecopages/ecopages-jsx 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ecopages/ecopages-jsx 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^24.22.0 || >=26.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ecopages/ecopages-jsx 可以商用吗?

@ecopages/ecopages-jsx 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ecopages/ecopages-jsx 的下载量有多少?

根据 npm 官方下载统计,@ecopages/ecopages-jsx 在 2026/10/13 – 2026/11/11 这 30 天内被下载 3,390 次,日均约 113 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ecopages/ecopages-jsx 还在维护吗?

最新版本 0.7.1 发布于 2026/11/13(今天);至今共发布 114 个版本,其中过去 12 个月发布了 114 个;首次发布于 2026/04/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。