ウェブフロント
- angular
- corewebvitals
- editorconfig
- gatsby
- hls
- html
- javascript
querySelectorAllで取得した要素は配列ではないらしい
JavaScript 配列内のオブジェクトの更新ってどうする?
デバッグ関数とかnullチェック関数をutil/index.tsにおいとけば楽なことに今頃気づいた。
ブラウザからジャイロセンサーを使ってみる
JS 画像のアップロード、プレビュー機能を実装
「数値から各桁の値を取り出す処理」って言われたら数学的な処理が一番に思い浮かぶけど、JSならそんなことなかった。
Callback時代の関数をPromise化する
個人的実装されてほしいECMA Script Proposal
JavaScriptのprototypeを使う
音声をなみなみさせる
AudioWorkletとAudioWorkletProcessorを使って音声のビジュアライゼーション
- next
- nuxt
- playwright
- prettier
- react
- reactnative
- tensorflowjs
- tools
- typescript
- wasm
- websocket
- ポエム
- 開発環境
サーバー
その他
Next.js GitPressのRSSを取得して自分のサイトに表示する
はじめに
Next.jsのアップデートでSSG(Server Side Generate)が追加され,
ポートフォリオサイトをNext.jsで書き換える機運が高まっております。
ポートフォリオにはブログ情報を載せたいですし, GitPressがRSSを配信してくれていて自分の記事情報を取得してサイトに表示ができますのでその実装していきます.
Next.jsかどうかはあまり関係ないですね. Node.jsのコードになります.
TypeScriptですが。。 (Node.ts?
ポートフォリオにはブログ情報を載せたいですし, GitPressがRSSを配信してくれていて自分の記事情報を取得してサイトに表示ができますのでその実装していきます.
Next.jsかどうかはあまり関係ないですね. Node.jsのコードになります.
TypeScriptですが。。 (Node.ts?
取得できるXMLは以下です.
コード
import fetch from "isomorphic-unfetch";
import XMLParser from "xml2js";
const GitPressAtomURL =
"https://gitpress.io/static/6495a013a74997b89b08be0a51c8eb77bf6652eb934985f92035eb8b75b813d7/atom.xml";
const fetchGitPressXML = async (): Promise<string | null> => {
try {
const response = await fetch(GitPressAtomURL);
const xml = await response.text();
return xml;
} catch (err) {
console.error("GitPress fetch Error", err);
return null;
}
};
export const getGitPressArticles = async (): Promise<object[]> => {
const xml = await fetchGitPressXML();
const parsed_xml = await XMLParser.parseStringPromise(xml).catch(null);
const articles = parsed_xml.feed.entry.map((article) => {
// article contained {title, summary, id, link, updated}
return {
title: article.title.toString(),
link: article.id.toString(),
updated: article.updated.toString(),
};
});
return articles;
};
解説
Next.jsでのデータ取得は
取得したxmlは
isomorphic-unfetch
を使うのが良いみたいです.取得したxmlは
xml2js
を使用してパースします.まず、
いつも考えるんだけど, catchしたときのreturnって何返したらいいんですかね..
null ? 空文字列 ? いい記事ないかな〜..
fetchGitPressArticle
関数でXMLをデータを取得します.await
を使ってPromise
が解決するまで待ちます.async-await
構文を使うときはtry-catch
で囲むようにしています. Promiseでrejectしたときに異常終了しないように。。いつも考えるんだけど, catchしたときのreturnって何返したらいいんですかね..
null ? 空文字列 ? いい記事ないかな〜..
次に
1つの
getGitPressArticles
関数でXMLから欲しい記事情報を取得します.xml2js
のパーサーを使ってパースしてから, map
でいい感じに加工します. パースのところはtry-catch
ではなく,
await-catch
を使っています.1つの
await
だけだったらawait-catch
構文を使った方がきれいきれいになるきがしてます.終わりに
Next.jsのSSGめっちゃやばくない?になってます.
SSGとSSRをうまく使い分ければ最強のサイトになるじゃん!って感じですね(
JAMStackに興味が沸いたので今後も追っかけたいと思います.
SSGとSSRをうまく使い分ければ最強のサイトになるじゃん!って感じですね(
JAMStackに興味が沸いたので今後も追っかけたいと思います.
Thanks you for reading.