Öncelikle, birkaç şey:
JavaScript'e bakmanın bir başka yolu, yapı olarak işlevle yapabileceğiniz 1 milyon ve 1 şeydir. Eğer bakarsanız hepsi orada. Hiçbir zaman bir fonksiyondan uzak değildir.
Bu jQuery eklenti yazma şey korkunç. Bunu neden savunduklarını bilmiyorum. $ uzantıları, $ 'ın oldukça iyi kaplanmış değil, tam bir widget oluşturma yöntemlerine sahip olduğu genel kullanım şeyler olmalıdır. Bu bir DOM-API normalleştirme aracıdır. Kullanımı en iyi kendi nesnelerinize gömülüdür. Tam kullanıcı arayüzü kitaplığı deposu olarak kullanmanın cazibesini görmüyorum.
İstemci Tarafı Web'deki paketler Anlamsızdır
Müşteri tarafı web'deki paketler hakkında kişisel olarak sevmediğim şey, aslında gerçekten yapmadığımız bir şeyi yapıyormuş gibi yapıyoruz. Bir .NET web formları ve Java-arkadaşlar dünyamızdan hiçbir zaman pan-out-out-out-out-of-korkunç-şeyler gobs, ben gerçekten ne olduğunu bağlı kaynakları ile HTML bir yığın düşünmek istiyorum ve başka bir şeymiş gibi davranarak yeni şeylere dayanıklı OS uygulama geliştiricilerini yatıştırmaya çalışmayın. İstemci tarafındaki web'deki JS'de, tarayıcı önbelleğe alma bilgisizliği ile çalışan Ajax ile hiçbir şey "ithal" engelleme yapmaz, evet, çoğu yapmaya çalıştı. Tarayıcı için önemli olan tek şey, yüklü ve yorumlanmış olması ya da olmamasıdır. "Her ihtimale karşı" kullanılabilecek bir yerde istemcide daha fazla kod saklanmıyor iyi sebeplerden dolayı. # 1, bir fenomen olarak web uygulamaları için bir eklenti ve tarayıcı eklentisi bağımlılıklarını tanımladığımdan genellikle çok iyi çalışmadı. Şimdi web istiyoruz. Adobe veya Sun bu hafta üçüncü kez güncelleme yapıldıktan sonra değil.
Dil, Yapı İçin İhtiyacı Olan Şeylere Sahiptir
JS nesneleri oldukça değişkendir. Bunu yapmak için yararlı bulduğumuz herhangi bir dereceye kadar isim alanlarının dallanan ağaçlarına sahip olabiliriz ve bunu yapmak çok kolaydır. Ama evet, yeniden kullanılabilir her şey için küresel alanda herhangi bir kütüphanenin kökünü yapıştırmanız gerekir. Tüm bağımlılıklar yine de aynı anda bağlanır ve yüklenir, öyleyse başka bir şey yapmanın anlamı nedir? Küresel ad alanından kaçınmanın amacı, kötü olan herhangi bir şey değildir. Çok fazla şey var, çünkü ad alanı çarpışması riski veya yanlışlıkla temel dil özelliklerinin üzerine yazma riski taşıyorsunuz.
Popüler olması doğru yaptığımız anlamına gelmez
Şimdi bunu bir istemci tarafı web uygulamasında gördüğünüzde:
(function(){
//lots of functions defined and fired and statement code here
})()
Sorun, bir uygulamayı yapılandıracak araçlara sahip olmamamız değil, sorun insanların yapıya değer vermemesi. Bir tasarım ajansında 2-3 sayfalık bir kerelik geçici ıskarta siteleri için bununla ilgili bir sorunum yok. Çirkinleştiği yer, bakımı kolay, okunaklı ve değiştirilmesi kolay bir şey oluşturmanız gerektiğidir.
Ancak, yeniden kullanılabilir tüm nesneleri ve fabrikaları uygulama zamanı geldiğinde ve belki bir veya iki yeni geçici değişken bu sürece girebilirse, bu bir kolaylıktır.
Ancak JS'nin Paketler / Modüller ile Uygulamaları
Bu tür şeylerin çok daha mantıklı olduğu Node.js'de modüllerinin olduğunu unutmayın. JS, diğer dilleri rahatsız eden uber-config-hell'den kaçınabileceğimizi varsayarsak, denklemdeki tek şeydir ve yürütülen her dosya kendi izole kapsamıdır. Ancak bir web sayfasında, bir js dosyasını bağlamak içe aktarma ifadesidir. Daha fazla ithalat yapmak sadece zaman ve kaynak kaybıdır, çünkü kaynakları elde etmek, başka bir sayfanın tekrar gereksinim duyması durumunda bir tarayıcıda önbelleğe alınacaklarını bilmeniz için dosyalara bağlantılar eklemekten çok daha fazla çaba gerektirir. Yani küresel alanda bir nokta işgal ederken jQuery gibi adaptör nesne fabrikaları veya belirli bir alanda büyük bir görev alt kümesini kapsayan daha geleneksel nesneler oluşturmak dışında başka bir şey yaparak küresel alanı bölmeye çalışıyor. Orada'http://wiki.ecmascript.org/doku.php?id=harmony:modules
Bu nedenle hayır, bu tür şeyleri kullanmak için iyi bir neden olduğunda (çoğunlukla yokken) küresel ad alanı kirliliğinden kaçınmak için kullanılan otomatik invokatörlerde yanlış bir şey yoktur. Ve nesnelerimizde kalıcı özel eşdeğer özelliklere sahibiz (sadece yapıcıda bir var tanımlayın ve onu bir özellik olarak göstermeyin).
Ancak, böyle şeyler yapabilmemiz harika. Ağır kullanım, JS geliştiricilerinin hala olgunlaştığının bir işaretidir, ancak burada bir anlam ifade etmeyen istemci tarafı web'de bir paradigma zorlamaya çalışmayan kimseler için dilde bir boşluk yoktur.