ImEx.js आपके कोड को सजाएगा

क्या आपने JS का उपयोग करके बड़ी परियोजनाएं लिखी हैं? क्या आपके पास ऑब्जेक्ट ऑब्जेक्ट्स में कई ऑब्जेक्ट हैं (जैसे LIB.Module.object.param)? मेरे पास अक्सर यह होता था और यह काफी असुविधा और एक खराब तरह का कोड होता था। इसी तरह, अक्सर गुमनाम कार्यों का उपयोग करना पड़ता था, वे बहुत साफ नहीं दिखते हैं।

ImEx.js


मैं समस्या का कुछ बहुत ही सरल और साफ समाधान चाहता था। ऐसा हुआ कि जिस प्रोजेक्ट पर मैं काम कर रहा हूं, उसमें नोड.जेएस पर एक मॉड्यूल है जो सभी .js फाइलों को एक बिल्ड.js में एकत्रित करता है। और यहां यह विचार आया कि क्यों न एक प्री-प्रोसेसर जोड़ा जाए जो इनपुट कोड को थोड़ा संशोधित करता है, जिससे आप गैर-मानक फ़ंक्शन (हल्के कॉफीस्क्रिप्ट या टाइपस्क्रिप्ट) बना सकते हैं। तो एक छोटे से प्रीप्रोसेसर ImEx.js था

लक्ष्य


लंबे डिजाइन से बचें

मान लीजिए कि हमारे पास तीन इकाइयाँ हैं World, World.Animal, World.animals.Dog, आइए कल्पना करें कि यह शुद्ध JS में कैसी दिखेगी:

// World.js var World = { animals: {} }; 

 // Animal.js World.Animal = function ( name, legNum ) { this.name = name; this.legNum = legNum; }; 

 // Dog.js World.animals.Dog = function () { this.barking = false; }; World.animals.Dog.prototype = Object.create( World.Animal ); World.animals.Dog.prototype.bark = function () { this.barking = true; }; World.animals.Dog.prototype.stopBark = function () { this.barking = false; }; 


यदि आप ImEx.js का उपयोग करते हैं, तो कोड इस तरह दिखेगा:

 // World.js namespace Global; export World = { animals: {} }; 

 // Animal.js namespace World; export Animal = function ( name, legNum ) { this.name = name; this.legNum = legNum; }; 

 // Dog.js namespace World.animals; import World.Animal; export Dog = function () { this.barking = false; }; Dog.prototype = Object.create( Animal ); Dog.prototype.bark = function () { this.barking = true; }; Dog.prototype.stopBark = function () { this.barking = false; }; 


तीन निर्देश जोड़े गए: 'नाम स्थान', 'आयात', 'निर्यात'। सब कुछ इतना सरल है कि मुझे लगता है कि इसके लिए किसी स्पष्टीकरण की आवश्यकता नहीं है।

प्रतिरूपकता को अधिक स्पष्ट करें

यह आयात, निर्यात निर्देशों का उपयोग करके प्राप्त किया जाता है।

अनाम कार्यों से पूरी तरह बचें, लेकिन उनके फायदे हैं

यदि आप कार्यान्वयन में देरी करते हैं, तो प्रत्येक मॉड्यूल एक अनाम फ़ंक्शन में बदल जाता है और सभी चर जो आयात या निर्यात उपसर्ग द्वारा इंगित नहीं किए जाते हैं वे वैश्विक नहीं बनते हैं। यह वही है जो हम हासिल करना चाहते थे।

पूरा होने पर

मुझे लगता है कि ऐसा ही कुछ पहले से मौजूद है और अगर कोई तुलना के लिए उंगली उठाता है तो मैं आभारी रहूंगा।

यहां कोड खुला है।
स्थापित करने के लिए आसान: npm स्थापित imex -g
उदाहरणों के साथ एक अधिक पूर्ण स्थापना और प्रारंभ निर्देश रीडमी में है

Source: https://habr.com/ru/post/In225847/


All Articles