Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
type=”module”で始めるJavaScriptのモジュール化
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nal
July 29, 2022
Technology
0
920
type=”module”で始めるJavaScriptのモジュール化
社内勉強会でやった資料です
GitHubリポジトリ:
https://github.com/nalpan/script-type-module
nal
July 29, 2022
Tweet
Share
More Decks by nal
See All by nal
チーム開発におけるコンポーネントシステムの問題と解決施策
nalpan
0
1.6k
Other Decks in Technology
See All in Technology
マルチプレーンGPUネットワークを実現するシャッフルアーキテクチャの整理と考察
markunet
2
210
ブラックボックス観測に基づくAI支援のプロトコルのリバースエンジニアリングと再現~AIを用いたリバースエンジニアリング~ @ SECCON 14 電脳会議 / Reverse Engineering and Reproduction of an AI-Assisted Protocol Based on Black-Box Observation @ SECCON 14 DENNO-KAIGI
chibiegg
0
160
JAWSDAYS2026_A-6_現場SEが語る 回せるセキュリティ運用~設計で可視化、AIで加速する「楽に回る」運用設計のコツ~
shoki_hata
0
2.9k
Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例
lycorptech_jp
PRO
1
170
DX Improvement at Scale
ntk1000
3
440
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
3
1.3k
AIエージェント時代に備える AWS Organizations とアカウント設計
kossykinto
2
560
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
130
[JAWSDAYS2026]Who is responsible for IAM
mizukibbb
0
240
技術的負債の泥沼から組織を救う3つの転換点
nwiizo
8
3.2k
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.7k
IBM Bobを使って、PostgreSQLのToDoアプリをDb2へ変換してみよう/202603_Dojo_Bob
mayumihirano
1
290
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.1k
KATA
mclloyd
PRO
35
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
A Modern Web Designer's Workflow
chriscoyier
698
190k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
480
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
100
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
230
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Exploring anti-patterns in Rails
aemeredith
2
280
Transcript
type=”module”で始めるJavaScriptのモジュール化 中田 和宏
※この資料について • ライブコーディングを含みます • 後日追記したものをアップロードします
アジェンダ • <script>の旧来からある難点 • <script type=”module”>を使ってみる • type=”module”の特徴 • 実践でtype=”module”をどう使うか?
前提知識 • JavaScriptで関数が書けること
話さないこと • 空オブジェクト利用などのテクニック • defer, async • 動的import • rel="modulepreload"
• Node.js上での実行(バンドル、CJS etc…)
<script>の旧来からある難点
突然ですが こんなことありませんか?
scriptタグの順番を間違える…
scriptタグの順番を間違える… 関数が定義されているファイルと 関数を使うファイルの読み込みが逆 になっている
別ファイルで関数が上書きされる…
別ファイルで関数が上書きされる… 規模が大きくなっていき 別ファイルの関数名と被ってバグる
import / export を使ってみましょう!
demo(2-modules/1-non-type-modules)
<script type=”module”>を使ってみる
demo(2-modules/2-type-modules)
type=”module”の特徴
※以後、便宜上 「type="module"」=「モジュール化script」 「旧来のもの」=「グローバルscript」 と呼びます
type=”module”の特徴 • モジュール化script から グローバルscript は参照できる
demo(3-feature/1-callable-global)
type=”module”の特徴 • モジュール化script から グローバルscript は参照できる • グローバルscript と importした関数が被っているときは、
importが優先
demo(3-feature/2-1-module-priority)
※window オブジェクトを使えば グローバルscript を指定できる (3-feature/2-2-use-window-object)
type=”module”の特徴 • モジュール化script から グローバルscript は参照できる • グローバルscript と importした関数が被っているときは、
importが優先 • グローバルscript から モジュール化script は参照できない
demo(3-feature/3-not-refference-module)
type=”module”の特徴 • モジュール化script から グローバルscript は参照できる • グローバルscript と importした関数が被っているときは、
importが優先 • グローバルscript から モジュール化script は参照できない • 別の モジュール化script で定義されたものは利用できない
demo(3-feature/4-another-module)
type=”module”の特徴(その他) • モジュール化script の読み込み〜実行は defer と同じ • モジュール化script はCORS不可 •
モジュール化script はstrictモードで動作する
実践でどう使うか?
バンドルツールを入れられないPJ • 既存はそのまま動く • 新しく追加する部分はtype=”module” ◦ -> グローバルを参照できるため既存資産を使える ◦ ->
新しい部分はスコープが分けられ上書きの心配がない
• import忘れによるエラーは事前検知される ◦ 実行時に出ていたundefinedエラーがすぐわかる • 小規模であればバンドルも不要 もちろん新規画面にも
• MDN Web Docs ◦ https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide /Modules • デモコードリポジトリ ◦
https://github.com/nalpan/script-type-module 参考資料
Thank you!