Node.js istifadə etmək üçün necə qərar verə bilərəm?

Bunun üçün yeniyim, amma son zamanlarda Node.js nə qədər yaxşı olduğunu eşitdim. Ümumi olaraq jQuery və JavaScript ilə işləməkdən çox məmnun olduğumu nəzərə alsaq, Node.js. Yadda saxladığım veb tətbiqi Bitly kimi bir şeydir - bəzi məzmunu alır, arxiv edir.

Son bir neçə gün ərzində gördüyüm bütün ev tapşırığından aşağıdakı məlumatları aldım. Node.js

  • - normal bir web server kimi istifadə edilə bilən və JavaScript proqramlarını idarə etməyə imkan verən komanda xətti aləti
  • böyük bir javascript v8 mühərriki istifadə edir
  • Eyni zamanda bir neçə şeyi etmək lazımdır.
  • hadisəyə əsaslanaraq, bütün zəhmli Ajax kimi şeylər server tərəfində edilə bilər
  • brauzer və arxa tərəf arasında kodu paylaşmağa imkan verir
  • Bizə MySQL ilə danışmaq imkanı verir

Rastlaşdığım mənbələrdən bəziləri belədir:

Node.js-in Amazon EC2 nümunələrindəki qutudan demək olar ki, həyata keçirilə biləcəyini nəzərə alsaq, PHP , PythonRuby kimi güclü krallıqlardan fərqli olaraq, Node.js-in hansı problemləri tələb etdiyini anlamağa çalışıram. Anladım ki, bu, həqiqətən dilində olan təcrübədən asılıdır, amma mənim sualım ümumi bir kateqoriyadan daha çoxdur: müəyyən bir quruluşu istifadə edərkən və hansı problemlər ən çox uyğun gəlir?

2201
21 февр. Legend 21 fevralda təyin olundu 2011-02-21 08:20 '11 at 8:20 'da 2011-02-21 08:20
@ 17 cavab

Node.js. haqqında çox gözəl bir şeylə paylaşdınız. Node.js serverdə brauzer ilə sabit bir əlaqə saxlamağı istədiyiniz tətbiqlər üçün xüsusilə əlverişlidir. "Uzun səsvermə" adlanan bir metodu istifadə edərək, istifadəçilərə real vaxtda yeniləmələri göndərən bir proqram yaza bilərsiniz. Ruby on Rails və ya Django kimi bir çox web nəhəngi üzərində uzun sorğu keçirmək, hər bir aktiv müştəri bir server prosesini yeyir, çünki serverdə böyük bir yük yaratacaqdır. Bu vəziyyət tarpit hücumuna düşür. Node.js kimi bir şey istifadə etdiyiniz zaman, server hər bir açıq əlaqə üçün ayrı mövzuları saxlamağa ehtiyac yoxdur.

Node.js-də çox sayda müştəriyə xidmət etmək üçün demək olar ki, heç bir sistem resurslarından istifadə edən brauzer-əsaslı bir söhbət proqramı yaratmaq deməkdir. Node.js belə bir uzun sorğu etmək istədiyiniz hər zaman böyük bir seçimdir.

Qeyd edək ki, Ruby və Python bu cür şeylər üçün vasitələrə malikdirlər ( hadisə baş verənbükülmüş , lakin Node.js çox yaxşıdır və sıfırdan başlayır.) JavaScript həqiqətən yaxşı geri çağırış əsasında paralellik modelinə yerləşdirilir və burada fərqlidir. Bundan əlavə, müştəri və server üçün yerli JSON ilə serialize etmək və serializasiya etmək bacarığı olduqca zərifdir.

Burada başqa cavablar gözləyirik, bu fantastik bir sual.

Qeyd edək ki, Node.js də müştəri ilə server arasındakı boşluq üçün kodun yenidən istifadə edəcəyi hallar üçün də böyükdür. Meteor çərçivəsi çox asanlaşdırır və bir çox insanlar bu veb inkişafın gələcəyi ola bilər. Meteorun kodu yazmaq üçün çox əyləncəli olduğunu söyləyə bilərik və bu müddətin əksəriyyəti məlumatlarınızı necə yenidən quracağınızı düşünür, buna görə də brauzerdə işləyən kod asanlıqla manipulyasiya edə və geri qaytara bilər.

Pyramid ilə TicTacToe və Uzun Polling : Gevent bir az yardım ilə qurmaq üçün çox sadə görünür çıxır piramida və uzun sorğu haqqında bir məqalə.

1360
21 февр. Cavab Benson 21 fevralda verilir. 2011-02-21 08:30 '11 saat 08:30 'da 2011-02-21 08:30

