基于Koa2自动生成sitemap网站地图方便搜索引擎收录SEO
sitemap是一种高级流式生成Sitemap的库/ CLI,它使创建Sitemap XML文件变得容易,本文主要讲解基于koa2生成网站sitemap.xml,并进行封窗。
需要使用的sitemap包,sitemap包可以生成sitemap.xml文件,方便我们网站做seo收录优化
搭建服务器环境
const Koa = require('koa');
const app = new Koa();
app.listen(3000);
console.log('启动成功:http://localhost:3000');
生成sitemap.xml文件
const Koa = require('koa');
const { SitemapStream } = require('sitemap');
const fs = require('fs');
const app = new Koa();
app.use((ctx,next)=>{
if(ctx.url === '/addsitemap'){
let smStream = new SitemapStream({hostname:'http://localhost'});
let mySitemap = fs.createWriteStream('sitemap.xml');
smStream.pipe(mySitemap);
smStream.write({ url: '/page-1/', changefreq: 'daily', priority: 0.3 });
smStream.end();
smStream.on('finish',()=>{
ctx.body = '生成sitemap.xml成功';
})
}
})
app.listen(3000);
console.log('启动成功:http://localhost:3000');
首先引入sitemap的sitemapStream,然后新建一个SitemapStream
,通过hostname
配置一个跟域名,配置之后,接下来写入smStream
的信息都可以自动的添加根域名。创建可读流sitemap.xml
, 并把smStream
的信息放入其中。
读取sitemap.xml文件
const { SitemapStream, streamToPromise, XMLToSitemapItemStream } = require('sitemap');
...code 其他的代码
if(ctx.url === '/addsitemap'){
} else if (ctx.url === '/sitemap.xml') {
let sm = new SitemapStream();
fs.createReadStream('sitemap.xml')
.pipe(new XMLToSitemapItemStream())
.pipe(sm)
let res = await streamToPromise(sm);
ctx.set('Content-Type', 'application/xml')
ctx.body = res;
}
首先引入XMLToSitemapItemStream
用来读取xml文件流,并转换成sitemap包需要的格式,然后再传递给sm
,利用streamToPromise
,可以把sm流转换成buffer。
最后我们设置一下相应头为application/xml
,body
返回转换后到buffer
即可
后续会出一篇关于一篇关于封装基于koa2的sitemp包的文章,敬请关注。
欢迎关注作者原文:原文地址:https://www.9cka.cn/study/13