Piping Server (Rust)の質素なWeb UIの実装のこだわり
Piping ServerのRust(Hyper)版のシンプルなWeb UIのこだわりどころ。
質素な最大の理由はソースコードが読める人が楽に悪いことをしていないか検証するため。
詳しくはなぜPiping ServerのデフォルトのWeb UIは質素なのか?。
このコミット時点でのHTMLでの話だが、今後大きく変わるつもりはない。
https://github.com/nwtgck/piping-server-rust/blob/47763116c4c5fa8e50f894ca0180184e616dcdf8/resource/index.html
特徴は以下。
TypeScript版のPiping Serverの質素なWeb UIにユーザーからの見た目はかなり寄せた
Rust版をTypeScript版で使えるはずだが(未検証)、その逆はできない。これはRust版がMultipartが非対応だから。
90行のすごくシンプルな昔ながらのJavaScriptのコード
なるべく多くの環境で動くように、constやletやアロー関数を使わずvarやfunction(){}を使っている。
fetchも使わずXMLHttpRequestだけで完結
これもより古い環境でも動くように
<progress>タグによるプログレスバーでアップロードの進捗がわかる
<progress>タグはHTML5から導入されたタグでMDNで見る限りすべてのブラウザでサポートされている。
https://gyazo.com/9fd8a59e900e8da5efc2061a742fe9db
サポートされてなくても、文字列としてOO%のように見える思う
参考: <progress>: 進捗表示要素 - HTML: HyperText Markup Language | MDN
TypeScript版のPiping Serverだとデスクトップ版Google Chromeなどだと下にブラウザが提供する進捗が小さく見えている。
<form>の送信機能でブラウザが自動で教えてくれるみたい
Rust版のPiping Serverはmultipartが使えなくXMLHttpRequestを使っているためプログレスバーもJavaScript側で制御する
RustのHyperで使えるMultipartライブラリ調査(問題点とか)がmultipartを現在サポートしない理由