Official
『今日こそわかる ES Modules』 by @teppeis
問題点
- 動的・命令的
- 実行するまで正確な依存関係が不明
- 非標準・非ユニバーサル
- ネイティブにサポートしてない
- Node.jsとブラウザで同時に動かない
- BrawserlifyとかBabelとかの3rdパーティツールに依存
- Default export/import
- 静的かつ宣言的
- StandardAndUniversal
- 強制strictモード
Syntax
- Named export/import import {foo bar bazz}っていうアレ
- Mix
- Defaultがオススメ
- パースした時点でSyntaxErrorになる
- 重複したexport defalutした時
- 存在しないモジュールをimportした時
- 存在しないバインディングをimportした時
標準・ユニバーサル
- Syntaxのみを定義してて、読み込み方法はパスは指定しない。
- ScriptとModuleのパースターゲットの2種類がある
- 実行環境側で指定されてある
- Moduleだと強制strictモードになる
ECMAScriptで決めていない事
- 読み込み方法
- パス解決方法
- LoaderAPI
- フックによる拡張
- 動的読み込みAPI
各ホストでのモジュール読み込み方法
- whatwg/loader
- whatwg/htmlに移管
- ロードマップが更新されていない・・・
- LoaderPipeline
- whatwg/html(ブラウザ)
- でモジュールとして読み込む
- 後方互換性(非対応なら何も処理されない)し、先方互換性ではMIMEタイプではないのでバッティングしない。
- スコープはscriptタグ内で閉じている
- パス解決、絶対URL、/ ./ ../から始まる相対URL以外はTypeError
- 相対URL
- .jsは付加されない。(Node風に書けない)
- defer属性はデフォルト有効
- async属性はオプショナル
- 常にcors mode。異なるオリジンをimportする場合、CORSヘッダが必須。
- crossorigin属性でimport時にcookieを付加するかどうか(credenials mode)を指定。デフォルトでcookieが付かない。
- Module Worker。コンストラクタでオプションを渡す。
- モジュールのメモ化(キャッシュ)
- relm毎にリクエストURLをキューとしてメモ化
- 同一URLに対するHTTPリクエストは1度だけ
- モジュールはrealm内でシングルトン的に共有
- Node.js nodejs/node-eps
- 絶対策定&議論中
『ECMAScript as a Living Standard』 by @azu
「0からはじめるFlow」 by @leader22
- slide
- Flow
- JSに型をつけるやつ
- 成果物
- 入れたらよかったモジュール
- flow-bin
- babel-plugin-transform-flow-strip-types
- babel-plugin-transform-class-properties
- 0からはじめるFlow Part.1
- 0からはじめるFlow Part.2
- ドキュメント・文献がない
「babel-registerを高速にした話」 by @yosuke_furukawa
Electronのセキュリティのその後
- Electronのセキュリティの話
- Gihyo
- 親のnode-integrationを継承するようになったので、XSSを心配しなくてよくなった?(Electron未経験なのでよくわかってない)