sitemap.js 使用教程

sitemap.js 使用教程

sitemap.js Sitemap-generating framework for node.js sitemap.js 项目地址: https://gitcode.com/gh_mirrors/si/sitemap.js

1. 项目介绍

sitemap.js 是一个为 Node.js 设计的高级别流式 sitemap 生成库和命令行界面(CLI)。它可以轻松地将一组 URL 列表转换成 sitemap XML 文件。这个库非常适合需要生成网站地图以提高搜索引擎优化(SEO)的开发者。

2. 项目快速启动

在开始之前,确保你的系统中已经安装了 Node.js。

安装

通过 npm 安装 sitemap.js:

npm install --save sitemap

生成一次性 sitemap

如果只是想将一个 URL 列表转换成 sitemap,可以使用 CLI 工具。假设你有一个名为 listofurls.txt 的文件,其中包含了要生成 sitemap 的 URL 列表:

npx sitemap < listofurls.txt

如果你想在代码中生成 sitemap,可以使用以下示例:

const { SitemapStream, streamToPromise } = require('sitemap');
const { Readable } = require('stream');

// 一个包含你链接的数组
const links = [
  { url: '/page-1/', changefreq: 'daily', priority: 0.3 }
];

// 创建一个写入流
const stream = new SitemapStream({ hostname: 'https://...' });

// 返回一个解析为你 XML 字符串的 Promise
return streamToPromise(Readable.from(links).pipe(stream))
  .then(data => data.toString());

服务器上托运 sitemap 并定期更新

如果你的网站 URL 数量少于 50,000 个,可以使用以下方法在你的服务器上创建和更新 sitemap:

const express = require('express');
const { SitemapStream, streamToPromise } = require('sitemap');
const { createGzip } = require('zlib');
const { Readable } = require('stream');

const app = express();
let sitemap;

app.get('/sitemap.xml', function(req, res) {
  res.header('Content-Type', 'application/xml');
  res.header('Content-Encoding', 'gzip');

  if (sitemap) {
    res.send(sitemap);
    return;
  }

  try {
    const smStream = new SitemapStream({ hostname: 'https://example.com/' });
    const pipeline = smStream.pipe(createGzip()).pipe(res);

    smStream.write({ url: '/page-1/', changefreq: 'daily', priority: 0.3 });
    smStream.write({ url: '/page-2/', changefreq: 'monthly', priority: 0.7 });
    // ... 添加更多 URL

    streamToPromise(pipeline).then(sm => sitemap = sm);

    smStream.end();
  } catch (e) {
    console.error(e);
    res.status(500).end();
  }
});

app.listen(3000, () => {
  console.log('listening');
});

3. 应用案例和最佳实践

生成多个 sitemap 和索引文件

如果你知道你的 sitemap 将包含超过 50,000 个 URL,你可以使用更复杂的接口来创建一个新的 sitemap 文件,每 45,000 个条目就会添加到一个 sitemap 索引中:

const { createReadStream, createWriteStream } = require('fs');
const { resolve } = require('path');
const { createGzip } = require('zlib');
const { simpleSitemapAndIndex, lineSeparatedURLsToSitemapOptions } = require('sitemap');

// 写入 sitemaps 和索引到指定的目录
simpleSitemapAndIndex({
  hostname: 'https://example.com',
  destinationDir: './',
  sourceData: lineSeparatedURLsToSitemapOptions(createReadStream('./your-data.json.txt'))
}).then(() => {
  // 执行后续操作
});

4. 典型生态项目

目前没有特定于 sitemap.js 的典型生态项目列出。不过,任何需要生成 sitemap 的 Node.js 项目都可以考虑使用 sitemap.js 作为其 sitemap 生成工具。这个库的灵活性和易用性使其成为创建和管理网站地图的理想选择。

sitemap.js Sitemap-generating framework for node.js sitemap.js 项目地址: https://gitcode.com/gh_mirrors/si/sitemap.js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

舒莲菲Peace

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值