Javascript dosya adı adlandırma kuralı nedir? [kapalı]


283

Dosyalar hyphens.js, camelCased.js veya başka bir şeyle mi adlandırılmalıdır?

Bu sorunun cevabını burada bulamadım .


2
İyi bir adlandırma kuralı, dosya adlarını kodda gördüğünüz gibi adlandırmaktır. MyPluginSınıf içinde gider MyPlugin.js. MenuItemGidecek bileşen Tepki MenuItem.js. Diğer geliştiriciler 'serin modülünüzü' gerektirir / alır ve ondan birden fazla sembol kullanır, bu yüzden adlandırın cool-module.js. -
Dan Dascalescu

1
Bu gönderi seçenek tabanlı değil. Aslında önemlidir. Burada Google tarafından hazırlanmış bir kılavuzunuz var - google.github.io/styleguide/jsguide.html#file-name . (Google JavaScript Stil Kılavuzu)
zwitterion

Yanıtlar:


184

Olası bir adlandırma kuralı, jQuery'nin kullandığı adlandırma şemasına benzer bir şey kullanmaktır. Evrensel olarak kabul edilmiyor ama oldukça yaygın.

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

burada product-name+ pluginçifti bir ad alanını ve bir modülü de temsil edebilir . versionVe filetypegenellikle isteğe bağlıdır.

filetypedosyanın içeriğine göre bir şey olabilir. Genellikle görülen:

  • min küçültülmüş dosyalar için
  • custom özel oluşturulmuş veya değiştirilmiş dosyalar için

Örnekler:

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

31
Ne dediğine katılıyorum. Ama şu anda mücadele ettiğim bir şey var: ya 'eklenti' iki kelime içeriyorsa? Onları noktalarla ayırmak mı? jquery.myPlugin-1.0.0.js veya jquery.my.plugin-1.0.0.js veya jquery.my_plugin-1.0.0.js veya jquery.myplugin-1.0.0.js veya hatta jquery.my-plugin- 1.0.0.js? Belki bununla örneklerinizi tamamlayabilirsiniz, teşekkürler!
mayr

4
AMD modülleri ne olacak ? Dosya adlarında sürüm kullanıyorsanız, sürüm numarası değişirse birçok dosyayı değiştirmeniz gerekir.
Mart'ta knot

3
@junior, bu eski bir gönderi, ancak hızlı bir arama , jquery eklentilerinin belirli bir kurala uymadığını ortaya koyuyor. Görünen o ki (1) kelimeleri bir araya getirmek, (2) omurga kullanarak ve (3) camelCase kullanarak kabaca eşdeğer frekansta kullanılmaktadır.
bholben

Bazı sürüm oluşturma ve dosya sistemlerinin, küçük harfli bir kelime ile un upper veya camelCase ile aynı kelime arasındaki farkı tanımakta sorun yaşadığını unutmamak gerekir (örneğin: "ThisWord", bazı ortamlarda "thisword" ile aynıdır). CamelCase kuralını kullanırken akılda tutulması gereken bir şey.
amypellegrini

@knut sürüm adları aracılığıyla yüklememelisiniz, ancak modül adını belirli bir sürüm dosyasıyla eşlemelisiniz.
dalore

132