Node.js-in real vaxt tətbiqləri üçün ən uyğun olduğuna inanıram: online oyun, əməkdaşlıq vasitələri, söhbət otaqları və ya bir istifadəçinin (və ya robotun və ya sensorun?) Bu tətbiqin digər istifadəçilər tərəfindən görülə bilməsi lazım olduğu bir şey dərhal, səhifəni yeniləmədən.

Qeyd edim ki, Socket.IO Node.js ilə birlikdə sizin real-vaxt gecikməyinizi uzun bir sorğu ilə mümkün olandan daha da azaldacaq. Socket.IO daha uzun bir sorğuya daha pis bir ssenari olaraq qayıdacaq və əvəzində veb rozetləri və ya hətta Flash varsa istifadə edəcək.

Amma qeyd etmək lazımdır ki, kodun iş parçaları ilə bloklana biləcəyi demək olar ki, hər hansı bir vəziyyət Node.js. Və ya hadisəyə səbəb olmaq üçün tətbiq lazım olan hər hansı bir vəziyyət.

border=0

Əlavə olaraq, Ryan Dahl bir dəfə qatıldığım bir görüşdə, Node.js testlərinin adi köhnə HTTP müraciətləri üçün Nginx ilə sıx rəqabətdə olduğunu söylədi. Buna görə də, Node.js ilə qurulsaq, müntəzəm resurslarımıza səmərəli şəkildə xidmət edə bilərik və hadisəyə əsaslanan şeylərə ehtiyac duyulduqda, işə hazırdır.

Daha bütün bu javascript bütün vaxtlarda. Bütün yığın üçün Lingua Frank.

410
21 февр. cavab balıqçılar tərəfindən verilir 21 fevral. 2011-02-21 09:43 '11 saat 09:43 'da 2011-02-21 09:43

NodeJS istifadə üçün səbəblər:

  • Javascript çalışır, belə ki, server və müştəri ilə eyni dili istifadə edə bilərsiniz və hətta bir neçə kodunu (məsələn, formasını yoxlamaq və ya hər iki tərəfdən görünüşləri görüntüləmək üçün) bölüşmək olar.

  • tək yivli hadisə idarə edən sistem eyni zamanda birdən çox istək işlədərkən, hətta sadəcə, ənənəvi çox yivli Java və ya ROR ilə müqayisədə sürətlidır.

  • İstehlakçı və server kitabxanaları / modulları daxil olmaqla, NPM vasitəsilə mövcud olan qabaqcıl paketlər , eləcə də web inkişafı üçün komanda-line vasitələr. Onların əksəriyyəti rahatlıqla github yerləşdirilib, bəzən bir problemi bildirə və bir neçə saat ərzində müəyyənləşdirə biləcəkdir! Bir dam altında hər şeyə, standart problem hesabatlarına və asan bir biçimlendirme üçün gözəldir.

  • Bu, Javascript ilə əlaqəli alətlər və vəzifələri, minifier, dekoderlər, məktublar, preprocessors, açarları və analitik prosessorlar daxil olmaqla, digər web alətlərindən istifadə edə biləcək standart defacto mühitinə çevrilmişdir.

  • Prototipləşdirmə, çevik inkişaf və sürətli məhsul təkrarlanması üçün olduqca uyğun görünür.

NodeJS- dən istifadə edilməməsi səbəbləri:

  • Bir kompilyasiya növü yoxluğu olmayan Javascript çalışır. Müxtəlif qurumlar arasında əməkdaşlıq daxil olmaqla, böyük, mürəkkəb təhlükəsiz sistemlər və ya layihələr üçün, müqavilə interfeyslərini dəstəkləyənstatik tipli yoxlama təmin edən bir dil uzun müddətdə bəzi diskussiya vaxtı (və partlamalar) saxlayır. (JVM null ilə sıxılmış olsa da, nüvə reaktorları üçün Haskell istifadə edin.)

  • Bundan əlavə, NPM-də paketlərin çoxu bir qədər xamdır və hələ də sürətli inkişaf vəziyyətindədir. Köhnə çərçivələr üçün bəzi kitabxanalar on il sınaq və səhv düzəltmələrindən keçdi və indi onlar çox sabitdir . Npmjs.org paketlərin yüklənmə mexanizminə malik deyildir ki , bu da böyük miqdarda artıq dəstəklənməyən daha çox və ya daha az şey olan paketlərin yayılmasına gətirib çıxarmışdır.

  • Daxili cəhənnəm cehennem. (Əlbəttə, bunun üçün 20 fərqli həll var ...)

  • Sürekli büyüyen bir paket havuzu, bir NodeJS projesinin sonradan radikal olaraq farklılaşmasına neden ola bilər. Mövcud seçimlərdən çox sayda (məsələn, Express / Sails.js / Meteor / Derby ) çoxlu sayda tətbiq olunur. Bəzən bu yeni bir geliştiricinin bir Node layihəsinə keçməsini çətinləşdirə bilər. Rails geliştiricisinin mövcud bir layihəyə qoşulması ilə müqayisə edin: bütün Rails tətbiqlərini bənzər bir strukturdan istifadə etməyi təşviq etməli olduğundan tətbiq ilə tez tanış ola bilməli.

  • Fayllarla işləmək bir az ağrı ola bilər. Digər dillərdə, məsələn, bir mətn faylından satır oxumaq kimi əhəmiyyətsiz olan şeylər Node.js ilə 80 + upvotes ilə əlaqəli StackOverflow problemi var ki, kifayət qədər qəribədir . CSV faylından bir zamanda bir yazı oxumaq üçün asan bir yol yoxdur . Etc.

