जावास्क्रिप्ट फ़ाइलों पर मॉड्यूल.exports की घोषणा करने के लिए कहाँ


11

क्या कोई सम्मेलन है जहाँ हमें module.exportsकोई जावास्क्रिप्ट / Node.js मॉड्यूल फ़ाइलों की घोषणा नहीं करनी चाहिए ?

क्या यह फ़ाइल की शुरुआत में होना चाहिए जैसे:

module.exports = Foo;

function Foo() {
    this.bar = 'bar';
}

Foo.prototype.getBar = function() {
    return this.bar;
}

या यह फ़ाइल के अंत में होना चाहिए:

function Foo() {
    this.bar = 'bar';
}

Foo.prototype.getBar = function() {
    return this.bar;
}

module.exports = Foo;

मुझे पता है कि कोई तकनीकी अंतर नहीं है। पहला उदाहरण घोषणा के उत्थापन के कारण पूरी तरह से मान्य है ।

इसलिए मैं सोच रहा था कि क्या किसी प्रकार की सर्वोत्तम प्रथाएं हैं।


इसे अंत में छोड़ने का एक फायदा यह है कि आप फ़ंक्शन ऑब्जेक्ट ( var Foo = function()...) का उपयोग कर सकते हैं , और फिर भी इसे घोषित करने का एक और तरीका सीधे ( module.exports.Foo = function()...) है।
मार्सेलो

मैं बस कर सकता था var Foo = function Foo()...और यह भी काम करेगा।
हेनरिक बार्लेसोस

इसे सबसे ऊपर रखने का लाभ: आप अपने मॉड्यूल के एपीआई को एक नज़र में देख सकते हैं (नीचे स्क्रॉल किए बिना)।
एडम ज़ेरनर

जवाबों:


4

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

सबसे महत्वपूर्ण बात, हमेशा की तरह, सुसंगत होना। और अपनी टीम में लगातार बने रहें।

संपादित करें: इसी धारणा पर, मुझे requireशुरुआत में सभी कथन पसंद हैं । मेरी Node.js फाइलें हमेशा इस तरह दिखती हैं:

"use strict";

const fs = require("fs");
const MyClass = require("./MyClass");


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

कुछ भी नहीं फैंसी, जिस तरह से आप यह उम्मीद करेंगे। एक फ़ाइल प्रति वर्ग, एक फ़ाइल प्रति कक्षा। उन फ़ाइलों के नाम जिन्हें वे सम्‍मिलित करते हैं, जिनमें ऊपरी / निचली श्रेणी के होते हैं। इस नोड मॉड्यूल पर एक नज़र डालें, कुछ उदाहरणों के लिए: yaioc (अस्वीकरण: मैं लेखक हूं, और यह बेशर्म विज्ञापन है)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.