Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
type=”module”で始めるJavaScriptのモジュール化
Search
nal
July 29, 2022
Technology
940
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
type=”module”で始めるJavaScriptのモジュール化
社内勉強会でやった資料です
GitHubリポジトリ:
https://github.com/nalpan/script-type-module
nal
July 29, 2022
More Decks by nal
See All by nal
チーム開発におけるコンポーネントシステムの問題と解決施策
nalpan
0
1.7k
Other Decks in Technology
See All in Technology
データ_AIの事業の勝敗をわけるもの
nek0128
1
480
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
5
730
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
170
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.7k
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
33
32k
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
620
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
860
品質と信頼性を地続きにする
grimoh
2
980
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
590
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.3k
人間はどの意思決定を手放せるのか
kawasima
15
8.1k
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
410
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
Thoughts on Productivity
jonyablonski
76
5.4k
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!