Mən NodeJS-i sevirəm, bu, sürətli və yabanı və əyləncəli, amma mənim fikrimcə, bu, düzgün bir şəkildə düzəldilmir. Ümid edirik ki, nəhayət, hər iki dünyanın ən yaxşısını birləşdirə bilərik. Həqiqətən, gələcəkdə Node'un nə yerini dəyişəcəyini görmək istəyirəm :)

209
26 нояб. Cavab verilmiş cavab 26 noyabr. 2013-11-26 00:47 '13 'da 0:47 2013-11-26 00:47

Bunu etmək üçün:

Node.js çox sayda birləşmə ilə tətbiq olunan proqramlar üçün idealdır və funksiya yerinə yetirilməsində hadisə loopu (bütün digər müştərilərlə) bloklanır, çünki hər bir tələb çox az CPU dövrü tələb edir.

Node.js.- də hadisə dövrü haqqında yaxşı bir məqalə Blog Mixu tech: Node.js hadisə dövrünü anlamaq .

208
15 янв. cavab 15 yanvarda stewe tərəfindən verilir . 2012-01-15 04:48 '12 at 4:48 2012-01-15 04:48

Node.js. istifadə etdiyim bir real nümunə var. Sadə statik HTML saytına sahib olmaq istəyən bir müştəri üçün çalışıram. Bu sayt PayPal-dan istifadə edən bir maddə satmaq üçün nəzərdə tutulmuşdur və müştəri satılan əşyaların sayını əks etdirən bir sayğac istəmişdir. Müştəri çox sayda ziyarətçi ilə bu saytın ziyarət edəcəyi gözlənilir. Node.js və Express.js çərçivəsini istifadə edərək sayğac etmək qərarına gəldim.

Node.js proqramı sadə idi. Redis verilənlər bazasından satılan maddələrin cəmini əldə edin, mal satıldığı zaman counter sayını artırın və API istifadəçiləri üçün əks dəyərini qoruyun .

Node.js faylını bu halda istifadə etməyə qərar verdiyim bəzi səbəblər

  • Çox yüngül və sürətli. Bu veb-saytda üç həftə ərzində 200,000-dən çox ziyarət olub və minimal server resursları bunların hamısını idarə edə bildi.
  • Tezgaha real vaxtda etmək həqiqətən asandır.
  • Node.js konfiqurasiyanı asanlaşdırır.
  • Pulsuz bir çox modul mövcuddur. Məsələn, PayPal üçün bir Node.js modulu tapdım.

Bu halda, Node.js əla seçimdir.

127
31 мая '13 в 9:34 2013-05-31 09:34 Joonas tərəfindən 31 May 'da 9:34' da Cavab 2013-05-31 09:34

Node ilə növbəti layihənin icrasının ən vacib səbəbləri ...

  • Bütün keyfiyyətli uşaqları əhatə edir ... bu səbəbdən əyləncəli olmalıdır.
  • Siz soyuducuya qoşulmaq və Düğümün çox sərgüzəştləri ilə fəxr edə bilərsiniz.
  • Bulud barındırma xərcləri gəldiyində bir qəpiksiniz.
  • Rails ilə həyata keçirildi
  • IIS yerləşdirməsindən nifrət edirsiniz
  • Köhnə IT işiniz olduqca darıxdırıcı olur və siz parlaq yeni bir başlanğıcda olmanızı istəyir.

Nə gözləmək lazımdır ...

  • Ekspress ilə təhlükəsiz və təhlükəsiz hiss etməyəcəksiniz.
  • Yaxşı raket və tərəzi kimi çalışır.
  • Bunu xəyal etdiniz. Siz onu quraşdırdınız. Node repo paketi npmjs.org , dünyanın ən böyük açıq mənbə kitabxana ekosistemidir.
  • Beyniniz iç içə çağırışlar torpaqlarında təhrif edər ...
  • ... vədini xilas etməyi öyrənməyiniz qədər.
  • SequelizePassport sizin yeni dostlarınız API.
  • Əsasən asinxron kodun səhv edilməsi maraqlı olacaq.
  • Bütün qovşaqların Mastercode üçün vaxt.

