tabr

JSDocまとめ

書き方がいくつかあるときはTypeScript寄りの記法を選ぶ。 仮引数記述 @param {型} 名前 - 説明 戻り値記述 @returns {型} asyncな関数の戻り値 @returns {Promise<型>} 配列型 Array<型> 連想配列型 { [key: キーの型]: バリューの型 } TypeScriptと同じに…

関与宣言・記述 再論

関与宣言は、ある主体が環境・組織体に入ったとき(所属したとき)、自分がどんな貢献〈contribution〉ができるか、貢献をするために、環境・組織・同僚〈associate〉に何を要求〈requirement〉するか? を記述したもの。要求が満たされれば、記述した貢献を…

デリゲーションのヘルパーの“知り方”

デリゲーション・パターンにおいて、仕事の依頼主をクライアント(またはカスタマー)、依頼される先である代理業者をヘルパーと呼ぶことにする。掃除代行業者とかがヘルパーだと思えばよい。 ヘルパーの仕様記述 ヘルパーが何ができるかは、インターフェー…

JsDocのミクシン

mixinタグ @mixin [<MixinName>] A mixin provides functionality that is intended to be added to other objects. If desired, you can use the @mixin tag to indicate that an object is a mixin. You can then add the @mixes tag to objects that use the mixin.</mixinname>…

関与の有向グラフによる表現

直接的な関係を意識せずに考えていた次のようなトピック、 git JavaScriptのモジュール方式(CJS, ESM) NPMパッケージ 概念設計とコース設計 ストリング図とオープングラフ などが、同一の問題なのだと気付いた。有向グラフの取り扱いと利用法の問題だった…

関与宣言

コードユニット(ファイルまたはscript内容)が、アプリケーション全体のなかでどのような役割を演じるか、その貢献〈contribution〉と条件〈conditon〉、期待〈expectation〉、信頼〈reliance, trust〉などを関与〈engagement〉という形で記述する。 関与宣…

scriptタグによるJSファイルのロード

https://html.spec.whatwg.org/multipage/scripting.html からの図(asyncdefer.svg):わかりやすいし示唆に富んでいる。 <script> は書いた順にロード(フェッチ&パーズ&実行)される。したがって、実行順は保証される。 <script> は、メインスレッド(HTMLパーズ&描画…

git使用の方針(一人作業)

違う理由の変更を持つ複数のファイルをひとつコミットに入れない。 同じ理由の変更なら複数のファイルをひとつコミットに入れても問題ない。 変更点を説明するコミットメッセージが、コミット全体に対して適切であるか? が目安。 ファイナル数が問題ではな…

git使用の方針(一人作業)

違う理由の変更持つ複数のファイルをひとつコミットに入れない。 同じ理由の変更なら複数のファイルをひとつコミットに入れても問題ない。 変更点を説明するコミットメッセージが、コミット全体に対して適切であるか? が目安。 ファイナル数が問題ではなく…

bitbucket 2022 (2)

色々と様変わり。 bitbucketアカウントではなくて、Atlassianアカウントになった。 Atlassianアカウントによるbitbucketへのログインはできる。従来通りの操作性。 Atlassianアカウントのパスワードでは、gitのアクセスは許可されない(2022年3月1日 以降)…

bitbucket 2022

bitbucket使うのも久しぶりだ。行きがかり上、あるいは腐れ縁で今でもbitbucket使っている。UIや仕様が変わっていて戸惑うこともあるが、なんつっても Mercurial のサービスとしてスタートした bitbucket が今や gitのみ、つう変化が様変わり。昔の本編記事…

Viteスキャフォールド: JS と TS

次のコマンドを実行する: npm create vite@latest 。次のオプションを選ぶ。 Vanilla, JavaScript Vanilla, TypeScript PowerShellのデフォルトだと、画面の文字が一部読めない。wt とか cmd.exe がいいかも。JavaScript と TypeScript の場合で比較してみ…

モジュールシステムの錯綜

