Geração simples de sitemap.xml em aplicativos Node.js.

É minha opinião que, desde que alguém tenha experiência de codificação na vida real suficiente e conheça o ecossistema, o Node.js é perfeitamente adequado não apenas para pequenos projetos de API, mas também para construir projetos genéricos da web .

Uma das tarefas relacionadas ao SEO que você precisa lidar ao construir um projeto genérico da web é gerar um arquivo sitemap.xml .

sitemap.xml

Embora certamente haja vários módulos por aí que podem ajudá-lo com essa tarefa, há uma maneira fácil, direta e sem dependências de fazê-lo.

Configure uma rota (ou método do controlador) para responder get /sitemap.xmlcom as informações relevantes – neste caso, estou usando IcedCoffeeScript para um fluxo de controle assíncrono elegante – e certifique-se de definir o tipo de conteúdo de resposta paraapplication/xml :

callback: (req, res, next) ->
appUrl
= 'http://www.example.com'
now
= moment(new Date).format 'YYYY-MM-DD'

errors
= {}
await
Category.find()
.select('key')
.where('activeOffersCount').gt(0)
.lean().exec defer errors.categories, categories
...
Product.find()
.select('uid date')
.sort('-createdAt')
.lean().exec defer errors.products, products

for own operation, err of errors
return next err if err

res
.header 'Content-Type', 'application/xml'
res
.render 'public/sitemap', { appUrl, now, categories, products }

Então, na sua opinião – estou usando Jade , então neste caso é sitemap.jade– você pode ter algo assim:

!!! xml
urlset
(>="http://www.sitemaps.org/schemas/sitemap/0.9")

//- Home page
url

loc
= appUrl
lastmod
= now
changefreq daily

priority
= 0.8

...

//- Categories
each category
in categories
url

loc
#{appUrl}/offers/#{category.key}
lastmod
= now
changefreq daily

priority
= 0.7

//- Products
each product
in products
url

loc
#{appUrl}/#{product.uid}.html
lastmod
= product.date
changefreq weekly

priority
= 0.5

E pronto.