Kim istifadə edir?

  • PayPal, Netflix, Walmart, LinkedIn, Groupon, Uber, GoDaddy, Dow Jones.
  • Buna görə onlar Node keçid edirlər .
106
12 июня '14 в 16:24 2014-06-12 16:24 Cavab Tony O'Hagan tərəfindən 12 İyun '14 'də 16:24 2014-06-12 16:24 ' də verilir

Silver Bullet kimi bir şey yoxdur. Hər şey bununla bağlı bəzi xərclərlə bağlıdır. Yağlı yeməklər yemək kimi, sağlamlığınızı pozacaq və sağlam qidalar yağlı qidalar kimi ədviyyat ilə gəlməyəcək. Bu fərdi seçimdir: sağlamlıq və ədviyyat istəsələr, onların yeməklərində olduğu kimi. Eyni şəkildə Node.js, müəyyən bir ssenaridə istifadə edilməkdədir. Tətbiqiniz bu ssenariyə uyğun gəlmirsə, ərizənizi inkişaf etdirmək üçün bunu nəzərə almırsınız. Mən də eyni şeyi düşünürəm:

Node.JS istifadə edərkən

  • Server yan kodunuz çox az prosessor dövrü tələb edir. Başqa bir dünyada, qeyri-blocker əməliyyat aparırsınız və bir çox prosessor dövründən istifadə edən ağır / iş alqoritmi yoxdur.
  • Siz Javascript üzərində işləyirsinizsə və JS müştəri tərəfində olduğu kimi Single Threaded formatında yaza bilərsiniz.

Node.JS istifadə etmir

  • Server sorğunuz CPU / İş istifadə alqoritmindən asılıdır.

Node.JS ilə ölçeklenebilirlik baxımından

  • Node.JS özü tərəfindən əsas sistemin bütün nüvəsini istifadə etmir və default olaraq birbaşa işlənmişdir, çox çekirdekli bir prosessor istifadə etmək və onu çox işıqlı etmək üçün mantığınızı özünüzə yazmaq lazımdır.

Node.JS Alternativlər

Node.JS əvəzinə istifadə etmək üçün başqa bir imkan var, lakin Vert.x olduqca perspektivli görünür və polygot və daha geniş ölçeklenebilirlik mülahizələri kimi bir çox əlavə xüsusiyyətlərə malikdir.

60
05 апр. Cavab verilir ayay 05 apr. 2013-04-05 20:17 '13 at 8:17 pm 2013-04-05 20:17

Node.js haqqında heç kimin söz etmədiyini düşündüyüm başqa böyük bir şey, cəmiyyətin qabaqcıl paketi idarəetmə sistemi (npm) və sadəcə paketinizdə bunları əlavə etməklə imkan verə biləcəyiniz mövcud modulların sayıdır. json faylı.

41
06 июня '13 в 20:42 2013-06-06 20:42 Cavab BoxerBucks tərəfindən 06.06.2013 tarixində saat 8: 42-də verilir. 2013-06-06 20:42

Mənim hissəm: nodejs analitik, söhbət proqramları, apis, reklam serverləri və s. Kimi real-time sistemlər yaratmaq üçün idealdır. Cəhənnəm, nodejs və socket.io istifadə edərək mənim ilk chat tətbiqini 2 saatdan az müddətə keçirdim və bu da imtahan zamanı bir həftədir!

Düzəliş edin

Nodejs istifadə etməyə başladığımdan bir neçə il keçdi və statik fayl serverləri, sadə analitiklər, söhbət proqramları və daha çox daxil olmaqla bir çox müxtəlif şeylər yaratmaq üçün istifadə etdim. Bu nodejs istifadə mənim işğadır

Istifadə edərkən

Paralellik və sürətə diqqət yetirən bir sistem yaratdıqda.

  • Söhbət yalnız serverlər üçün, məsələn, söhbət proqramları, irc proqramları və s.
  • Geoloqasiya, video axını, audio axını və s. Kimi real-time resurslara diqqət edən sosial şəbəkələr.
  • Analiz veb analitikasında olduğu kimi, kiçik məlumatlar ilə işləmək çox sürətlidır.
  • Yalnız APİ-ni yalnız necə təyin etmək olar?

Istifadə etmirsən

Bu çox yönlü bir web server, buna görə istənilən yerdə istifadə edə bilərsiniz, amma yəqin ki, bu yerlərdə deyil.

  • Sadə bloglar və statik saytlar.
  • Statik bir fayl server kimi.

Yalnız qarışdırdığımı unutmayın. Apache statik fayl serverləri üçün daha yaxşıdır, əsasən geniş yayılmışdır. İllər ərzində, nodejs cəmiyyəti daha da yetkinləşdi və nodejs demək olar ki, hər yerdə istifadə oluna bilər, əgər öz seçiminizi seçsəniz.

