HTMLフォームには主にPOSTのリクエストを投稿する機能があります。
onSubmit
イベントにハンドラを設定すると、Javascriptから任意のAPIコールなどを実行できます。
このハンドラの書き方は似たようなパターンをとることが多く、以下のようなイディオムになります。
document.querySelector('form').addEventListener('submit', async (e) =>{
document.querySelector('#submit').disabled = true;
e.preventDefault();
await some_api_call(e.target.item.value);
window.location = 'http://example.com/redirected';
return false;
});
ハンドラを非同期関数とすることで、APIコールの前後処理も適切な順序で実行できます。
また、onSubmit
はHTMLバリデーション通過後に実行されるため、フォームに設定したrequired
属性のチェックがAPIコール前に機能します。
⁋ 2022/03/02↻ 2025/04/04
deno test
denoのテスティング機能は、ツールを追加インストールせずに動作するテストランナーを提供しています。deno test
サブコマンドで、ファイルやディレクトリ単位のテストスイートを一括実行できます。
denoはブラウザ環境との互換性が高く、ブラウザ向けのコードをテストできます。WebWorkersやWebAssemblyを含む高度な構成もそのまま動作します。ただしDOMは別モジュールとなっており、標準的なdenoテスティングのスコープには含まれていません。
……
Javascriptの条件つきコンパイル
TypescriptやJavascriptの言語仕様には条件つきコンパイルを含むマクロがありませんが、esbuildにはその機能があります。
……
Litのコード構成
Litは、WebComponents標準に準拠したクラスコンポーネントを実装するフレームワークです。
APIクライアントの実装パターン
APIクライアント用途の典型的な実装パターンは以下のような例になります。
import { html, LitElement } from "lit";
import { customElement、 state } from "lit/decorators.js";
@customElement("sample-app")
class SampleApp extends LitElement {
@state()
_person = {};
async connectedCallback() {
super.connectedCallback();
this._person = await call_api();
}
render() {
return html`<div> ${this._person.name} </div>`;
}
}
APIクライアントの多くのケースで、コンポーネント呼び出し時にAPIレスポンスをセットアップします。
……
Litの特徴
LitはWebのUIコンポーネント開発向けライブラリで、React.jsやVue.jsなどのオルタナティブです。
Web Components標準に準拠していることと、VirtualDOMによらないレンダリングが主な特徴です。
……