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

posted on   荣锋亮  阅读(427)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示