37
06 мая '13 в 16:52 2013-05-06 16:52 Cavab verilib shash7 06 May '13 da 16:52 2013-05-06 16:52

Burada istifadə edilə bilər

  • Ağır hadisə ilə idarə olunan və sıx şəkildə I / O ilə birləşən tətbiqlər
  • Digər sistemlərə çox sayda əlaqə quran tətbiqlər
  • Real-time proqramları (Node.js real vaxtdan sıfırdan hazırlanmış və istifadə üçün asandır.)
  • Məlumat köçürmə birimlərini digər mənbələrə və digər mənbələrdən hoqqabaz edən proqramlar.
  • Yüksək trafik, miqyaslı tətbiqlər
  • Bir çox analitik məlumatı etmədən platform API və verilənlər bazası ilə danışmaq məcburiyyətində qalan mobil tətbiqlər
  • Şəbəkə tətbiqləri yaratmaq
  • Çox tez-tez geri sonuna danışmaq lazımdır tətbiqlər

Mobil cəbhədə, prime time şirkətləri mobil həllər üçün Node.js-ə istinad edir. Niyə yoxlayın?

LinkedIn görkəmli bir istifadəçi. Bütün mobil yığını Node.js. üzərinə qurulmuşdur. Hər bir fiziki maşında 15 nümunə ilə 15 serverdən, cüt trafiki idarə edə biləcək cəmi 4 vəziyyətə keçdilər!

eBay , ql.io, Node.js istifadə edən HTTP API üçün bir web istek dili başlatdı. Node.js prosesində 120,000-dən çox aktiv əlaqəni idarə etmək üçün geliştirici səviyyəsində tipik bir Ubuntu iş stantsiyasını qura bildilər, hər bir əlaqə təxminən 2 KB yaddaş istehlak etdi!

Walmart mobil tətbiqini Node.js istifadə etmək üçün reworked və onun JavaScript əməliyyatını serverə köçürdü.

Daha ətraflı: http://www.pixelatingbits.com/a-closer-look-at-mobile-app-development-with-node-js/

30
03 июля '14 в 10:17 2014-07-03 10:17 cavab Vinayak Bevinakatti tərəfindən verilir 03 iyul 2014, saat 10:17 2014-07-03 10:17

Düğüm, eyni anda istek işlenmesi üçün idealdır -

Beləliklə, hekayə ilə başlayaq. Son 2 ildə JavaScript üzərində işləyirdim və bir web interface inkişaf etdirdim və bunu çox sevirəm. Arxa uşaqlar bizə Java, python (bizi maraqlandırmır) ilə yazılmış bəzi API təklif edir və biz yalnız bir AJAX çağırışı yazırıq, məlumatlarımızı alacaq və nə tahmin edək! biz etdik. Amma əslində bu qədər sadə deyil. Aldığımız məlumatlar səhvdirsə və ya bəzi server səhvləri varsa, biz takılıb və arxa uşaqlarımıza poçt və ya söhbətə (bəzən də whatsApp-da :) müraciət etmək məcburiyyətindəyik). sərin deyil API-lərimizi JavaScript-də yazdıq və bu API-lərimizi interfeysdən çağırırıq? Bəli, bu olduqca sərindir, çünki API-də hər hansı bir problemlə qarşılaşsaq, onu öyrənə bilərik. Nəyə baxın! İndi necə edə bilərsiniz? - Sizin üçün node.

Yaxşı javascript-də API yaza biləcəyinizə razıdır, amma yuxarıda göstərilən problemlə razıyamsa. Bir istirahət API üçün Node istifadə etmək üçün başqa səbəbiniz var?

beləliklə burada sehr başlayır. Bəli, bizim API'larımız üçün Node istifadə etmək üçün başqa səbəblərim var.

Gəlin kilidləmə əməliyyatına və ya axına əsaslanan ənənəvi istirahət API sisteminə qayıtsın. İki paralel sorgu var (r1 və r2), hər biri verilənlər bazası əməliyyatı tələb edir. Belə ki, ənənəvi sistemdə bir şey olacaq:

1. Waiting Way: r1 xidmətinə xidmət etməyə başlayır və sorğunun cavabını gözləyir. r1 tamamlandıqdan sonra, server r2 xidmətinə başlayır və eyni şəkildə r2 . Buna görə də gözləmə yaxşı bir fikir deyil, çünki çox vaxtımız yoxdur.

2. Threading Way: Наш сервер создаст два потока для обоих запросов r1 и r2 и будет служить своей цели после запроса базы данных, так что охладите его быстро. Но это потребляет память, потому что вы можете видеть, что мы начали два потока также проблемы увеличивается, когда оба запроса запрашивают одни и те же данные, тогда вам приходится иметь дело с проблемами взаимоблокировки. Так что лучше, чем ждать, но все еще есть проблемы.

