ES मॉड्यूल के स्टैटिक विश्लेषण का लाभ उठाकर और ज़हरीले बैरल तथा सर्कुलर निर्भरताओं से बचकर अपने प्रोजेक्ट संरचित करें।
इस पाठ को Kodokon में खोलेंES मॉड्यूल स्टैटिक होते हैं: import और export स्टेटमेंट फ़ाइल के पार्स होते समय हल होते हैं, किसी भी कोड के चलने से पहले। यही चीज़ ट्री-शेकिंग (उस कोड को हटाना जो कभी import नहीं होता) और बिल्ड टाइम पर नामकरण की गलतियाँ पकड़ना संभव बनाती है। नेम्ड एक्सपोर्ट या डिफ़ॉल्ट एक्सपोर्ट? नेम्ड एक्सपोर्ट लगभग हर मोर्चे पर जीतते हैं: रीफ़ैक्टर-अनुकूल रीनेमिंग, भरोसेमंद ऑटोकम्प्लीशन, और एक ही चीज़ को दस अलग-अलग नामों से import करने की कोई गुंजाइश नहीं। डिफ़ॉल्ट को उस स्थिति के लिए बचाकर रखें जहाँ मॉड्यूल एक स्पष्ट चीज़ एक्सपोर्ट करता है।
export const TAX_RATE = 0.2;
export function applyTax(price) {
return price * (1 + TAX_RATE);
}
export default class Cart {
items = [];
add(item) {
this.items.push(item);
return this;
}
}उपभोग करने वाले पक्ष पर, चार रूप: नेम्ड import (as के ज़रिए वैकल्पिक उपनाम के साथ), डिफ़ॉल्ट import, नेमस्पेस import (* as), और डायनैमिक import import(), जो किसी नेमस्पेस का प्रॉमिस लौटाता है। यह अंतिम वाला कोड स्प्लिटिंग का बुनियादी घटक है: किसी भारी मॉड्यूल (एडिटर, चार्ट, PDF) को ठीक उसी क्षण लोड करें जब उपयोगकर्ता को उसकी सचमुच ज़रूरत हो।
import Cart, { applyTax, TAX_RATE } from "./cart.js";
import * as cartModule from "./cart.js";
console.log(applyTax(100), TAX_RATE); // 120 0.2
console.log(cartModule.TAX_RATE); // 0.2
const lazy = await import("./cart.js");
const cart = new lazy.default();
console.log(cart instanceof Cart); // trueसंगठन के लिए, तकनीकी प्रकार (controllers/, helpers/) के बजाय फ़ीचर के अनुसार (features/cart/, features/auth/) विभाजन को प्राथमिकता दें: जो कोड साथ बदलता है वह साथ रहता है, और किसी फ़ीचर को हटाने का मतलब है एक फ़ोल्डर मिटा देना। हर फ़ीचर को एक संकीर्ण एंट्री पॉइंट के ज़रिए उजागर करें और उस एंट्री पॉइंट को दरकिनार करने वाले किसी भी import को सीमा-उल्लंघन मानें।
import("./module.js") अभिव्यक्ति क्या लौटाती है?