美文网首页
umijs ssr 代码

umijs ssr 代码

作者: 第2世界 | 来源:发表于2020-06-19 13:54 被阅读0次
    const http = require('http');
    const { createReadStream } = require('fs');
    const { join, extname } = require('path');
    const { Stream } = require('stream');
    
    const root = join(__dirname, './dist');
    const render = require('./dist/umi.server');
    const headerMap = {
      '.js': 'text/javascript',
      '.css': 'text/css',
      '.jpg': 'image/jpeg',
      '.png': 'image/jpeg',
    };
    
    http
      .createServer(async (req, res) => {
        const ext = extname(req.url);
        const header = {
          'Content-Type': headerMap[ext] || 'text/html',
        };
        res.writeHead(200, header);
    
        if (!ext) {
          const context = {};
          const { html, error, rootContainer } = await render({
            // 有需要可带上 query
            path: req.url,
            context,
            // 可自定义 html 模板
            // htmlTemplate: defaultHtml,
            // 启用流式渲染
            mode: "stream",
            // html 片段静态标记(适用于静态站点生成)
            // staticMarkup: false,
            // 扩展 getInitialProps 在服务端渲染中的参数
            // getInitialPropsCtx: {},
            // manifest,正常情况下不需要
          });
          if (html instanceof Stream) {
            html.pipe(res);
            html.on('end', function() {
              res.end();
            });
          } else {
            res.write(html);
            res.end();
          }
        } else {
          // static file url
          const path = join(root, req.url);
          const stream = createReadStream(path);
          stream.on('error', error => {
            res.writeHead(404, 'Not Found');
            res.end();
          });
          stream.pipe(res);
        }
      })
      .listen(3000);
    
    console.log('http://localhost:3000');
    

    相关文章

      网友评论

          本文标题:umijs ssr 代码

          本文链接:https://www.haomeiwen.com/subject/xkmvxktx.html