server.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // import express from 'express';
  2. const express = require('express');
  3. const app = express();
  4. app.use(express.static('./'));
  5. app.use(async (req, res) => {
  6. // 或者从 CDN 上下载到 server 端
  7. // const serverPath = await downloadServerBundle('http://cdn.com/bar/umi.server.js');
  8. const render = require('./umi.server');
  9. res.setHeader('Content-Type', 'text/html');
  10. var _html = `
  11. <!DOCTYPE html>
  12. <html>
  13. <head>
  14. <meta charset="utf-8" />
  15. <meta
  16. name="viewport"
  17. content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
  18. />
  19. <link rel="stylesheet" href="/umi.css" />
  20. <script>
  21. window.routerBase = "/";
  22. </script>
  23. <script>
  24. //! umi version: 3.5.37
  25. </script>
  26. </head>
  27. <body>
  28. <div id="root"></div>
  29. <script src="/umi.js"></script>
  30. </body>
  31. </html>
  32. `;
  33. const context = {};
  34. const { html, error, rootContainer } = await render({
  35. // 有需要可带上 query
  36. path: req.url,
  37. context,
  38. // 可自定义 html 模板
  39. htmlTemplate: _html,
  40. // 启用流式渲染
  41. // mode: 'stream',
  42. // html 片段静态标记(适用于静态站点生成)
  43. // staticMarkup: false,
  44. // 扩展 getInitialProps 在服务端渲染中的参数
  45. // getInitialPropsCtx: {},
  46. // manifest,正常情况下不需要
  47. });
  48. // support stream content
  49. res.send(html);
  50. // if (content instanceof Stream) {
  51. // html.pipe(res);
  52. // html.on('end', function () {
  53. // res.end();
  54. // });
  55. // } else {
  56. // res.send(res);
  57. // }
  58. });
  59. app.listen(8088);