LoginSignup
3
3

More than 5 years have passed since last update.

Node学園 21時限目 -ES Modules Meetup-

Posted at

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

「babel-registerを高速にした話」 by @yosuke_furukawa

Electronのセキュリティのその後

  • Electronのセキュリティの話
  • Gihyo
  • 親のnode-integrationを継承するようになったので、XSSを心配しなくてよくなった?(Electron未経験なのでよくわかってない)
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3