แบบแผนการตั้งชื่อไฟล์ javascript คืออะไร? [ปิด]


283

ควรตั้งชื่อไฟล์ some-with-hyphens.js, camelCased.js หรืออย่างอื่น?

ฉันไม่พบคำตอบสำหรับคำถามนี้ที่นี่


2
หลักการตั้งชื่อที่ดีคือตั้งชื่อไฟล์ตามที่คุณเห็นเอนทิตีนั้นในรหัส ชั้นจะไปในMyPlugin ส่วนประกอบตอบสนองจะไปใน devs อื่น ๆ จะต้องนำเข้า / 'ของคุณเย็นโมดูล' และใช้สัญลักษณ์หลายรายการจากมันเพื่อให้ชื่อมัน -MyPlugin.jsMenuItemMenuItem.jscool-module.js
Dan Dascalescu

1
โพสต์นี้ไม่ได้เป็นตัวเลือก ในความเป็นจริงมันเป็นสิ่งสำคัญ ที่นี่คุณมีคำแนะนำที่ทำโดย Google - google.github.io/styleguide/jsguide.html#file-name (คู่มือสไตล์ Google JavaScript)
zwitterion

คำตอบ:


184

ระเบียบการตั้งชื่อที่เป็นไปได้ข้อหนึ่งคือใช้สิ่งที่คล้ายกับรูปแบบการตั้งชื่อ jQuery ใช้ มันไม่ได้นำมาใช้ในระดับสากล แต่เป็นเรื่องธรรมดา

product-name.plugin-ver.sion.filetype.js

ที่product-name+ pluginคู่ยังสามารถเป็นตัวแทนของnamespaceและโมดูล versionและfiletypeมักจะมีตัวเลือก

filetypeสามารถเป็นสิ่งที่สัมพันธ์กับเนื้อหาของไฟล์ มักจะเห็นคือ:

  • min สำหรับไฟล์ที่ย่อเล็กสุด
  • custom สำหรับไฟล์ที่สร้างหรือแก้ไขเอง

ตัวอย่าง:

  • jquery-1.4.2.min.js
  • jquery.plugin-0.1.js
  • myapp.invoice.js

31
ฉันเห็นด้วยกับสิ่งที่คุณพูด แต่มีสิ่งหนึ่งที่ฉันกำลังดิ้นรนอยู่ในขณะนี้: ถ้าปลั๊กอิน 'มีสองคำ แยกพวกมันด้วยจุดหรือไม่ jquery.myPlugin-1.0.0.js หรือ jquery.my.plugin-1.0.0.js หรือ jquery.my_plugin-1.0.0.js หรือ jquery.myplugin-1.0.0.js หรืออาจจะ jquery.my-plugin- 1.0.0.js? บางทีคุณอาจทำตัวอย่างของคุณให้สำเร็จด้วยขอบคุณ!
พฤษภาคม

4
สิ่งที่เกี่ยวกับโมดูลAMD หากคุณใช้เวอร์ชั่นในชื่อไฟล์คุณจะต้องเปลี่ยนไฟล์เป็นจำนวนมากหากหมายเลขเวอร์ชันเปลี่ยนแปลง
Knut

3
@junior นี่คือการโพสต์เก่า แต่ค้นหา bowerอย่างรวดเร็วพบว่าปลั๊กอิน jquery ไม่ปฏิบัติตามการประชุมใด ๆ ปรากฏว่า (1) ผลักคำด้วยกัน (2) โดยใช้กระดูกสันหลังและ (3) การใช้ camelCase ล้วนใช้ความถี่เท่า ๆ กัน
bholben

อย่าลืมว่าระบบบางรุ่นและระบบไฟล์มีปัญหาในการจดจำความแตกต่างระหว่างคำในตัวพิมพ์เล็กและคำเดียวกัน un un หรือ camelCase (เช่น: "ThisWord" นั้นเหมือนกับ "thisword" ในบางสภาพแวดล้อม) สิ่งที่ควรทราบเมื่อใช้การประชุม camelCase
amypellegrini

@ ไม่ควรโหลดผ่านชื่อเวอร์ชั่น แต่ทำการแมปชื่อโมดูลกับไฟล์เวอร์ชั่นที่ต้องการ
dalore

132

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

  1. ใช้ชื่อไฟล์ตัวพิมพ์เล็กทั้งหมด มีระบบปฏิบัติการบางระบบที่ไม่คำนึงถึงขนาดตัวพิมพ์สำหรับชื่อไฟล์และการใช้ตัวพิมพ์เล็กทั้งหมดป้องกันโดยไม่ตั้งใจโดยใช้สองไฟล์ที่แตกต่างกันเฉพาะในกรณีที่อาจไม่ทำงานในระบบปฏิบัติการบางระบบ
  2. อย่าใช้ช่องว่างในชื่อไฟล์ แม้ว่าเทคนิคนี้สามารถใช้ในการทำงานได้ แต่ก็มีหลายสาเหตุที่ทำให้พื้นที่ในชื่อไฟล์สามารถทำให้เกิดปัญหาได้
  3. ยัติภังค์ก็โอเคสำหรับตัวแยกคำ หากคุณต้องการใช้ตัวคั่นบางประเภทสำหรับหลายคำแทนที่จะเว้นวรรคหรือ camelcase เช่นเดียวvarious-scripts.jsกับเครื่องหมายยัติภังค์เป็นตัวคั่นที่ปลอดภัยและมีประโยชน์และใช้กันทั่วไป
  4. คิดเกี่ยวกับการใช้หมายเลขรุ่นในชื่อไฟล์ของคุณ เมื่อคุณต้องการอัพเกรดสคริปต์ของคุณให้วางแผนผลกระทบของเบราว์เซอร์หรือการแคช CDN วิธีที่ง่ายที่สุดในการใช้การแคชระยะยาว (สำหรับความเร็วและประสิทธิภาพ) แต่การอัปเกรดทันทีและปลอดภัยเมื่อคุณอัปเกรดไฟล์ JS คือการรวมหมายเลขเวอร์ชันในชื่อไฟล์หรือพา ธ ที่ปรับใช้ (เช่น jQuery กับ jquery-1.6.2.js ) จากนั้นคุณชน / เปลี่ยนหมายเลขเวอร์ชันเมื่อใดก็ตามที่คุณอัพเกรด / เปลี่ยนไฟล์ สิ่งนี้จะรับประกันได้ว่าจะไม่มีเพจที่ร้องขอเวอร์ชันใหม่กว่านี้ที่ให้บริการเวอร์ชันเก่ากว่าจากแคช