Теперь вот, как это сделает Node:

3. Nodeway: Когда такой же параллельный запрос приходит в Node, тогда он регистрирует событие с его обратным вызовом и продвигается вперед, он не будет ждать ответа на запрос для конкретного запроса. Поэтому, когда приходит запрос r1 , тогда node (да, для этой цели существует цикл событий в Node.) зарегистрируйте событие с его функцией обратного вызова и продвигайтесь вперед для обслуживания запроса r2 и аналогичным образом зарегистрируйте его событие с его обратным вызовом. Всякий раз, когда какой-либо запрос завершается, он запускает соответствующее событие и выполняет его обратный вызов до завершения без прерывания.

Так что не ожидайте, нет потоков, нет потребления памяти - да, это нодвей для обслуживания API обслуживания.

20
ответ дан Anshul 16 янв. '15 в 23:10 2015-01-16 23:10

Моя еще одна причина - выбрать Node.js для нового проекта:

Уметь создавать чистые облачные разработки

Я использовал Cloud9 IDE некоторое время, и теперь я не могу представить без него, он охватывает все жизненные циклы разработки. Все, что вам нужно, это браузер, и вы можете его кодировать в любое время в любом месте на любых устройствах. Вам не нужно проверять код на одном компьютере (например, дома), затем выходить на другой компьютер (например, на рабочем месте).

Конечно, там может быть облачная среда IDE для других языков или платформ (Cloud 9 IDE добавляет поддержку и для других языков), но использование Cloud 9 для разработки Node.js - отличный опыт для меня.

16
ответ дан Sean Zhao 27 сент. '13 в 23:34 2013-09-27 23:34

Нанесение асбеста longjohns...

Вчера мой заголовок с публикациями Packt, Реактивное программирование с помощью JavaScript . Это не действительно Node.js-centric title; ранние главы предназначены для того, чтобы охватить теорию, а более поздние главы, посвященные коду, охватывают практику. Поскольку я действительно не думал, что было бы уместно не давать читателям веб-сервер, Node.js казался безусловно очевидным выбором. Дело было закрыто до того, как оно было даже открыто.

Я мог бы рассказать о своем опыте работы с Node.js. Вместо этого я был честен о хороших моментах и ​​плохих моментах, которые я встречал.

Позвольте мне включить несколько цитат, которые здесь важны:

Предупреждение: Node.js и его экосистема горячо горячая, чтобы сжечь вас плохо!

Когда я был помощником учителя в математике, одним из неочевидных предложений, которые мне сказали, было не говорить студенту, что что-то было "легко". Причина была несколько очевидной в ретроспективе: если вы говорите людям, что что-то легко, кто-то, кто не видит решения, может в конечном итоге чувствовать (даже больше) глупость, потому что не только они не могут решить, как решить проблему, но проблема в том, что они слишком глупо, чтобы понять, это легко!

Есть gotchas, которые не просто раздражают людей из Python/Django, которые немедленно перезагружают источник, если вы что-то меняете. С Node.js поведение по умолчанию заключается в том, что если вы делаете одно изменение, старая версия продолжает действовать до конца или до тех пор, пока вы не остановите и не перезапустите сервер вручную. Это неуместное поведение не просто раздражает Pythonistas; он также раздражает пользователей Node.js, которые предоставляют различные обходные пути. В вопросе StackOverflow "Автозагрузка файлов в Node.js" на момент написания этой статьи было более 200 upvotes и 19 @; редактирование направляет пользователя к няне script, node -supervisor, с домашней страницей в http://tinyurl.com/reactjs-node-supervisor . Эта проблема дает новым пользователям отличную возможность чувствовать себя глупо, потому что они думали, что они исправили проблему, но старое, плохое поведение полностью не изменилось. И легко забыть отказываться от сервера; Я делал это несколько раз. И сообщение, которое я хотел бы дать, это "Нет, вы не глупы, потому что это поведение Node.js укусил вашу спину, а именно, что дизайнеры Node.js не видели причин для обеспечения соответствующего поведения здесь. попытайтесь справиться с этим, возможно, немного помогите от node -supervisor или другого решения, но, пожалуйста, не уходите, чувствуя, что вы глупы. Вы не тот, у кого проблема, проблема в Node.jss поведение по умолчанию."

Этот раздел, после некоторых дебатов, остался, именно потому, что я не хочу создавать впечатление "Легко". Я много раз режу руки, пытаясь заставить работать, и я не хочу сглаживать трудности и заставляю вас думать, что получение Node.js и его экосистемы для работы хорошо - дело простое, и если это не просто для вас тоже, вы не знаете, что вы делаете. Если вы не сталкиваетесь с неприятными трудностями, используя Node.js, это замечательно. Если вы это сделаете, я надеюсь, что вы не уйдете от чувства: "Я глуп - должно быть, со мной что-то не так". Вы не глупы, если испытываете неприятные сюрпризы, связанные с Node.js. Это не ты! Его Node.js и его экосистема!

