Mga Module sa JavaScript
Ipinaliliwanag ng artikulong ito ang mga module sa JavaScript.
YouTube Video
Mga Module sa JavaScript
Ang mga module sa JavaScript ay isang paraan upang ayusin ang code at hatiin ito sa mga bahagi na maaaring muling magamit. Sa pamamagitan ng paggamit ng mga module, napapabuti ang pagbabasa at pagpapanatili ng code, at maaaring magamit muli ang parehong functionality sa iba pang mga proyekto. Dito namin ipinaliliwanag ang iba't ibang sistema ng module, mula sa konsepto ng mga module hanggang sa tiyak na mga halimbawa ng paggamit.
Ang Konsepto ng mga Module sa JavaScript
Walang orihinal na modular system ang JavaScript. Gayunpaman, habang lumalaki ang mga aplikasyon, naging mahalaga ang modularization upang hatiin ang code sa mga mas maliit na yunit para sa muling paggamit. Ang isang module ay isang bahagi ng code na may tiyak na function na maaaring pamahalaan nang nakapag-iisa mula sa ibang code, na nagpapahintulot nito na mahati sa maraming file.
Pangunahing Mga Uri ng Module
Mayroong iba't ibang mga sistema ng module sa JavaScript. Ang pinakakaraniwang mga ito ay ang ES Modules (ESM) at CommonJS.
-
ES Modules ay isang sistema ng module na ipinakilala sa ECMAScript 2015 (ES6), na nagde-define ng mga module gamit ang mga keyword na
import
atexport
. Ang sistemang ito ay malawakang ginagamit kapwa sa panig ng kliyente (mga browser) at sa panig ng server (Node.js). -
Ang CommonJS ay isang sistema ng module na pangunahing ginagamit sa Node.js. Ang mga module ay tinutukoy gamit ang
require
atmodule.exports
upang mag-import at mag-export ng mga file.
Mga Detalye ng ES Modules (ESM)
Ang ES Modules ay ang standard na sistema ng module sa JavaScript, na nagpapadali sa pagpapalitan ng mga functionality sa pagitan ng mga module. Sa mga browser at Node.js, ginagamit ang sistemang ito upang tukuyin at mag-import ng mga module.
export
at import
Ang export
ay isang keyword para ipakita ang mga functionality ng isang module sa labas. Ang import
ay ginagamit upang isama ang mga functionality na tinukoy sa ibang mga module.
Halimbawa: Pag-export ng Module
Maaaring i-export ang mga module sa ES Modules
tulad ng sumusunod.
1// math.mjs
2export function add(a, b) {
3 return a + b;
4}
5export function subtract(a, b) {
6 return a - b;
7}
Sa module na math.mjs
, ang mga function na add
at subtract
ay na-export. Ang mga function na ito ay maaaring i-import mula sa ibang mga module.
Dito, ang .mjs
ay isang file extension na malinaw na nagpapahiwatig ng JavaScript file na nasa ES Modules format. Sa Node.js, ang file extension ang nagsasabi kung ito ay CommonJS
o ES Modules
. Gayunpaman, kapag ang type: "module"
ay tinukoy sa package.json
, ang mga file na may .js
extension ay awtomatikong itinuturing na ES Modules
.
Halimbawa: Module Import
Maaaring i-import ang mga module sa ES Modules
tulad ng sumusunod.
1// main.mjs
2import { add, subtract } from './math.mjs';
3
4console.log(add(3, 5)); // 8
5console.log(subtract(10, 7)); // 3
Sa ganitong paraan, gamit ang import
, madali mong magagamit ang mga function na tinukoy sa ibang mga file.
Default Export at Named Export
Mayroong dalawang paraan ng pag-e-export para sa mga module. Ang isa ay named export, at ang isa pa ay default export.
- Ang named exports ay ginagamit kapag nag-e-export ng maraming mga function o variable mula sa isang module. Maaari kang mag-perform ng maramihang export, at sa pag-import, natatanggap mo ito gamit ang itinakdang mga pangalan.
1// utils.mjs
2export function sum(a, b) {
3 return a + b;
4}
5export function multiply(a, b) {
6 return a * b;
7}
1// main.mjs
2import { sum, multiply } from './utils.mjs';
3
4console.log(sum(4, 6)); // 10
5console.log(multiply(3, 5)); // 15
- Ang default export ay ginagamit kapag nag-e-export ng isang function o class mula sa isang module. Sa pag-import, maaari itong tanggapin gamit ang anumang pangalan.
1// greet.mjs
2export default function greet() {
3 return "Hello, World!";
4}
1// main.mjs
2import greet from './greet.mjs';
3
4console.log(greet()); // "Hello, World!"
Isang default export lamang ang posible, ngunit ang named exports ay maaaring mag-export ng maraming elemento nang sabay-sabay.
Halimbawa ng paggamit sa panig ng kliyente (browser).
Halimbawa: Pag-export ng Module
Maaaring i-export ang mga module sa ES Modules
tulad ng sumusunod.
1// utils.js
2export function sum(a, b) {
3 return a + b;
4}
5export function multiply(a, b) {
6 return a * b;
7}
Sa module na utils.js
, ang mga function na sum
at multiply
ay na-export.
Halimbawa: Module Import
Maaaring i-import ang mga module sa panig ng kliyente tulad ng sumusunod.
1<!DOCTYPE html>
2<html lang="ja">
3<head>
4 <meta charset="UTF-8">
5 <title>ES Modules Sample in HTML</title>
6</head>
7<body>
8 <h1>ES Modules Sample</h1>
9 <div id="result"></div>
10
11 <script type="module">
12 import { sum, multiply } from './utils.js';
13
14 const result = `
15 <p>sum(3, 5) = ${sum(3, 5)}</p>
16 <p>multiply(10, 7) = ${multiply(10, 7)}</p>
17 `;
18
19 document.getElementById('result').innerHTML = result;
20 console.log(sum(3, 5)); // 8
21 console.log(multiply(10, 7)); // 70
22 </script>
23</body>
24</html>
- Sa pag-set ng
type
attribute ng<script>
tag bilangmodule
, maaaring gamitin ang ES module syntax tulad ngimport
atexport
sa loob ng HTML. - Ang
import
statement ay naglo-load ng external nautils.js
at ipinapakita ang resulta.
Mga Detalye ng CommonJS
Ang CommonJS ay isang module system na pangunahing ginagamit sa Node.js. Ang mga module ay ine-export at ina-import gamit ang module.exports
at require
.
require
at module.exports
Sa CommonJS, ginagamit ang module.exports
para mag-export ng mga module. Ginagamit din ang require
upang magamit ang mga module mula sa ibang mga file.
Halimbawa: Pag-export ng Module
Maaaring i-export ang mga module sa CommonJS
tulad ng sumusunod.
1// math.js
2module.exports = {
3 add: function(a, b) {
4 return a + b;
5 },
6 subtract: function(a, b) {
7 return a - b;
8 }
9};
Halimbawa: Module Import
Maaaring i-import ang mga module sa CommonJS
tulad ng sumusunod.
1// main.js
2const math = require('./math.js');
3
4console.log(math.add(4, 7)); // 11
5console.log(math.subtract(9, 2)); // 7
Sa Node.js, ang CommonJS ang ginagamit bilang default na module system, ngunit sinusuportahan din ang ES Modules.
Dynamic Import
Sa JavaScript, ang mga module ay maaaring i-import nang dynamic gamit ang import()
. Gumagamit ang paraan na ito ng asynchronous processing upang ma-load ang mga module kapag kinakailangan.
Maaaring gawin ang dynamic na import tulad ng sumusunod.
1async function loadModule() {
2 const math = await import('./math.js');
3 console.log(math.add(5, 3)); // 8
4}
5
6loadModule();
Ang dynamic import ay isang paraan upang mapahusay ang performance ng application. Dahil maaari kang mag-load ng mga module ayon sa pangangailangan sa halip na i-load lahat sa unang pag-load, pinapabilis nito ang bilis ng pagpapakita ng pahina.
Mga Bentahe ng Mga Module
-
Pagagamit Muli ng Kodigo
- Maaaring magamit muli ang modularized na kodigo sa ibang mga proyekto. Sa pamamagitan ng paggawa ng mga module na may karaniwang mga functionality at paggamit sa mga ito sa iba't ibang aplikasyon, ang kahusayan ng pag-develop ay lubos na napabubuti.
-
Pinahusay na Kakayahang Mapanatili
- Sa paghahati ng kodigo sa mga module, mas madali ang baguhin ang mga partikular na tampok o bahagi. Ang pamamahala sa code sa maliliit na yunit ay nagiging mas madali ang paghahanap at pag-aayos ng mga bug.
-
Pag-iwas sa Pagkakabanggaan ng mga Namespace
- Ang pagdeklara ng maraming mga variable at function sa global scope ay maaaring magdulot ng pagkakabanggaan ng pangalan, ngunit naiiwasan ito ng modularization at nakakatulong mapanatiling malinis ang codebase.
-
Pamamahala ng Dependency
- Ang paggamit ng mga module ay nagbibigay-daan upang malinaw na pamahalaan ang mga dependency ng isang aplikasyon. Nagiging malinaw kung aling module ang umaasa sa ibang mga module, na ginagawang mas madaling maintindihan ang istruktura ng code.
Buod
Ang module system ng JavaScript ay isang makapangyarihang paraan upang ayusin ang code at hatiin ito sa mga reusable na bahagi. Sa pamamagitan ng pag-unawa sa mga pagkakaiba ng ES Modules at CommonJS at pagpili ng angkop na module system batay sa proyekto, maaari mong mapabuti ang pagbabasa at pagpapanatili ng code. Bukod dito, sa pamamagitan ng paggamit ng dynamic imports, maaari mong i-optimize ang performance ng aplikasyon.
Gamitin natin ang module system upang makagawa ng mas scalable at episyenteng JavaScript applications.
Maaari mong sundan ang artikulo sa itaas gamit ang Visual Studio Code sa aming YouTube channel. Paki-check din ang aming YouTube channel.