Asbest longjohns takılıyor ...
Dün başlığımı Packt Yayınları, JavaScript ile Reaktif Programlama . Gerçekten Node.js merkezli bir başlık değil; erken bölümler teoriyi ve daha sonra kod ağırlıklı bölümler uygulamayı kapsar. Gerçekten okuyuculara bir web sunucusu vermek için başarısız uygun olacağını düşünmüyordu çünkü node.js gibiydi farkla bariz bir seçim. Dava açılmadan önce kapatıldı.
Node.js ile yaşadığım deneyim hakkında çok pembe bir görünüm verebilirdim. Bunun yerine iyi puanlar ve karşılaştığım kötü noktalar konusunda dürüst oldum.
Burada alakalı birkaç alıntı ekleyeyim:
Uyarı: Node.js ve ekosistemi sıcak - sizi kötü bir şekilde yakacak kadar sıcak !
Matematikte öğretmen yardımcısı olduğumda, bana söylenen açık olmayan önerilerden biri, bir öğrenciye bir şeyin “kolay” olduğunu söylememekti. Nedeni geriye dönük olarak biraz açıktı: İnsanlara bir şeyin kolay olduğunu söylerseniz, bir çözüm görmeyen biri (daha da fazla) aptal hissedebilir, çünkü sadece sorunu nasıl çözeceklerini değil, sorunu da onlar anlamak için çok aptal kolay bir olduğunu!
Python / Django'dan gelen insanları rahatsız eden değil, bir şeyi değiştirirseniz kaynağı hemen yeniden yükleyen gotcha'lar var. Node.js ile varsayılan davranış, bir değişiklik yaparsanız, eski sürümün zaman sonuna kadar veya sunucuyu el ile durdurup yeniden başlatana kadar etkin olmaya devam etmesidir. Bu uygunsuz davranış sadece Pythonistas'ı kızdırmaz; çeşitli geçici çözümler sağlayan yerel Node.js kullanıcılarını da tahriş eder. StackOverflow sorusu “Node.js'deki dosyaları otomatik olarak yeniden yükle”, bu yazı yazıldığı sırada 200'den fazla upvote ve 19 cevaba sahip; bir düzenleme kullanıcıyı anasayfada bir dadı komut dosyasına, düğüm süpervizörüne yönlendirir http://tinyurl.com/reactjs-node-supervisor adresindeki. Bu sorun, yeni kullanıcıları aptal hissetmek için büyük bir fırsat verir, çünkü sorunu çözdüklerini düşündüler, ancak eski, buggy davranışı tamamen değişmedi. Ve sunucuyu zıplamayı unutmak kolaydır; Bunu defalarca yaptım. Ve vermek istediğim mesaj şudur: “Hayır, aptal değilsin çünkü Node.js'nin bu davranışı arkanı ısırdı; sadece Node.js tasarımcıları burada uygun davranış sağlamak için hiçbir neden görmediler. Bununla başa çıkmaya çalışın, belki düğüm süpervizöründen veya başka bir çözümden biraz yardım alın, ancak lütfen aptal olduğunuzu hissetmeyin. Problemi olan siz değilsiniz; sorun Node.js'nin varsayılan davranışında. ”
Bu bölüm, bazı tartışmalardan sonra, tam olarak “Bu kolay” izlenimi vermek istemediğim için bırakıldı. İşleri çalıştırırken ellerimi tekrar tekrar kestim ve zorlukları düzeltmek istemiyorum ve sizi Node.js ve ekosisteminin iyi işlev görmesinin basit bir mesele olduğuna ve sizin için de basit olmadığına inanmaya ayarlıyorum , ne yaptığını bilmiyorsun. Node.js kullanarak iğrenç zorluklarla karşılaşmazsanız, bu harika. Eğer yaparsan, “Aptalım - benden yanlış bir şey olmalı” hissini bırakıp gitmediğini umarım. Node.js ile ilgili kötü sürprizlerle karşılaşırsanız aptal değilsiniz. Sen değilsin! Bu Node.js ve ekosistemi!
Son bölümlerde ve sonuçta yükselen kreşendodan sonra gerçekten istemediğim Ek, ekosistemde neler bulabildiğimi anlatıyor ve moronik değişmezlik için bir çözüm sağladı:
Mükemmel bir uyum gibi görünen ve yine de kullanılabilen başka bir veritabanı, HTML5 anahtar / değer deposunun sunucu tarafı uygulamasıdır. Bu yaklaşım, en iyi ön uç geliştiricilerin yeterince iyi anladıkları bir API'nın temel avantajına sahiptir. Bu nedenle, aynı zamanda iyi olmayan ön uç geliştiricilerin yeterince iyi anladıkları bir API. Ancak düğüm-localstorage paketi ile, sözlük-sözdizimi erişimi sunulmazken (localStorage.setItem (anahtar, değer) veya localStorage [s] yerine localStorage.getItem (anahtar) kullanmak istersiniz), tam localStorage semantiği uygulanır , varsayılan 5 MB'lık bir kota dahil - NEDEN?Sunucu tarafı JavaScript geliştiricilerinin kendilerinden korunması gerekiyor mu?
İstemci tarafı veritabanı yetenekleri için, web sitesi başına 5 MB'lık bir kota, geliştiricilerin onunla çalışmasına izin vermek için gerçekten cömert ve kullanışlı bir solunum odasıdır. Çok daha düşük bir kota belirleyebilir ve geliştiricilere çerez yönetimi ile birlikte topallama üzerinde ölçülemez bir gelişme sunabilirsiniz. 5 MB'lık bir sınır, Big Data istemci tarafı işlemeye çok hızlı bir şekilde borç vermez, ancak becerikli geliştiricilerin çok şey yapmak için kullanabileceği oldukça cömert bir ödenek vardır. Ancak öte yandan, 5MB yakın zamanda satın alınan çoğu diskin özellikle büyük bir kısmı değildir, yani siz ve bir web sitesi disk alanının makul kullanımının ne olduğu konusunda anlaşmazsanız veya bazı siteler gerçekten hoggish ise, çok fazla ve sabit sürücünüz zaten çok dolu olmadığı sürece batak bir sabit sürücü tehlikesi yok.
Ancak, sunucunuz için tek bir kod yazarken, veritabanınızı kabul edilebilir 5 MB'den daha fazla yapmak için herhangi bir ek korumaya ihtiyacınız olmadığına dikkatlice işaret edebilirsiniz. Çoğu geliştirici, dadı gibi davranan ve 5MB'den fazla sunucu tarafı veri depolamasına karşı koruyan araçlara ne ihtiyaç duymaz ne de istemez. Ve istemci tarafında altın dengeleme eylemi olan 5MB kota, Node.js sunucusunda biraz aptalca. (Ve bu Ek'te kapsanan gibi birden fazla kullanıcı için bir veritabanı için, her kullanıcı hesabı için diskte ayrı bir veritabanı oluşturmadıkça, kullanıcı hesabı başına 5MB olmadığını, biraz acı verici bir şekilde belirtilebilir; tüm kullanıcı hesaplarını bir araya getirir. acıviral giderseniz!) Belgeler kotanın özelleştirilebilir olduğunu, ancak bir hafta önce geliştiriciye kotanın nasıl değiştirileceğini soran bir e-postanın yanı sıra, StackOverflow sorusu da aynı şekilde sorulduğunu belirtir. Bulabildiğim tek cevap, bir kurucuya isteğe bağlı ikinci tamsayı argümanı olarak listelendiği Github CoffeeScript kaynağında. Bu kadar kolay ve bir disk veya bölüm boyutuna eşit bir kota belirtebilirsiniz. Ancak, mantıklı olmayan bir özelliği taşımanın yanı sıra, aracın yazarı, 0'ın bir değişkenin veya fonksiyonun bir kaynak için maksimum sınır belirteceği bir değişken için “sınırsız” anlamına gelen çok standart bir kuralı takip etmeyi tamamen başaramamıştır. Bu yanlış özellikle yapılacak en iyi şey muhtemelen kotanın Infinity olduğunu belirtmektir:
if (typeof localStorage === 'undefined' || localStorage === null)
{
var LocalStorage = require('node-localstorage').LocalStorage;
localStorage = new LocalStorage(__dirname + '/localStorage',
Infinity);
}
İki yorumun sırayla değiştirilmesi:
İnsanlar gereksiz yere sürekli olarak JavaScript'i bir bütün olarak kullanarak kendilerini vurdular ve JavaScript'in saygın bir dil haline getirilmesinin bir kısmı, bir dil olarak Douglas Crockford, “Bir dil olarak JavaScript'in gerçekten iyi kısımları ve gerçekten kötü kısımları var. İşte iyi bölümler. Sadece başka bir şey olduğunu unut. ” Belki de sıcak Node.js ekosistemi kendi “Douglas Crockford” u yetiştirecek, “Node.js ekosistemi bir kodlama Vahşi Batı'dır, ancak bulunacak bazı gerçek taşlar vardır. İşte bir yol haritası. Neredeyse her ne pahasına olursa olsun kaçınılması gereken alanlar. HERHANGİ bir dilde veya ortamda bulunabilecek en zengin maaşları olan bölgeler. ”
Belki bir başkası bu kelimeleri bir meydan okuma olarak alabilir ve Crockford'un liderliğini takip edebilir ve Node.js ve ekosistemi için “iyi kısımları” ve / veya “daha iyi kısımlarını” yazabilir. Bir kopyasını alırım!
Ve tüm projelerde coşku derecesi ve katıksız çalışma saatleri göz önüne alındığında, bu yazı sırasında yapılan olgunlaşmamış bir ekosistem hakkında herhangi bir sözün keskin bir şekilde temperlenmesi bir veya iki yıl veya üç yıl içinde garanti edilebilir. Beş yıl içinde, “2015 Node.js ekosisteminin çeşitli mayın tarlaları vardı. 2020 Node.js ekosisteminin birden fazla cenneti var. ”