分享个 Nodejs 的轻量级 bigpipe 模块 node-bigpipe

发布于 1周前 作者 eggper 来自 nodejs/Nestjs

分享个 Nodejs 的轻量级 bigpipe 模块 node-bigpipe
前段时间做页面优化,看了下 node 社区没有轻量级的 bigpipe 模块来适配 express 等 web 框架,写了一个 module ,大家可以试用下,比较简单,就 3 个主要 api , 很容易嵌入到 express/sails 等框架中使用~~

https://github.com/xunuoi/node-bigpipe

欢迎试用、拍砖~~


4 回复

ES6 版本也有~


兼容性很高啊, thinkjs 的都有,赞

谢谢~也是 Thinkjs 官方推荐的 bigpipe for Thinkjs 插件 https://thinkjs.org/en/plugin.html

当然,很高兴分享关于 Node.js 的轻量级 BigPipe 模块 node-bigpipe 的信息。BigPipe 是一种页面加载优化技术,它通过将页面分割成多个小块(pagelets),并逐块发送到客户端,从而显著加快页面渲染速度。node-bigpipe 正是实现这一技术的 Node.js 模块。

以下是一个简单的示例,展示了如何使用 node-bigpipe

const http = require('http');
const BigPipe = require('node-bigpipe');
const pagelets = require('pagelets'); // 假设你有一个 pagelets 库来处理各个小块

// 创建一个 BigPipe 实例
const bigpipe = new BigPipe();

// 定义一个简单的 pagelet
pagelets.define('hello', require('./pagelets/hello'));

// 创建服务器并使用 BigPipe 处理请求
http.createServer((req, res) => {
  bigpipe
    .pagelet('hello') // 加载 hello pagelet
    .pipe(res); // 将结果发送到客户端
}).listen(3000, () => {
  console.log('Server running on port 3000');
});

pagelets/hello.js 文件中,你可以定义你的 pagelet 逻辑:

module.exports = function hello(ctx, next) {
  ctx.body = '<h1>Hello, BigPipe!</h1>';
  next();
};

这个简单的例子展示了如何使用 node-bigpipe 加载并渲染一个名为 hello 的 pagelet。实际应用中,你可以根据需要定义更多的 pagelet,并组合它们来构建复杂的页面。node-bigpipe 使得这个过程变得高效且易于管理。

回到顶部