基于Koa2自動(dòng)生成sitemap網(wǎng)站地圖方便搜索引擎收錄SEO
sitemap是一種高級(jí)流式生成Sitemap的庫(kù)/ CLI,它使創(chuàng)建Sitemap XML文件變得容易,本文主要講解基于koa2生成網(wǎng)站sitemap.xml,并進(jìn)行封窗。
需要使用的sitemap包,sitemap包可以生成sitemap.xml文件,方便我們網(wǎng)站做seo收錄優(yōu)化
搭建服務(wù)器環(huán)境
const Koa = require('koa');
const app = new Koa();
app.listen(3000);
console.log('啟動(dòng)成功: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('啟動(dòng)成功:http://localhost:3000');
首先引入sitemap的sitemapStream,然后新建一個(gè)SitemapStream,通過hostname配置一個(gè)跟域名,配置之后,接下來寫入smStream的信息都可以自動(dòng)的添加根域名。創(chuàng)建可讀流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文件流,并轉(zhuǎn)換成sitemap包需要的格式,然后再傳遞給sm ,利用streamToPromise,可以把sm流轉(zhuǎn)換成buffer。
最后我們?cè)O(shè)置一下相應(yīng)頭為application/xml,body返回轉(zhuǎn)換后到buffer即可
后續(xù)會(huì)出一篇關(guān)于一篇關(guān)于封裝基于koa2的sitemp包的文章,敬請(qǐng)關(guān)注。
基于Koa2自動(dòng)生成sitemap網(wǎng)站地圖方便搜索引擎收錄SEO
歡迎關(guān)注作者原文:原文地址:https://www.9cka.cn/study/13