generated at
ESModules

JavaScriptから別のJavaScriptを読み込む仕組み
export foo で外に出して
import {foo} from '../path/to/file' で読み込む
CommonJSとは異なり、JavaScriptに専用の文法を導入した


__filename も無くす動きがある


Chrome 61から使えるようになったshokaishokaishokaishokaishokai
js
<script type="module" crossorigin="use-credentials"> import {foo} from '../path/to/script.js' </script>
type="module" 付ければいいだけ
認証が必要な場合は crossorigin="use-credentials" を付ける

これが普及するとbrowserifyとかwebpackとか(少し)いらなくなるかもしれない


CosenseUserScriptでも、import文が使えると便利だと思うshokai
やってみた。こうなった→ shokai#58dce5ef97c2910000bc9686
自分のページが長いScriptで埋まらない
長いscriptもガンガン書ける
管理や配布が楽になった
このprojectに置いてあるページの1部分を別のページに切り出すUserScriptを、別のprivate projectからも読み込める

type="module" 未対応ブラウザへの対応
ブラウザは、不明なtypeが指定されたscriptタグを解釈しない
<script type="module" src="foo.js" crossorigin="use-credentials" />
これだけだとChrome v60以前やFirefoxなどではscriptタグが動かない
ESModulesではなく普通のJavaScriptとしてロードしてはくれない
解決方法
nomodule 属性を付けたscriptタグを併記する
今度は逆にESmodules対応ブラウザがそのscriptタグを解釈しないようになってくれる
ScrapboxのUserScriptみたいユーザーにJavaScriptを書かせて、中身を問わずとにかくロードしたい場合は
nomodule 付けたscriptタグを併記しておけば、どっちかが読み込まれる
html
<script type="module" src="foo.js" crossorigin="use-credentials" /><!-- 新しいブラウザで動く --> <script nomodule src="foo.js" /><!-- 古いブラウザはこっち -->