Приложение, которое я действительно не желал после восходящего крещендо в последних главах и заключении, рассказывает о том, что я смог найти в экосистеме, и предоставил обходное решение для идиотского буквализма:

Другая база данных, которая казалась идеально подходящей и еще может быть выкуплена, представляет собой серверную реализацию хранилища ключей ключей HTML5. Этот подход обладает кардинальным преимуществом API, который хорошо понимают самые хорошие разработчики front-end. В этом отношении, это также API, который большинство не очень хороших разработчиков интерфейса понимают достаточно хорошо. Но с пакетом node -localstorage, в то время как доступ к словарю-синтаксису не предлагается (вы хотите использовать localStorage.setItem(ключ, значение) или localStorage.getItem(ключ), а не localStorage [key]), полную семантику localStorage, включая стандартную квоту 5 МБ - ПОЧЕМУ? Нужно ли защищать серверные разработчики JavaScript от себя?

Для возможностей базы данных на стороне клиента квота на 5 МБ на каждый сайт - это действительно щедрое и полезное количество передышки, чтобы позволить разработчикам работать с ним. Вы можете установить гораздо более низкую квоту и по-прежнему предлагать разработчикам неизмеримое улучшение по сравнению с хромированием наряду с управлением файлами cookie. Предел 5 МБ не очень быстро поддается обработке на стороне клиента Big Data, но есть действительно довольно щедрое пособие, которое находчивые разработчики могут использовать, чтобы сделать многое. Но, с другой стороны, 5MB не является особенно большой частью большинства дисков, приобретенных в последнее время, что означает, что если вы и веб-сайт не согласны с тем, что разумно использует дисковое пространство, или какой-то сайт просто hoggish, он действительно не стоит вы много, и вам не угрожает болотный жесткий диск, если ваш жесткий диск уже не был слишком полным. Возможно, нам было бы лучше, если бы баланс был немного меньше или немного больше, но в целом его достойное решение для устранения внутреннего напряжения для клиентского контекста.

Тем не менее, можно было бы мягко указать, что, когда вы являетесь одним из написанных на вашем сервере, вам не нужна дополнительная защита, чтобы сделать вашу базу данных более чем допустимым размером 5 МБ. Большинство разработчиков не нуждаются ни в каких инструментах, работающих в качестве няни, и не защищают их от хранения более 5 МБ серверных данных. И квота 5 МБ, которая является золотым балансирующим действием на стороне клиента, немного глупо на сервере Node.js. (И для базы данных для нескольких пользователей, например, описанной в этом Приложении, можно было бы немного болезненно отметить, что это не 5 МБ на учетную запись пользователя, если вы не создадите отдельную базу данных на диске для каждой учетной записи пользователя, а 5MB совместно используется все документы пользователя вместе. Это может стать болезненным, если вы обратитесь к вирусу!) В документации указано, что квота настраивается, но неделю назад разработчик спрашивает, как изменить квоту, так же как и вопрос StackOverflow, задающий тот же вопрос, Единственный ответ, который я смог найти, - это источник Github CoffeeScript, где он указан как необязательный второй целочисленный аргумент для конструктора. Так что это достаточно просто, и вы можете указать квоту, равную размеру диска или раздела. Но помимо переноса функции, которая не имеет смысла, автор средств полностью не выполнил стандартное соглашение об интерпретации 0 как означающее "неограниченное" для переменной или функции, где целое число должно указывать максимальный предел для некоторого использования ресурсов. Самое лучшее, что можно сделать с этой ошибкой, - это, вероятно, указать, что квота Infinity:

 if (typeof localStorage === 'undefined' || localStorage === null) { var LocalStorage = require('node-localstorage').LocalStorage; localStorage = new LocalStorage(__dirname + '/localStorage', Infinity); } 

Обмен двумя комментариями по порядку:

Люди бесполезно стреляли в ногу, постоянно используя JavaScript в целом, а часть JavaScript, сделавшая респектабельный язык, была, по сути, дугласом Крокфордом: "JavaScript как язык имеет некоторые действительно хорошие части и некоторые действительно плохие части. хорошие вещи. Просто забудьте, что есть что-нибудь еще". Возможно, горячая экосистема Node.js будет расти своим собственным "Дугласом Крокфордом", который скажет: "экосистема Node.js - это кодирование Дикого Запада, но есть некоторые настоящие драгоценные камни для Здесь есть области, которые следует избегать практически любой ценой. Вот области, в которых одни из самых богатых платформ, которые можно найти в ЛЮБОЙ язык или среду".