本編の JavaScriptは2つの言語になったんだね - 檜山正幸のキマイラ飼育記 (はてなBlog), CommonJSは遠からず消滅するだろう - 檜山正幸のキマイラ飼育記 (はてなBlog) でも書いたが、現状のモジュールシステムは錯綜していて鬱陶しい。将来的にはESM方式に…

TypeScriptのCJSモジュール

グローバルモジュールと内部モジュール〈名前空間〉は述べた。 TypeScriptグローバルモジュール - (新) 檜山正幸のキマイラ飼育記 メモ編 TypeScript内部モジュール - (新) 檜山正幸のキマイラ飼育記 メモ編 CJSモジュールも僕は使いたくはないが、実際はま…

HTML scriptタグとモジュール

コードが書いてあるファイルへの参照と、コードのインライン埋め込みが同じタグだったのは気にいらないが、それを言っても詮無いこと。 参照なら: src 属性を付けて要素内容は空。 埋め込みなら: src 属性を付けずに、要素内容に書く。 nomodule属性(存在…

TypeScript内部モジュール

今は「名前空間〈namespace〉」に変わり、これも推奨はされてないようだが、内部モジュールという仕掛けもある。グローバルモジュール(include方式)も内部モジュールも、ESM以前のナンチャッテモジュールのメカニズムを採用している。手動で書いていた var…

TypeScriptグローバルモジュール

モジュールロード/非モジュールロード - (新) 檜山正幸のキマイラ飼育記 メモ編 の続き。今は非推奨の古い方式だが、TypeScriptのimport構文もどきがある。 /// <reference path="lib-foo.ts"> /* main.ts */ C言語の include に近い。コンパイル時に lib-foo.ts の内容が見える。一応、</reference>…

モジュールロード/非モジュールロード

古い方式: <script src="lib-common.js"> <script src="lib-foo.js"> <script src="lib-bar.js"> <script src="main.js"> 直接的依存関係は(仮定): main → lib-foo main → lib-bar lib-foo → lib-common lib-bar → lib-common scriptタグの並びを見ても依存方向/依存可能性は分かるが、ほんとの依存関係は分からない。次のようにすればハッキリする。 main で …

scriptタグとモジュール/非モジュール

古いブラウザには読ませない、モジュールロード構文 : <script type="module" src="パス"></script> 新しいブラウザには読ませない、非モジュールロード構文 : <script nomodule src="パス"></script> 新旧共通の非モジュールロード構文: <script src="パス"></script> モジュールコードはモジュールオブジェクト=関数フレーム(スタックではなくヒープだが)内で実行…

補足: NPMによるスキャフォールド

NPMによるスキャフォールド - (新) 檜山正幸のキマイラ飼育記 メモ編 の続き。npx ≡ npm exec の一時インストール先だが、Linux で ~/.npm/_npx/ らしいがWindowsでは %USERPROFILE%/AppData/Local/npm-cache/_npx/ ここを見ると確かにパッケージがインスト…

NPMによるスキャフォールド

最近は、NPMだけでプロジェクトのスキャフォールディングができるようだ。例えば、vite〈ヴィート〉のセットアップは: npm create vite@latestnpm create は npm init の別名〈エイリアス〉、i.e. npm create <initializer> ≡ npm init <initializer> 。npm init のマニュアルは: htt</initializer></initializer>…

動くかな?

<html> <head> <meta charset="UTF-8" /> <title>Import JSON</title> </head> <body> <script type="module"> import myJson from './external.json' assert {type: 'json'}; console.dir(myJson); </script> </body> </html> いくつか問題がある。 import/assert はまだ対応してないかも知れない。assertなしでも、拡張子で判断してJSONファイルをインポー…

Web開発のツール

ツールの分類が難しい。境界線がハッキリしないし、実際複数の役割を兼務しているソフトウェアが多そうだ。つまり、だいぶ機能重複があるってこと。 バンドラー: 複数のファイルをまとめて単一または少数のファイルにする。 互換性トランスパイラ: JavaScr…