目录
当前位置: 首页 > 文档资料 > Rax 中文文档 >

与 Node 应用集成

优质
小牛编辑
127浏览
2023-12-01

Rax SSR 应用也支持与传统 Node 应用进行集成。工作流程大致分为两个部分:

  1. 在 Rax SSR 应用中开发页面逻辑,分别构建为 Server 和 Client 端的产物
  2. 在 Node 应用中,调用 Server 端产物进行渲染

构建

在项目根目录下执行 npm run build ,即可进行项目构建。

构建产物与 app.json 中路由配置的对应关系如下:

routes 配置:

 1[
 2    {
 3      "path": "/",
 4      "component": "pages/home"
 5    },
 6    {
 7      "path": "/about",
 8      "component": "pages/about"
 9    }
10  ]

对应构建产物:

1pages_home.js
2pages_about.js

每张 Rax 页面都会被构建为一个独立 function,供 Node 应用调用,形式如下:

1export function render(req: http.IncomingMessage, res: http.ServerResponse) => void

集成

以结合到一个基于 Express 的 Node 应用为例,示例代码如下:

 1const express = require('express');
 2const PORT = 8080;
 3const app = express();
 4const routes = {
 5  '/': require('./build/server/pages_home.js'),
 6  '/about': require('./build/server/pages_about.js')
 7};
 8
 9Object.keys(routes).map(path => {
10  const page = routes[path];
11  app.get(path, (req, res) => {
12    page.render(req, res);
13  });
14});
15
16app.listen(PORT, () => {
17  console.log(`app listening on port ${PORT}`);
18});