อนุสัญญาไปยังที่ที่จะประกาศ module.exports ในไฟล์ Javascript


11

มีวิธีการที่เราควรประกาศmodule.exportsไฟล์โมดูล Javascript / 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()...)
Marcelo

ฉันทำได้var Foo = function Foo()...และมันก็ใช้ได้เหมือนกัน
Henrique Barcelos

ข้อดีของการวางไว้ที่ด้านบน: คุณสามารถดู API ของโมดูลได้อย่างรวดเร็ว (โดยไม่ต้องเลื่อนลง)
Adam Zerner

คำตอบ:


4

มีตัวเลือกมากมายและจำนวนมากซึ่งทุกคนนิยมใช้กันอย่างแพร่หลาย แต่มันน่ารำคาญมาก ฉันชอบที่จะวางไว้ที่ปลายเพราะทำงานภายใต้สถานการณ์ทั้งหมด เมื่อใดก็ตามที่ฉันพบว่าตัวเองทำสิ่งที่แฟนซีด้วยโมดูลส่งออกอาจมีวิธีที่ดีกว่าที่จะทำ

ที่สำคัญที่สุดคือเสมอกัน และสอดคล้องในทีมของคุณ

แก้ไข: ในความคิดเดียวกันฉันชอบที่จะมีrequireงบทั้งหมดที่จุดเริ่มต้น ไฟล์ Node.js ของฉันมีลักษณะเช่นนี้เสมอ:

"use strict";

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


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

ไม่มีอะไรแฟนซีเพียงอย่างที่คุณคาดหวัง หนึ่งคลาสต่อไฟล์หนึ่งไฟล์ต่อคลาส ไฟล์ที่ถูกตั้งชื่อหลังจากคลาสที่พวกเขามีโดยประกอบด้วยการเพิ่ม / ลดระดับ ลองดูที่โมดูลโหนดนี้สำหรับตัวอย่าง: yaioc (ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียนและนี่คือการโฆษณาที่ไร้ยางอาย)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.