1/1Nestでマイクロサービスのプロトコルを追加する前回に引き続きNestの話題。APIの他にgRPCとかによる各種マイクロサービスにも対応している。うちのプロジェクトでは、WebSocket+JSON-RPC2を使っているのだけど、標準ではもちろんそんなピンポイントには対応していない。調べてみたところ、(何故かサイドメニューからリンクされていないページに)自分でマイクロサービスを定義する方法もあったので、ちょっとサーバー側を作ってみた。JavaScriptTypeScript用Webフレームワーク「Nest」を使ってみたTypeScript用のWebフレームワーク、いいのが見つからずにずっと昔からのexpressでやってたのだけれど、暫く前にTwitterで「Nest」なるフレームワークを知り、評判も良さそうで実績もあるようなのでちょっと試してみることにしてみた。以下、半月ほど使った感想とかそういう話を書いてみる。expressの問題点まず現行のexpressの問題点(不満点)はこんな感じ。Promise登場前なのでcallbackばかり。staticプロパティの動作でガッツリとハマったのでメモ。拡張していたら、親のModelクラスにあるstaticプロパティがサブクラスで別々の値でなければおかしいことに気付き悩んだ。こんな感じの継承関係があったとする。JavaScriptPassportで認証失敗をエラーにするにはfailWithErrorを指定するNode.jsの認証ライブラリのPassportで、認証NGの場合にエラーレスポンスが返せなくて調べたのでメモ。こんな風に、リクエストヘッダーにトークンが無いとエラーになるAPIがあったとする。そのものズバリで、遥かに使いやすく今風になったライブラリを見つけたので、改めてそっちの紹介やら手順を解説する。...といっても、ぶっちゃけ凄く簡単に入って動いたので、ごく簡単にだけ。インストールはnpmから入れるだけで公式見れば済むので割愛。次、モデル定義はこんな感じ。いうライブラリ群を組み合わせることで、今までのJavaScript界とは打って変わったアノテーション(デコレーター)だらけのJavaっぽい、イケてるWebアプリを作れることが判明したので、その紹介をする。TypeORMTypeScript用のO/Rマッパー。JavaScriptAngular2でパスワード再入力みたいなバリデーションを作る(改)Angular2/4の標準のバリデータには、複数のフォームを比較するみたいなものは用意されてないっぽいので、それの作り方。再実装して解説に近いけど以下解説。最初にサンプルソースの抜粋から。JavaScript[旧版]Angular2でパスワード再入力みたいなバリデーションを作るAngular2/4の標準のバリデータには、複数のフォームを比較するみたいなものは用意されてないっぽいので、それの作り方。参考にしたのはこちらのページ。ところどころ改良したので、以下説明。イケてる実装発見したのでそちらをご覧ください。この記事は参考用&自省用に残します。最初にサンプルソースの抜粋から。ものを継承して実装するものだそうで、、、自前でやってたわ(汗で、早速TypeScriptでも使おうとしたものの、イベント引数の型の指定の方法に難儀したので、その方法を書いておく。JavaScriptPromiseのオブジェクトを判定する方法TypeScriptでちょっとしたライブラリを作ってたのだけど、いざそれをJavaScriptのアプリに組み込んで使ったところ、Promiseがうまく判定できずトラぶったのでメモ。今回やりたかった事はこんな感じの、Promiseだったらそのまま、PromiseじゃなかったらPromise.resolve()でラップして返すみたいな、callback的な処理で戻り値の型を統一するような奴。(実際のコードはcatchを付けてたりともっと複雑。動かしてみたので、その手順とかあれこれ。JavaScriptTypeScriptの個人的tips年末年始の貴重な休みを使い、何を思ったかTypeScriptでWebアプリを作っていて、とりあえず完成はしてないけど一段落したので、そこで得たtipsをまとめておく。tipsの使用例を見たい場合は↑のGitHubのソースを参照してください。今回はそんな大した話はない。ツイートTwilogプロフィールAuthor:honeplus日々ぼちぼち生活してるプログラマー。その他この辺でも活動。コメントが書き込めない場合コメント欄にスパム対策を実施しています。アナリティクス」を利用してアクセスの解析を行っています。より匿名のトラフィックデータが収集されます。収集した情報はブログの改善やアクセス解析の勉強、また管理人が一喜一憂するために用いられますのでご了承ください。