与 Node 应用集成
优质
小牛编辑
127浏览
2023-12-01
Rax SSR 应用也支持与传统 Node 应用进行集成。工作流程大致分为两个部分:
- 在 Rax SSR 应用中开发页面逻辑,分别构建为 Server 和 Client 端的产物
- 在 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});