JavaScriptã€ã³ããŒããããã¯ãã¢ãžã¥ãŒã«è§£æ±ºãå¶åŸ¡ããäŸåé¢ä¿ç®¡çãç°¡çŽ åãã倿§ãªç°å¢ã§Webã¢ããªã®ããã©ãŒãã³ã¹ãåäžããã匷åãªæè¡ã§ãã
JavaScriptã€ã³ããŒããããïŒã¢ãžã¥ãŒã«è§£æ±ºãšäŸåé¢ä¿ç®¡çã®é©åœ
çµ¶ããé²åããWebéçºã®äžçã«ãããŠãJavaScriptã®äŸåé¢ä¿ãå¹ççãã€å¹æçã«ç®¡çããããšã¯æãéèŠã§ããåŸæ¥ã®ã¢ãããŒãã¯æ©èœçã§ã¯ãããã®ã®ããã°ãã°è€éããããã©ãŒãã³ã¹ã®ããã«ããã¯ããããããŸããããã§ç»å Žããã®ãJavaScriptã€ã³ããŒããããã§ããããã¯éçºè ã«ã¢ãžã¥ãŒã«è§£æ±ºã«å¯ŸããåäŸã®ãªãå¶åŸ¡æš©ãäžããäŸåé¢ä¿ç®¡çãç°¡çŽ åããWebã¢ããªã±ãŒã·ã§ã³éçºã®æ°æä»£ãåãéãç»æçãªæ©èœã§ãã
JavaScriptã€ã³ããŒãããããšã¯ïŒ
ãã®æ žå¿ã«ãããŠãã€ã³ããŒããããã¯ã¢ãžã¥ãŒã«æå®åïŒimport
æã§äœ¿çšãããæååïŒãç¹å®ã®URLã«ãããã³ã°ããJSONãªããžã§ã¯ãã§ãããã®ãããã³ã°ã«ããããã©ãŠã¶ã¯ãã¡ã€ã«ã·ã¹ãã ãåŸæ¥ã®ããã±ãŒãžãããŒãžã£ãŒã ãã«é Œãããšãªããã¢ãžã¥ãŒã«ã解決ã§ããŸããããã¯ãã³ãŒãå
ã§ã©ã®ããã«åç
§ãããŠãããã«é¢ããããåã¢ãžã¥ãŒã«ãã©ãã§èŠã€ãããããã©ãŠã¶ã«æ£ç¢ºã«äŒããäžå€®ãã£ã¬ã¯ããªã®ãããªãã®ã ãšèããŠãã ããã
ã€ã³ããŒããããã¯ãHTMLå
ã®<script type="importmap">
ã¿ã°ã§å®çŸ©ãããŸãããã®ã¿ã°ã¯ãã¢ãžã¥ãŒã«ã®ã€ã³ããŒãã解決ããããã«å¿
èŠãªæç€ºããã©ãŠã¶ã«æäŸããŸãã
äŸïŒ
<script type="importmap">
{
"imports": {
"lodash": "https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js",
"my-module": "/modules/my-module.js",
"lit": "https://cdn.jsdelivr.net/npm/lit@3/+esm"
}
}
</script>
ãã®äŸã§ã¯ãJavaScriptã³ãŒãã«import _ from 'lodash';
ãå«ãŸããŠããå Žåããã©ãŠã¶ã¯æå®ãããCDN URLããLodashã©ã€ãã©ãªããã§ããããŸããåæ§ã«ãimport * as myModule from 'my-module';
ã¯/modules/my-module.js
ãã¡ã€ã«ããã¢ãžã¥ãŒã«ãèªã¿èŸŒã¿ãŸãã
ã€ã³ããŒããããã䜿çšããã¡ãªãã
ã€ã³ããŒããããã¯ãéçºããã»ã¹ãåçåããWebã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããå€ãã®å©ç¹ãæäŸããŸãããããã®å©ç¹ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
1. ã¢ãžã¥ãŒã«è§£æ±ºå¶åŸ¡ã®åŒ·å
ã€ã³ããŒããããã¯ãã¢ãžã¥ãŒã«ãã©ã®ããã«è§£æ±ºããããããã现ããå¶åŸ¡ããæ©èœãæäŸããŸããã¢ãžã¥ãŒã«æå®åãç¹å®ã®URLã«æç€ºçã«ãããã³ã°ããããšã§ãäŸåé¢ä¿ã®æ£ããããŒãžã§ã³ãšãœãŒã¹ã䜿çšãããããšãä¿èšŒããŸããããã«ãããããã±ãŒãžãããŒãžã£ãŒãçžå¯Ÿãã¡ã€ã«ãã¹ã ãã«é Œãããšã§çãããææ§ãããªããªããæœåšçãªç«¶åãé²ãããšãã§ããŸãã
äŸïŒãããžã§ã¯ãå ã®2ã€ã®ç°ãªãã©ã€ãã©ãªããåãäŸåé¢ä¿ïŒäŸïŒLodashïŒã®ç°ãªãããŒãžã§ã³ãå¿ èŠãšããã·ããªãªãæ³åããŠã¿ãŠãã ãããã€ã³ããŒããããã䜿ãã°ãåã©ã€ãã©ãªã«åå¥ã®ãããã³ã°ãå®çŸ©ã§ããäž¡æ¹ãç«¶åããããšãªãæ£ããããŒãžã§ã³ãåãåããããã«ä¿èšŒã§ããŸãïŒ
<script type="importmap">
{
"imports": {
"lodash": "https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js",
"library-a/lodash": "https://cdn.jsdelivr.net/npm/lodash@3.10.1/lodash.min.js"
}
}
</script>
ããã§ãimport _ from 'lodash';
ã¯ããŒãžã§ã³4.17.15ã䜿çšããlibrary-a
å
ã®ã³ãŒããimport _ from 'library-a/lodash';
ã䜿çšãããšããŒãžã§ã³3.10.1ã䜿çšãããŸãã
2. äŸåé¢ä¿ç®¡çã®ç°¡çŽ å
ã€ã³ããŒããããã¯ãã¢ãžã¥ãŒã«è§£æ±ºããžãã¯ãåäžã®å Žæã«éäžãããããšã§ãäŸåé¢ä¿ç®¡çãç°¡çŽ åããŸããããã«ãããç¹å®ã®ã·ããªãªã§ã¯è€éãªãã«ãããã»ã¹ãããã±ãŒãžãããŒãžã£ãŒãäžèŠã«ãªããç¹ã«å°èŠæš¡ãªãããžã§ã¯ãããããã¿ã€ãã«ãããŠãéçºãããç°¡åã§ã¢ã¯ã»ã¹ãããããªããŸãã
ã¢ãžã¥ãŒã«æå®åãšãã®ç©ççãªå Žæãåé¢ããããšã§ãã³ãŒãã倿ŽããããšãªãäŸåé¢ä¿ãç°¡åã«æŽæ°ã§ããŸããããã«ãããä¿å®æ§ãåäžããæŽæ°æã«ãšã©ãŒãçºçãããªã¹ã¯ãæžå°ããŸãã
3. ããã©ãŒãã³ã¹ã®åäž
ã€ã³ããŒããããã¯ããã©ãŠã¶ãCDNïŒã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒããçŽæ¥ã¢ãžã¥ãŒã«ããã§ããã§ããããã«ããããšã§ãããã©ãŒãã³ã¹ã®åäžã«è²¢ç®ã§ããŸããCDNã¯ããŠãŒã¶ãŒã«è¿ãå Žæã«ã³ã³ãã³ãããã£ãã·ã¥ããäžççã«åæ£ããããããã¯ãŒã¯ã§ãããé å»¶ãæžãããããŠã³ããŒãé床ãåäžãããŸããããã«ãè€éãªãã«ãããã»ã¹ãäžèŠã«ããããšã§ãã€ã³ããŒããããã¯ã¢ããªã±ãŒã·ã§ã³ã®åæèªã¿èŸŒã¿æéãççž®ã§ããŸãã
äŸïŒãã¹ãŠã®äŸåé¢ä¿ãåäžã®å€§ããªãã¡ã€ã«ã«ãã³ãã«ãã代ããã«ãã€ã³ããŒããããã䜿çšããŠCDNããåã ã®ã¢ãžã¥ãŒã«ãå¿ èŠã«å¿ããŠèªã¿èŸŒãããšãã§ããŸãããã®ã¢ãããŒãã¯ãç¹ã«ã€ã³ã¿ãŒãããæ¥ç¶ãé ããŠãŒã¶ãŒã«ãšã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®åæèªã¿èŸŒã¿æéãå€§å¹ ã«æ¹åã§ããŸãã
4. ã»ãã¥ãªãã£ã®åŒ·å
ã€ã³ããŒããããã¯ãäŸåé¢ä¿ã®å®å šæ§ãæ€èšŒããã¡ã«ããºã ãæäŸããããšã§ãã»ãã¥ãªãã£ã匷åã§ããŸããã€ã³ããŒããããã§ãµããªãœãŒã¹å®å šæ§ïŒSRIïŒããã·ã¥ã䜿çšããããšã§ããã§ãããããã¢ãžã¥ãŒã«ãæ¹ãããããŠããªãããšãä¿èšŒã§ããŸããSRIããã·ã¥ã¯ããã©ãŠã¶ãããŠã³ããŒãããããªãœãŒã¹ãæåŸ ãããã³ã³ãã³ããšäžèŽããããšãæ€èšŒã§ããæå·åãã£ã³ã¬ãŒããªã³ãã§ãã
äŸïŒ
<script type="importmap">
{
"imports": {
"lodash": "https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"
},
"integrity": {
"https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js": "sha384-ZjhEQh0yTDUwVfiuLd+J7sWk9/c6xM/HnJ+e0eJ7x/mJ3c8E+Jv1bWv6a+L7xP"
}
}
</script>
integrity
ã»ã¯ã·ã§ã³ã§ã¯ãåURLã®SRIããã·ã¥ãæå®ã§ããŸãããã©ãŠã¶ã¯ãããŠã³ããŒãããããã¡ã€ã«ãæäŸãããããã·ã¥ãšäžèŽããããšã確èªããæªæã®ããã³ãŒãã®å®è¡ãé²ããŸãã
5. ESã¢ãžã¥ãŒã«ãšã®ã·ãŒã ã¬ã¹ãªçµ±å
ã€ã³ããŒããããã¯ãJavaScriptã®æšæºã¢ãžã¥ãŒã«ã·ã¹ãã ã§ããESã¢ãžã¥ãŒã«ãšã·ãŒã ã¬ã¹ã«é£æºããããã«èšèšãããŠããŸããããã«ããããã§ã«ESã¢ãžã¥ãŒã«ã䜿çšããŠããæ¢åã®ãããžã§ã¯ãã«ã€ã³ããŒãããããç°¡åã«æ¡çšã§ããŸããæ¢åã®ã³ãŒãããŒã¹ãç Žå£ããããšãªããäŸåé¢ä¿ã段éçã«ã€ã³ããŒããããã«ç§»è¡ã§ããŸãã
6. æè»æ§ãšé©å¿æ§
ã€ã³ããŒããããã¯ãJavaScriptã®äŸåé¢ä¿ã管çããäžã§æ¯é¡ã®ãªãæè»æ§ãæäŸããŸããã³ãŒãã倿Žããããšãªããã©ã€ãã©ãªã®ç°ãªãããŒãžã§ã³ãç°¡åã«åãæ¿ããããç°ãªãCDNã䜿çšããããããã«ã¯ç¬èªã®ãµãŒããŒããã¢ãžã¥ãŒã«ãèªã¿èŸŒãã ãããããšãã§ããŸãããã®é©å¿æ§ã«ãããã€ã³ããŒããããã¯å¹ åºãWebéçºã·ããªãªã§äŸ¡å€ã®ããããŒã«ãšãªããŸãã
ã€ã³ããŒããããã®ãŠãŒã¹ã±ãŒã¹
ã€ã³ããŒããããã¯ãããŸããŸãªWebéçºã³ã³ããã¹ãã§é©çšå¯èœã§ããäžè¬çãªãŠãŒã¹ã±ãŒã¹ãããã€ã玹ä»ããŸãïŒ
1. ãããã¿ã€ãã³ã°ãšè¿ éãªéçº
ã€ã³ããŒããããã¯ãè€éãªãã«ãããã»ã¹ãäžèŠã«ãªãããããããã¿ã€ãã³ã°ãè¿ éãªéçºã«æé©ã§ãããã«ãããŒã«ã®èšå®ã«æéãè²»ããããšãªããããŸããŸãªã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãçŽ æ©ã詊ãããšãã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ã³ã¢æ©èœã«éäžããè¿ éã«ã€ãã¬ãŒã·ã§ã³ãè¡ãããšãã§ããŸãã
2. äžå°èŠæš¡ã®ãããžã§ã¯ã
äžå°èŠæš¡ã®ãããžã§ã¯ãã§ã¯ãã€ã³ããŒããããã¯åŸæ¥ã®ããã±ãŒãžãããŒãžã£ãŒã«ä»£ããç°¡çŽ åãããä»£æ¿ææ®µãæäŸã§ããŸããäŸåé¢ä¿ç®¡çãåäžã®å Žæã«éäžãããããšã§ãã€ã³ããŒããããã¯è€éãã軜æžããã³ãŒãããŒã¹ã®ä¿å®ã容æã«ããŸããããã¯ãäŸåé¢ä¿ã®æ°ãéãããŠãããããžã§ã¯ãã§ç¹ã«æçã§ãã
3. ã¬ã¬ã·ãŒã³ãŒãããŒã¹
ã€ã³ããŒããããã¯ãå€ãã¢ãžã¥ãŒã«ã·ã¹ãã ã«äŸåããã¬ã¬ã·ãŒã³ãŒãããŒã¹ãè¿ä»£åããããã«äœ¿çšã§ããŸããã¢ãžã¥ãŒã«ã段éçã«ESã¢ãžã¥ãŒã«ã«ç§»è¡ããã€ã³ããŒããããã䜿çšããŠäŸåé¢ä¿ã管çããããšã§ãã¢ããªã±ãŒã·ã§ã³å šäœãæžãçŽãããšãªãã¬ã¬ã·ãŒã³ãŒããææ°ã®ç¶æ ã«æŽæ°ã§ããŸããããã«ãããææ°ã®JavaScriptæ©èœãšããã©ãŒãã³ã¹æ¹åãæŽ»çšã§ããŸãã
4. ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒ
ã€ã³ããŒããããã¯ãã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒã§ã®ã¢ãžã¥ãŒã«ã®èªã¿èŸŒã¿ãæé©åããããã«äœ¿çšã§ããŸããã¢ãžã¥ãŒã«ããªã³ããã³ãã§èªã¿èŸŒãããšã«ãããã¢ããªã±ãŒã·ã§ã³ã®åæèªã¿èŸŒã¿æéãççž®ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããšãã§ããŸãããŸããã€ã³ããŒããããã¯ã倿°ã®ã¢ãžã¥ãŒã«ãæã€ããšãå€ãSPAã§ã®äŸåé¢ä¿ç®¡çã容æã«ããŸãã
5. ãã¬ãŒã ã¯ãŒã¯ã«äŸåããªãéçº
ã€ã³ããŒããããã¯ãã¬ãŒã ã¯ãŒã¯ã«äŸåããªããããã©ã®JavaScriptãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªãšã䜿çšã§ããŸããããã«ãããããŸããŸãªæè¡ãæ±ãWebéçºè ã«ãšã£ãŠå€ç®çãªããŒã«ãšãªããŸããReactãAngularãVue.jsããŸãã¯ãã®ä»ã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããå Žåã§ããã€ã³ããŒããããã¯äŸåé¢ä¿ããã广çã«ç®¡çããã®ã«åœ¹ç«ã¡ãŸãã
6. ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒ
äž»ã«ã¯ã©ã€ã¢ã³ããµã€ãã®æè¡ã§ãããã€ã³ããŒããããã¯ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒã®ã·ããªãªã«ã鿥çã«å©çãããããããšãã§ããŸãããµãŒããŒãšã¯ã©ã€ã¢ã³ãéã§äžè²«ããã¢ãžã¥ãŒã«è§£æ±ºãä¿èšŒããããšã«ãããã€ã³ããŒããããã¯ãã€ãã¬ãŒã·ã§ã³ãšã©ãŒãé²ããSSRã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªããã©ãŒãã³ã¹ãåäžãããã®ã«åœ¹ç«ã¡ãŸãã䜿çšããSSRãã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠã¯ãæ éãªæ€èšãšæ¡ä»¶ä»ãèªã¿èŸŒã¿ãå¿ èŠã«ãªãå ŽåããããŸãã
ã€ã³ããŒããããã®å®çšçãªäŸ
å®éã®ã·ããªãªã§ã€ã³ããŒããããã䜿çšããæ¹æ³ã«ã€ããŠãããã€ãã®å®çšçãªäŸãèŠãŠã¿ãŸãããïŒ
äŸ1ïŒãŠãŒãã£ãªãã£ã©ã€ãã©ãªã«CDNã䜿çšãã
ãããžã§ã¯ãã§æ¥ä»æäœã®ããã«date-fns
ã©ã€ãã©ãªã䜿çšããããšããŸããnpmã§ã€ã³ã¹ããŒã«ããŠãã³ãã«ãã代ããã«ãã€ã³ããŒããããã䜿çšããŠCDNããçŽæ¥èªã¿èŸŒãããšãã§ããŸãïŒ
<script type="importmap">
{
"imports": {
"date-fns": "https://cdn.jsdelivr.net/npm/date-fns@2.29.3/esm/index.js"
}
}
</script>
<script type="module">
import { format } from 'date-fns';
const today = new Date();
console.log(format(today, 'yyyy-MM-dd'));
</script>
ãã®ã³ãŒãã¹ããããã¯ãCDNããdate-fns
ã©ã€ãã©ãªãèªã¿èŸŒã¿ãçŸåšã®æ¥ä»ããã©ãŒãããããããã«äœ¿çšããŸããCDNã®å ŽæããçŽæ¥ã€ã³ããŒãããŠããããšã«æ³šæããŠãã ãããããã«ããããã«ãããã»ã¹ãç°¡çŽ åããããã©ãŠã¶ã¯åŸç¶ã®ãªã¯ãšã¹ãã®ããã«ã©ã€ãã©ãªããã£ãã·ã¥ã§ããŸãã
äŸ2ïŒããŒã«ã«ã¢ãžã¥ãŒã«ã®äœ¿çš
ã€ã³ããŒããããã䜿çšããŠãã¢ãžã¥ãŒã«æå®åãããŒã«ã«ãã¡ã€ã«ã«ãããã³ã°ããããšãã§ããŸãïŒ
<script type="importmap">
{
"imports": {
"my-custom-module": "/modules/my-custom-module.js"
}
}
</script>
<script type="module">
import { myFunction } from 'my-custom-module';
myFunction();
</script>
ãã®äŸã§ã¯ãmy-custom-module
æå®åã¯/modules/my-custom-module.js
ãã¡ã€ã«ã«ãããã³ã°ãããŸããããã«ãããã³ãŒããã¢ãžã¥ãŒã«ã«æŽçããESã¢ãžã¥ãŒã«ã®æ§æã䜿çšããŠããããèªã¿èŸŒãããšãã§ããŸãã
äŸ3ïŒããŒãžã§ã³ã®åºå®ãšCDNãã©ãŒã«ããã¯
æ¬çªç°å¢ã§ã¯ãäŸåé¢ä¿ãç¹å®ã®ããŒãžã§ã³ã«åºå®ããCDNãå©çšã§ããªãå Žåã«åããŠãã©ãŒã«ããã¯ã¡ã«ããºã ãæäŸããããšãéèŠã§ãïŒ
<script type="importmap">
{
"imports": {
"react": "https://cdn.jsdelivr.net/npm/react@18.2.0/umd/react.production.min.js",
"react-dom": "https://cdn.jsdelivr.net/npm/react-dom@18.2.0/umd/react-dom.production.min.js"
},
"scopes": {
"./": {
"react": "/local_modules/react.production.min.js",
"react-dom": "/local_modules/react-dom.production.min.js"
}
}
}
</script>
ããã§ã¯ãReactãšReactDOMãããŒãžã§ã³18.2.0ã«åºå®ããCDNãå©çšã§ããªãå Žåã«ã¯ããŒã«ã«ãã¡ã€ã«ãžã®ãã©ãŒã«ããã¯ãæäŸããŠããŸããscopes
ã»ã¯ã·ã§ã³ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãéšåã«å¯ŸããŠç°ãªããããã³ã°ãå®çŸ©ã§ããŸãããã®å ŽåãçŸåšã®ãã£ã¬ã¯ããªïŒ./
ïŒå
ã®ãã¹ãŠã®ã¢ãžã¥ãŒã«ã«å¯ŸããŠãCDNã倱æããå Žåã¯ããŒã«ã«ããŒãžã§ã³ã®ReactãšReactDOMã䜿çšããããã«æå®ããŠããŸãã
é«åºŠãªæŠå¿µãšèæ ®äºé
ã€ã³ããŒããããã¯æ¯èŒçç°¡åã«äœ¿çšã§ããŸãããçæãã¹ãé«åºŠãªæŠå¿µãšèæ ®äºé ãããã€ããããŸãïŒ
1. ã¹ã³ãŒã
åã®äŸã§ç€ºããããã«ãscopes
ã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãéšåã«ç°ãªããããã³ã°ãå®çŸ©ã§ããŸããããã¯ãã³ãŒãããŒã¹ã®ç°ãªãéšåã§åãã©ã€ãã©ãªã®ç°ãªãããŒãžã§ã³ã䜿çšããå¿
èŠãããå Žåã«äŸ¿å©ã§ãã`scopes`ãªããžã§ã¯ãã®ããŒã¯URLãã¬ãã£ãã¯ã¹ã§ãããã®ãã¬ãã£ãã¯ã¹ã§å§ãŸãURLãæã€ã¢ãžã¥ãŒã«å
ã®ã€ã³ããŒãã¯ããã®ã¹ã³ãŒãå
ã§å®çŸ©ããããããã³ã°ã䜿çšããŸãã
2. ãã©ãŒã«ããã¯ã¡ã«ããºã
CDNãå©çšã§ããªãå Žåã«åããŠããã©ãŒã«ããã¯ã¡ã«ããºã ãèšããããšãéèŠã§ããããã¯ã代æ¿URLãæäŸããããç¬èªã®ãµãŒããŒããã¢ãžã¥ãŒã«ãèªã¿èŸŒãã ãããããšã§å®çŸã§ããŸããscopes
æ©èœã¯ããããå®çŸããããã®åªããæ¹æ³ãæäŸããŸããã¢ããªã±ãŒã·ã§ã³ã®éçšäžã®å埩åãæ
éã«æ€èšããŠãã ãããéèŠãªCDNãããŠã³ããå Žåã«äœãèµ·ããã§ããããïŒ
3. ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
転éäžã«ãã§ãããããã¢ãžã¥ãŒã«ãæ¹ãããããªãããã«ãCDNã®URLã«ã¯åžžã«HTTPSã䜿çšããŠãã ãããäŸåé¢ä¿ã®å®å šæ§ãæ€èšŒããããã«SRIããã·ã¥ã䜿çšããããšãæ€èšããŠãã ããããµãŒãããŒãã£ã®CDNã䜿çšããéã®ã»ãã¥ãªãã£äžã®åœ±é¿ã«æ³šæããŠãã ããã
4. ãã©ãŠã¶ã®äºææ§
ã€ã³ããŒããããã¯ãChromeãFirefoxãSafariãEdgeãªã©ãã»ãšãã©ã®ææ°ãã©ãŠã¶ã§ãµããŒããããŠããŸãããã ããå€ããã©ãŠã¶ã§ã¯ãã€ãã£ãã«ãµããŒããããŠããªãå ŽåããããŸãããã®ãããªå Žåã¯ãããªãã£ã«ã䜿çšããŠå€ããã©ãŠã¶ã§ã€ã³ããŒããããã®ãµããŒããæäŸã§ããŸããææ°ã®äºææ§æ å ±ã«ã€ããŠã¯caniuse.comã確èªããŠãã ããã
5. éçºã¯ãŒã¯ãããŒ
ã€ã³ããŒããããã¯äŸåé¢ä¿ç®¡çãç°¡çŽ åã§ããŸãããæç¢ºãªéçºã¯ãŒã¯ãããŒãæŽåããããšãéèŠã§ãães-module-shims
ã®ãããªããŒã«ã䜿çšããŠãç°ãªããã©ãŠã¶éã§äžè²«ããéçºäœéšãæäŸããããšãæ€èšããŠãã ããããã®ããŒã«ã¯ãã¢ãžã¥ãŒã«ã·ãã³ã°ãåçã€ã³ããŒããµããŒããªã©ã®æ©èœãæå¹ã«ããŸãã
6. ã¢ãžã¥ãŒã«æå®åã®è§£æ±º
ã€ã³ããŒããããã¯ãäž»ã«2ã€ã®åœ¢åŒã®ã¢ãžã¥ãŒã«æå®åãæäŸããŸãïŒãã¢ã¢ãžã¥ãŒã«æå®åïŒäŸïŒ'lodash'ïŒãšçžå¯ŸURLæå®åïŒäŸïŒ'./my-module.js'ïŒã§ãããããã®éããšã€ã³ããŒãããããããããã©ã®ããã«è§£æ±ºããããçè§£ããããšã¯ã广çãªäŸåé¢ä¿ç®¡çã«ãšã£ãŠäžå¯æ¬ ã§ãããã¢ã¢ãžã¥ãŒã«æå®åã¯ãã€ã³ããŒããããã®`imports`ã»ã¯ã·ã§ã³ã䜿çšããŠè§£æ±ºãããŸããçžå¯ŸURLæå®åã¯ãã¹ã³ãŒãã«ãã£ãŠäžæžããããªãéããçŸåšã®ã¢ãžã¥ãŒã«ã®URLãåºæºã«è§£æ±ºãããŸãã
7. åçã€ã³ããŒã
ã€ã³ããŒããããã¯ãåçã€ã³ããŒãïŒimport()
ïŒãšã·ãŒã ã¬ã¹ã«é£æºããŸããããã«ããããªã³ããã³ãã§ã¢ãžã¥ãŒã«ãèªã¿èŸŒãããšãã§ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãããã«æé©åã§ããŸããåçã€ã³ããŒãã¯ããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãåŠçããã¢ãžã¥ãŒã«ããã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®éšåã§ã®ã¿äœ¿çšãããã¢ãžã¥ãŒã«ãªã©ãç¹å®ã®ç¶æ³ã§ã®ã¿å¿
èŠãªã¢ãžã¥ãŒã«ãèªã¿èŸŒãã®ã«ç¹ã«äŸ¿å©ã§ãã
åŸæ¥ã®äŸåé¢ä¿ç®¡çãšã®æ¯èŒ
JavaScriptã«ãããåŸæ¥ã®äŸåé¢ä¿ç®¡çã¯ãéåžžãnpmãyarnã®ãããªããã±ãŒãžãããŒãžã£ãŒãšãwebpackãParcelã®ãããªãã«ãããŒã«ã䌎ããŸãããããã®ããŒã«ã¯åŒ·åã§åºã䜿çšãããŠããŸãããè€éããšãªãŒããŒããããããããããšããããŸããã€ã³ããŒãããããšåŸæ¥ã®äŸåé¢ä¿ç®¡çã¢ãããŒããæ¯èŒããŠã¿ãŸãããïŒ
æ©èœ | åŸæ¥ã®äŸåé¢ä¿ç®¡çïŒnpm, webpackïŒ | ã€ã³ããŒãããã |
---|---|---|
è€éã | é«ïŒèšå®ãšãã«ãããã»ã¹ãå¿ èŠïŒ | äœïŒã·ã³ãã«ãªJSONèšå®ïŒ |
ããã©ãŒãã³ã¹ | ã³ãŒãåå²ãšããªãŒã·ã§ã€ãã³ã°ã§æé©åå¯èœ | CDN䜿çšã«ããããã©ãŒãã³ã¹åäžã®å¯èœæ§ |
ã»ãã¥ãªã㣠| ããã±ãŒãžã®å®å šæ§ãã§ãã¯ãšè匱æ§ã¹ãã£ã³ã«äŸå | SRIããã·ã¥ã§åŒ·åå¯èœ |
æè»æ§ | ã¢ãžã¥ãŒã«è§£æ±ºã®æè»æ§ãéå®ç | ã¢ãžã¥ãŒã«è§£æ±ºã®æè»æ§ãé«ã |
åŠç¿æ²ç· | æ¥ãªåŠç¿æ²ç· | ç·©ãããªåŠç¿æ²ç· |
ã芧ã®ãšãããã€ã³ããŒããããã¯ç¹å®ã®ã·ããªãªã«ãããŠãåŸæ¥ã®äŸåé¢ä¿ç®¡çãããã·ã³ãã«ã§æè»ãªä»£æ¿ææ®µãæäŸããŸãããã ããã€ã³ããŒããããããã¹ãŠã®å Žåã«ãããŠããã±ãŒãžãããŒãžã£ãŒããã«ãããŒã«ã®ä»£æ¿ãšãªãããã§ã¯ãªãããšã«æ³šæããããšãéèŠã§ããå€§èŠæš¡ã§è€éãªãããžã§ã¯ãã§ã¯ãäŸç¶ãšããŠåŸæ¥ã®äŸåé¢ä¿ç®¡çãæšå¥šãããã¢ãããŒããããããŸããã
ã€ã³ããŒããããã®æªæ¥
ã€ã³ããŒããããã¯æ¯èŒçæ°ããæè¡ã§ãããWebéçºã®æªæ¥ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ãç§ããŠããŸãããã©ãŠã¶ãã€ã³ããŒããããã®ãµããŒããæ¹åãç¶ããéçºè ããã®æ©èœã«æ £ã芪ããã«ã€ããŠãããŸããŸãªWebéçºã·ããªãªã§ã€ã³ããŒããããã®æ¡çšãåºããããšãæåŸ ãããŸããæšæºåããã»ã¹ã¯é²è¡äžã§ãããå°æ¥çã«ã¯ã€ã³ããŒãããã仿§ã®ãããªã匷åãæ¹è¯ãèŠããããããããŸããã
ããã«ãã€ã³ããŒããããã¯æ¬¡ã®ãããªWebã¢ããªã±ãŒã·ã§ã³éçºã®æ°ããã¢ãããŒããžã®éãéããŠããŸãïŒ
- ã¢ãžã¥ãŒã«ãã§ãã¬ãŒã·ã§ã³ïŒç°ãªãã¢ããªã±ãŒã·ã§ã³ãå®è¡æã«ã³ãŒããå ±æã§ããããã«ããæè¡ã§ããã€ã³ããŒããããã¯ããã§ãã¬ãŒã·ã§ã³ãããã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ã管çããäžã§éèŠãªåœ¹å²ãæããããšãã§ããŸãã
- ãŒãã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³éçºïŒã€ã³ããŒããããã¯ãè€éãªãã«ãèšå®ãäžèŠã«ããããšã§ãããåçåãããéçºäœéšãå¯èœã«ããããšãã§ããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®åäžïŒäŸåé¢ä¿ãäžå€®éæš©çãã€ééçãªæ¹æ³ã§ç®¡çããããšã«ãããã€ã³ããŒããããã¯éçºè éã®ã³ã©ãã¬ãŒã·ã§ã³ãåäžãããããšãã§ããŸãã
çµè«
JavaScriptã€ã³ããŒããããã¯ãWebã¢ããªã±ãŒã·ã§ã³ã«ãããã¢ãžã¥ãŒã«è§£æ±ºãšäŸåé¢ä¿ç®¡çã®å€§ããªé²æ©ã象城ããŠããŸãããã现ããå¶åŸ¡ãæäŸããäŸåé¢ä¿ç®¡çãç°¡çŽ åããããã©ãŒãã³ã¹ãåäžãããããšã«ãããã€ã³ããŒããããã¯åŸæ¥ã®ã¢ãããŒãã«ä»£ããé åçãªéžæè¢ãæäŸããŸãããã¹ãŠã®ãããžã§ã¯ãã«é©ããŠããããã§ã¯ãããŸããããã€ã³ããŒããããã¯ãJavaScriptã®äŸåé¢ä¿ãããæè»ãã€å¹ççã«ç®¡çããæ¹æ³ãæ±ããéçºè ã«ãšã£ãŠäŸ¡å€ã®ããããŒã«ã§ãã
ã€ã³ããŒããããã®äžçãæ¢æ±ããéã«ã¯ããããžã§ã¯ãã®ç¹å®ã®ããŒãºãèæ ®ããèŠä»¶ã«æãé©ããã¢ãããŒããéžæããããšãå¿ããªãã§ãã ãããæ éãªèšç»ãšå®è£ ã«ãããã€ã³ããŒããããã¯ããå ç¢ã§ã髿§èœã§ãä¿å®ããããWebã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«åœ¹ç«ã¡ãŸãã
å®è·µçãªæŽå¯ïŒ
- 次ã®å°èŠæš¡ãããžã§ã¯ãããããã¿ã€ãã§ã€ã³ããŒããããã詊ããŠã¿ãŠãã ããã
- ã¬ã¬ã·ãŒã³ãŒãããŒã¹ãè¿ä»£åããããã«ã€ã³ããŒããããã®äœ¿çšãæ€èšããŠãã ããã
- äŸåé¢ä¿ã®ã»ãã¥ãªãã£ã匷åããããã«SRIããã·ã¥ã®äœ¿çšãæ¢æ±ããŠãã ããã
- ã€ã³ããŒããããæè¡ã®ææ°ååãåžžã«ææ¡ããŠãããŸãããã
ã€ã³ããŒãããããåãå ¥ããããšã§ãWebã¢ããªã±ãŒã·ã§ã³éçºã®æ°ããªå¯èœæ§ãè§£ãæŸã¡ãçã«åè¶ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåµé ããããšãã§ããŸãã