• stenciljs 学习十 服务器端渲染


    stenciljs提供了 ssr 支持,对于express 最简单的就是使用提供的中间件

    express 集成

    const express = require('express');
    const stencil = require('@stencil/core/server');
    
    // create the express app
    const app = express();
    
    // load the stencil config and
    // express serve-side rendering middleware
    const { wwwDir, logger } = stencil.initApp({
      app: app,
      configPath: __dirname
    });
    
    // serve static files
    app.use(express.static(wwwDir));
    
    // set which port express it will be listening on
    const port = 3030;
    
    // start listening and handling requests
    app.listen(port, () => logger.info(`server-side rendering listening on port: ${ port }`));

    普通nodejs 项目集成

    const fs = require('fs');
    const http = require('http');
    const stencil = require('../../server/index.js');
    
    // load the config
    const config = stencil.loadConfig(__dirname);
    
    // ensure ssr flag is set on the config
    config.flags = { ssr: true };
    
    // create the renderer
    const renderer = new stencil.Renderer(config);
    
    // load the source index.html
    const srcIndexHtml = fs.readFileSync(config.srcIndexHtml, 'utf-8');
    
    // create a request handler
    // this is an overly simplified example
    // in a real-world server there would be route handlers
    function requestHandler(req, res) {
      // hydrate!!
      renderer.hydrate({
        html: srcIndexHtml,
        req: req
      }).then(results => {
    
        // console log any diagnostics
        results.diagnostics.forEach(d => {
          console.log(d.messageText);
        });
    
        // respond with the hydrated html
        res.end(results.html);
      });
    }
    
    // create the server
    const server = http.createServer(requestHandler);
    
    // set which port the server will be listening on
    const port = 3030;
    
    // start listening and handling requests
    server.listen(port, () => console.log(`server-side rendering listening on port: ${ port }`));

    参考资料

    https://stenciljs.com/docs/server-side-rendering

  • 相关阅读:
    P6406 [COCI2014-2015] Norma 分治+数学
    CF547D Mike and Fish 欧拉回路
    P6628 [省选联考 2020 B 卷] 丁香之路 欧拉路+最小生成树
    2020 CSP-S2 游记
    CF594D REQ 树状数组+质因数分解
    CF416E President's Path floyd
    CF1385F Removing Leaves 拓扑排序
    CF449C Jzzhu and Apples 思维题
    回溯法与八皇后问题
    codewars-7kyu:Sum of the first nth term of Series
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/9711241.html
Copyright © 2020-2023  润新知