JavaScript dosyaları için herhangi bir özel kuralın farkında değilim çünkü css dosyalarına veya html dosyalarına veya bunun gibi başka bir dosyaya karşı web'de gerçekten benzersiz değiller. Yanlışlıkla bir çapraz platform sorunuyla karşılaşma olasılığınızı azaltan "güvenli" şeyler yapabilirsiniz:

  1. Tüm küçük harf dosya adlarını kullanın. Dosya adları için büyük / küçük harfe duyarlı olmayan bazı işletim sistemleri vardır ve tüm küçük harflerin kullanılması, yalnızca bazı işletim sistemlerinde çalışmayabilir.
  2. Dosya adında boşluk kullanmayın. Bu teknik olarak işe yarayabilirken, dosya adlarındaki boşlukların sorunlara yol açmasının birçok nedeni vardır.
  3. Sözcük ayırıcı için kısa çizgi uygundur. İçinde olduğu gibi boşluk veya deve yerine birden çok sözcük için bir tür ayırıcı kullanmak istiyorsanız various-scripts.js, kısa çizgi güvenli, kullanışlı ve yaygın olarak kullanılan bir ayırıcıdır.
  4. Dosya adlarınızda sürüm numaralarını kullanmayı düşünün. Komut dosyalarınızı yükseltmek istediğinizde, tarayıcı veya CDN önbelleğe almanın etkilerini planlayın. Uzun süreli önbellek kullanmanın en basit yolu (hız ve verimlilik için), ancak bir JS dosyasını yükselttiğinizde anında ve güvenli yükseltmeler, dağıtılan dosya adına veya yola bir sürüm numarası eklemektir (jQuery'nin jquery-1.6.2.js ile yaptığı gibi) ) ve daha sonra dosyayı her yükselttiğinizde / değiştirdiğinizde bu sürüm numarasını engeller / değiştirirsiniz. Bu, yeni sürümü isteyen hiçbir sayfanın eski sürüme bir önbellekten sunulmamasını garanti eder.

56

JavaScript dosyalarını adlandırmak için resmi, evrensel bir kural yoktur .

Bazı çeşitli seçenekler vardır:

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

Tüm geçerli adlandırma kuralları ancak vardır ben (herhangi bir JS için çalıştığı halde jQuery eklentileri için) jQuery adlandırma kuralı önerdi tercih

  • jquery.pluginname.js

Bu adlandırma kuralının güzelliği, eklenen küresel ad alanı kirliliğini açıkça tanımlamasıdır.

  • foo.js emailleri window.foo
  • foo.bar.js emailleri window.foo.bar

Sürüm oluşturmayı bıraktığım için: büyük ve küçük sürümler arasındaki sürelerle, tercihen bir tire işareti ile ayrılmış tam addan sonra gelmelidir:

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

10
+1 için The beauty to this naming convention is that it explicitly describes the global namespace pollution being added.bunu hiç fark etmedim
Adrien Be

2
Tek sorum, oluşturulan bir dosyanız varsa Fooveya myFoodosyayı basitçe adlandırır mısınız Foo.jsyoksa myFoo.jssırasıyla?
noktalı virgül

13

Verdiğiniz bağlantıdaki soru, dosya adlandırma hakkında değil, JavaScript değişkenlerinin adlandırılması hakkında konuşuyor, bu yüzden sorunuzu sorduğunuz bağlam için unutun.

Dosya isimlendirmesine gelince, bu sadece bir tercih ve lezzet meselesidir. CamelCase dosya adları ile uğraşırken yaptığım gibi, shift tuşuna ulaşmak zorunda olmadığım için dosyaları tire ile adlandırmayı tercih ederim; ve Windows ve Linux dosya adları arasındaki farklar konusunda endişelenmem gerekmediğinden (Windows dosya adları en azından XP aracılığıyla büyük / küçük harfe duyarlı değildir).

Yani cevap, birçokları gibi, "duruma bağlıdır" veya "size kalmış" tır.

İzlemeniz gereken tek kural, seçtiğiniz sözleşmede tutarlı olmaktır.


6
Tire ve camelCase mantığı için +1.
cellepo

6

Genellikle küçük harfli kısa çizgileri tercih ederim, ancak henüz belirtilmeyen bir şey, bazen dosya adının tek bir modülün veya içerdiği somut işlevin adıyla tam olarak eşleşmesinin güzel olmasıdır.

Örneğin, var knockoutUtilityModule = function() {...}objektif olarak knockout-utility-module.js tercih etsem de, knockoutUtilityModule.js adlı kendi dosyası içinde bildirilen bir açığa alma modülüm var.

Benzer şekilde, komut dosyalarını birleştirmek için bir demetleme mekanizması kullandığımdan, sürdürülebilirlik için her biri kendi dosyasında C # stilinde somutlaştırılabilir işlevler (şablonlu görünüm modelleri vb.) Örneğin, ProductDescriptorViewModel ProductDescriptorViewModel.js içinde kendi başına yaşıyor (Örneklenebilir işlevler için büyük harf kullanıyorum).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.