Next.jsで作ったアプリを公開、SSL対応、永続化するためのメモ。
nowじゃなくて普通に自前のLinuxサーバーに載せることを考えます。
気持ち的にはNext.jsプロジェクトの初期設定の続きです。
Next.jsで作ったアプリを公開、SSL対応、永続化するためのメモ。
nowじゃなくて普通に自前のLinuxサーバーに載せることを考えます。
気持ち的にはNext.jsプロジェクトの初期設定の続きです。
Next.js(React)でTypescriptで書いていますが、DOM関連でNullable
な操作が続きどう処理するのがいいか悩んだので色々やってみます。
Typescriptは制限と同時にできることも多いので思いのほか色々できました。
キーワード:Null合体演算子Null条件演算子Null許容型Type GuardNon-null assertion operatorDefinite Assignment AssertionsOptional chaining
next.jsはnowと合わせると秒単位でWEBアプリを公開できるような超速フレームワークですが、それなりの規模のものを作ろうと思うと色々設定が必要です。
大分慣れてきたので振り返りもかねてプロジェクト初期設定の備忘録。
プロジェクト作成からGit設定、各種コンフィグ類の設定、必須ライブラリの導入とカスタムページの用意まで。
色んなAPIを使っているとPOSTで情報取得をするものもあります。
api keyなんかが必要な場合は仕方ないとして、どうでもいいパラメータをPOSTで送るものがREST APIと自称してて??となることも多々。
そんな中で躓くことの多いapplication/x-www-form-urlencoded
のエンコードをどうするのがいいかなと試してみたので覚書き。
基本的にネストしたデータは送らないという前提で書いていきます。
階層化したデータを送る必要があるならapplication/json
で送るかJSON.stringfy
したものを送るようになっているはず。きっとそう。
とはいえ必要な場面が来るかもしれないのでそれっぽいコードも書いておきます。
WordPress Blogのfeedをjavascriptで扱いたい。
feedをjsonで返すプラグインなんてのもあったんですが、今後のことも考えて使う側でどうにかしたいと思います。
jQueryの$.parseXML()
を使うとかなり楽ですが、できればもうjQueryにはかかわらないようにしたい。
fetch APIを使ってXMLを処理してみます。
ここしばらくフロント開発が便利になった反面、サーバ(node.js)でこれ使えないんだっけとなることが多々あります。
特に通信系は多種にわたる処理のいろんなフェーズで使うのため、その場その場で使うものを決めていたんですが今後のために少しまとめておきます。
ReactでUIコンポーネントを使う時にMaterial-UIは一番有力な選択肢だと思います。
Next.jsでも同じように使いたいところですが、サーバーサイドレンダリング(SSR)時にcss modulesによるクラス名付与が合わなくなる問題が起きました。
index.js:1 Warning: Prop
className
did not match. Server: “MuiBox-root…これによって一部スタイルが崩れてしまう。
dev
での再コンパイルや内部遷移によって直ることもあるがproduction
でも問題が起きるので使い物にならない状態なので対策します。
Next.jsを使っていてgetInitialProps()
内でContext APIを使いたかったけど、Reactライフサイクル内にないため使えなかった。
じゃあprops
を経由してconstructor()
内でコンテクストに入れようとしたら中身にアクセスできなかった。
componentDidMount()
でも悪くはないけどrender()
前に処理したいので、ドキュメントにない方法で使ってみます。
簡単にReactを使ったSSRができるNext.jsを使っていて外部APIをfetchするときに色々戸惑ったので覚書き。
公式ドキュメントが結構偏っているのと日本語情報も少ないのでわりと手探りでどうすればいいか考えていきます。
next 9.1.7 react 16.12.0