Возможно, кто-то другой может взять эти слова в качестве вызова и следовать за Крокфордом и написать "хорошие части" и/или "лучшие части" для Node.js и его экосистемы. Id купите копию!

И учитывая степень энтузиазма и ясных рабочих часов по всем проектам, может потребоваться через год, или два, или три, резко остудить любые замечания о незрелой экосистеме, сделанные на момент написания этой статьи. В течение пяти лет может быть разумным сказать: "В экосистеме 2015 г. Node.js было несколько минных полей. В экосистеме 2020 г. Node.js есть несколько раев".

15
ответ дан JonathanHayward 02 сент. '15 в 22:18 2015-09-02 22:18

Еще одна вещь node - это возможность создавать несколько v8-приложений node с помощью дочернего процесса node ( childProcess.fork() , каждый из которых требует 10 МБ памяти в соответствии с документами) "на лету", что не влияет на основной процесс работы сервера. Поэтому разгрузка фонового задания, требующего огромной нагрузки на сервер, становится дочерней игрой, и мы можем легко убить их по мере необходимости.

Я много использовал node, и в большинстве приложений, которые мы создаем, требуется одновременное подключение к серверу, таким образом, интенсивный сетевой трафик. Рамки вроде Express.js и новый Koajs (который удалил аддон обратного вызова) сделали работу над node еще проще.

15
ответ дан I_Debug_Everything 08 июня '14 в 17:27 2014-06-08 17:27

Если ваше приложение в основном привязывает веб-apis или другие io-каналы, дайте или возьмите пользовательский интерфейс, node.js может стать для вас честным выбором, особенно если вы хотите выжать большую масштабируемость или, если вашим основным языком в жизни является javascript (или javascript transpilers). Если вы создаете микросервисы, node.js также в порядке. node.js также подходит для любого небольшого или простого проекта.

Его основной точкой продажи является то, что он позволяет передним лицам брать на себя ответственность за исходные вещи, а не за типичный разрыв. Еще одна оправданная точка продажи - если ваша рабочая сила ориентирована на JavaScript, чтобы начать с нее.

Однако, помимо определенного момента, вы не можете масштабировать свой код без страшных взломов для обеспечения модульности, удобочитаемости и управления потоком. Некоторым людям нравятся эти хаки, особенно, исходя из фона javascript, управляемого событиями, они кажутся знакомыми или прощающими.

В частности, когда ваше приложение должно выполнять синхронные потоки, вы начинаете истекать кровью по полузасушливым решениям, что значительно замедляет процесс разработки. Если у вас есть вычислительные элементы в приложении, пройдите с осторожностью (только) node.js. Возможно, http://koajs.com/ или другие новинки смягчают те изначальные тернистые аспекты, по сравнению с тем, когда я изначально использовал node.js или написал это.

9
ответ дан matanster 24 июля '14 в 14:39 2014-07-24 14:39

Я могу поделиться несколькими моментами, где зачем использовать node js.

  • Для приложений реального времени, таких как чат, совместное редактирование, мы лучше используем nodejs, так как это база событий, где события пожара и данные для клиентов с сервера.
  • Простой и понятный, поскольку это база javascript, где у большинства людей есть идея.
  • Большинство текущих веб-приложений, идущих к angular js backbone, с node, легко взаимодействовать с клиентским кодом, поскольку оба будут использовать данные json.
  • Доступно множество доступных плагинов.

Недостатки: -

  • Node будет поддерживать большинство баз данных, но лучше всего mongodb, который не будет поддерживать сложные объединения и другие.
  • Ошибки компиляции... разработчик должен обрабатывать все исключения, другие мудрые, если какое-либо приложение, связанное с ошибкой, перестанет работать, когда мы снова должны пойти и запустить его вручную или с помощью любого инструмента автоматизации.

Вывод: - Nodejs лучше всего использовать для простых приложений в реальном времени. Если у вас очень большая бизнес-логика и сложная функциональность лучше не использовать nodejs. Если вы хотите создать приложение вместе с чатом и любой совместной функциональностью.. node может использоваться в определенных частях и оставаться в соответствии с вашими удобными технологиями.

-2
ответ дан BEJGAM SHIVA PRASAD 09 авг. '16 в 18:02 2016-08-09 18:02
  • Node отлично подходит для быстрых прототипов, но я никогда больше не буду использовать его для чего-либо сложного. Я потратил 20 лет на развитие отношений с компилятором, и я, конечно, пропустил его.

  • Node особенно болезнен для поддержания кода, который вы не посещали некоторое время. Информация о типе и время обнаружения ошибки компиляции - ХОРОШИЕ ВЕЩИ. Зачем бросать все это? Nə üçün? И dang, когда что-то идет на юг, стеки часто довольно бесполезны.

-3
ответ дан mbert65 03 авг. '14 в 23:44 2014-08-03 23:44

Другие вопросы по меткам или Задайте вопрос