56

ไม่มีอย่างเป็นทางการเป็นสากลการประชุมสำหรับการตั้งชื่อไฟล์ JavaScript

มีตัวเลือกต่าง ๆ :

  • scriptName.js
  • script-name.js
  • script_name.js

เป็นแบบแผนการตั้งชื่อที่ถูกต้องทั้งหมด แต่ฉันชอบแบบแผนการตั้งชื่อที่แนะนำ jQuery (สำหรับปลั๊กอิน jQuery แม้ว่ามันจะใช้ได้กับ JS ใด ๆ )

  • jquery.pluginname.js

ความงามที่จะตั้งชื่อนี้เป็นที่ชัดเจนอธิบายมลพิษ namespace โลกที่เพิ่มเข้ามา

  • foo.js เพิ่ม window.foo
  • foo.bar.js เพิ่ม window.foo.bar

เพราะฉันออกเวอร์ชัน: มันควรมาหลังจากชื่อเต็มคั่นด้วยยัติภังค์โดยมีจุดระหว่างรุ่นหลักและรุ่นรอง:

  • foo-1.2.1.js
  • foo-1.2.2.js
  • ...
  • foo-2.1.24.js

10
+1 สำหรับThe beauty to this naming convention is that it explicitly describes the global namespace pollution being added.ไม่เคยสังเกตว่า
Adrien เป็น

2
คำถามเดียวของฉันคือจะทำอย่างไรถ้าคุณมีไฟล์ที่สร้างขึ้นFooหรือmyFooคุณจะตั้งชื่อไฟล์Foo.jsหรือmyFoo.jsตามลำดับ?
อัฒภาค

13

คำถามในลิงก์ที่คุณพูดถึงเกี่ยวกับการตั้งชื่อตัวแปร JavaScript ไม่ใช่เกี่ยวกับการตั้งชื่อไฟล์ดังนั้นลืมเกี่ยวกับสิ่งนั้นสำหรับบริบทที่คุณถามคำถามของคุณ

สำหรับการตั้งชื่อไฟล์มันเป็นเรื่องของความชอบและรสนิยมอย่างหมดจด ฉันชอบตั้งชื่อไฟล์ด้วยยัติภังค์เพราะฉันไม่ต้องไปถึงปุ่ม shift อย่างที่เคยทำเมื่อจัดการกับชื่อไฟล์ camelCase และเนื่องจากฉันไม่ต้องกังวลเกี่ยวกับความแตกต่างระหว่างชื่อไฟล์ Windows และ Linux (ชื่อไฟล์ Windows ไม่ตรงตามตัวพิมพ์เล็ก - ใหญ่อย่างน้อยต้องผ่าน XP)

ดังนั้นคำตอบก็เหมือนกับ "ขึ้นอยู่กับ" หรือ "ขึ้นอยู่กับคุณ"

กฎข้อหนึ่งที่คุณควรปฏิบัติตามคือให้สอดคล้องในการประชุมที่คุณเลือก


6
+1 สำหรับการใช้เหตุผลยัติภังค์และ camelCase
cellepo

6

ฉันชอบยัติภังค์ที่มีตัวพิมพ์เล็ก แต่สิ่งหนึ่งที่ยังไม่ได้กล่าวถึงคือบางครั้งมันก็ดีที่มีชื่อไฟล์ตรงกับชื่อของโมดูลเดียวหรือฟังก์ชั่นที่ใช้งานได้ทันทีที่อยู่ภายใน

ตัวอย่างเช่นฉันมีโมดูลที่เปิดเผยพร้อมกับประกาศvar knockoutUtilityModule = function() {...}ภายในไฟล์ของตัวเองที่ชื่อว่า knockoutUtilityModule.js แม้ว่าในทางวัตถุฉันจะชอบ knockout-utility-module.js

ในทำนองเดียวกันเนื่องจากฉันใช้กลไกการรวมเพื่อรวมสคริปต์ฉันจึงใช้เพื่อกำหนดฟังก์ชั่นที่ใช้งานได้ทันที (ดูรุ่นของเทมเพลตเป็นต้น) ในไฟล์ของตัวเองสไตล์ C # เพื่อการบำรุงรักษา ตัวอย่างเช่น ProductDescriptorViewModel มีชีวิตอยู่ในตัวมันเองภายใน ProductDescriptorViewModel.js (ฉันใช้ตัวพิมพ์ใหญ่สำหรับฟังก์ชันที่ใช้งานได้ทันที)

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