Pertanyaan Bagaimana cara memutuskan kapan menggunakan Node.js?


Saya baru mengenal hal semacam ini, tetapi akhir-akhir ini saya telah mendengar banyak tentang seberapa baik Node.js aku s. Mengingat betapa aku suka bekerja dengan jQuery dan JavaScript secara umum, aku tidak bisa tidak bertanya-tanya bagaimana memutuskan kapan menggunakan Node.js. Aplikasi web yang ada dalam pikiran saya adalah sesuatu seperti Sedikit - mengambil beberapa konten, mengarsipkannya.

Dari semua pekerjaan rumah yang telah saya lakukan dalam beberapa hari terakhir, saya memperoleh informasi berikut. Node.js

  • adalah alat baris perintah yang dapat dijalankan sebagai server web reguler dan memungkinkan seseorang menjalankan program JavaScript
  • memanfaatkan yang hebat Mesin V8 JavaScript
  • sangat baik ketika Anda perlu melakukan beberapa hal pada saat yang bersamaan
  • adalah event-based jadi semua yang luar biasa Ajax-seperti hal-hal yang bisa dilakukan di sisi server
  • mari kita berbagi kode antara browser dan backend
  • mari kita bicara dengan MySQL

Beberapa sumber yang saya temui adalah:

Menimbang bahwa Node.js dapat dijalankan hampir di luar kotak EC2 Amazon contoh, saya mencoba untuk memahami apa jenis masalah yang membutuhkan Node.js sebagai lawan dari raja-raja perkasa di luar sana seperti PHP, Python dan Rubi. Saya mengerti bahwa itu benar-benar tergantung pada keahlian yang dimiliki seseorang dalam bahasa, tetapi pertanyaan saya lebih masuk ke kategori umum: Kapan menggunakan kerangka kerja tertentu dan jenis masalah apa yang sangat cocok untuk itu?


2200
2018-02-21 05:20


asal


Jawaban:


Anda melakukan pekerjaan luar biasa untuk meringkas apa yang mengagumkan tentang Node.js. Perasaan saya adalah bahwa Node.js sangat cocok untuk aplikasi di mana Anda ingin mempertahankan koneksi persisten dari browser kembali ke server. Menggunakan teknik yang dikenal sebagai "jajak pendapat panjang", Anda dapat menulis aplikasi yang mengirimkan pembaruan kepada pengguna secara real time. Melakukan polling panjang di banyak web raksasa, seperti Ruby on Rails atau Django, akan membuat beban besar pada server, karena setiap klien aktif memakan satu proses server. Situasi ini sebesar a tarpit menyerang. Saat Anda menggunakan sesuatu seperti Node.js, server tidak perlu mempertahankan utas terpisah untuk setiap koneksi terbuka.

Ini berarti Anda dapat membuat aplikasi obrolan berbasis browser di Node.js yang hampir tidak memerlukan sumber daya sistem untuk melayani banyak klien. Kapan pun Anda ingin melakukan pemungutan suara jangka panjang ini, Node.js adalah opsi yang bagus.

Perlu disebutkan bahwa Ruby dan Python memiliki alat untuk melakukan hal semacam ini (eventmachine dan memutar, masing-masing), tetapi Node.js melakukannya dengan sangat baik, dan dari bawah ke atas. JavaScript sangat baik untuk model concurrency berbasis callback, dan unggul di sini. Juga, mampu bersambung dan deserialize dengan JSON asli ke klien dan server cukup bagus.

Saya berharap dapat membaca jawaban lain di sini, ini pertanyaan yang fantastis.

Ini perlu menunjukkan bahwa Node.js juga bagus untuk situasi di mana Anda akan menggunakan kembali banyak kode di celah klien / server. Itu Kerangka Meteor membuat ini sangat mudah, dan banyak orang menyarankan ini mungkin masa depan pengembangan web. Saya dapat mengatakan dari pengalaman bahwa itu sangat menyenangkan untuk menulis kode di Meteor, dan sebagian besar dari ini menghabiskan lebih sedikit waktu untuk memikirkan bagaimana Anda akan merestrukturisasi data Anda, sehingga kode yang berjalan di peramban dapat dengan mudah memanipulasinya dan mengembalikannya.

Berikut adalah artikel tentang Piramida dan jajak pendapat panjang, yang ternyata sangat mudah disiapkan dengan sedikit bantuan dari gevent: TicTacToe dan Long Polling with Pyramid.


1359
2018-02-21 05:30



Saya yakin Node.js paling cocok untuk aplikasi waktu nyata: game online, alat kolaborasi, ruang obrolan, atau apa pun di mana yang dilakukan oleh satu pengguna (atau robot? Atau sensor?) Dengan aplikasi harus dilihat oleh pengguna lain dengan segera, tanpa refresh halaman.

Saya juga harus menyebutkan bahwa Socket.IO yang dikombinasikan dengan Node.js akan mengurangi latensi waktu-nyata Anda lebih jauh dari apa yang dimungkinkan dengan polling panjang. Socket.IO akan kembali ke polling panjang sebagai skenario terburuk, dan sebagai gantinya menggunakan soket web atau bahkan Flash jika tersedia.

Tetapi saya juga harus menyebutkan bahwa hampir semua situasi di mana kode mungkin memblokir karena utas dapat lebih baik ditangani dengan Node.js. Atau situasi apa pun di mana Anda memerlukan aplikasi untuk dikendalikan oleh peristiwa.

Juga, Ryan Dahl mengatakan dalam sebuah ceramah bahwa saya pernah menghadiri bahwa Node.js benchmark saingan dekat Nginx untuk permintaan HTTP lama biasa. Jadi jika kita membangun dengan Node.js, kita dapat melayani sumber daya normal kita dengan cukup efektif, dan ketika kita membutuhkan hal-hal yang digerakkan oleh peristiwa, itu siap untuk menanganinya.

Ditambah itu semua JavaScript sepanjang waktu. Lingua Franca di seluruh tumpukan.


410
2018-02-21 06:43



Alasan menggunakan NodeJS:

  • Ini menjalankan Javascript, sehingga Anda dapat menggunakan bahasa yang sama di server dan klien, dan bahkan berbagi beberapa kode di antara mereka (misalnya untuk validasi form, atau untuk membuat tampilan di kedua ujungnya.)

  • Itu single-threaded sistem event-driven adalah cepat bahkan ketika menangani banyak permintaan sekaligus, dan juga sederhana, dibandingkan dengan multi-threaded tradisional Jawa atau kerangka kerja ROR.

  • Kolam yang terus bertambah paket dapat diakses melalui NPM, termasuk klien dan perpustakaan sisi server / modul, serta alat-alat baris perintah untuk pengembangan web. Sebagian besar ini dengan mudah dihosting di github, di mana terkadang Anda dapat melaporkan masalah dan menemukannya dalam beberapa jam! Sangat menyenangkan memiliki segalanya di bawah satu atap, dengan pelaporan masalah terstandardisasi dan pencabutan mudah.

  • Ini telah menjadi lingkungan standar defacto untuk dijalankan Alat yang berhubungan dengan Javascript dan lainnya alat terkait web, termasuk pelari tugas, minifiers, beautifiers, linter, preprocessors, bundlers dan analytics processors.

  • Sepertinya sangat cocok untuk pembuatan prototipe, pengembangan tangkas dan iterasi produk cepat.

Alasan tidak untuk menggunakan NodeJS:

  • Ini menjalankan Javascript, yang tidak memiliki pengecekan jenis waktu kompilasi. Untuk yang besar, kompleks keamanan kritis sistem, atau proyek termasuk kolaborasi antara organisasi yang berbeda, bahasa yang mendorong antarmuka kontrak dan menyediakan pemeriksaan tipe statis dapat menghemat waktu debugging Anda (dan ledakan) dalam jangka panjang. (Meskipun JVM terjebak dengan null, jadi silakan gunakan Haskell untuk reaktor nuklir Anda.)

  • Ditambah lagi, banyak paket di NPM sedikit mentah, dan masih dalam perkembangan yang cepat. Beberapa perpustakaan untuk kerangka kerja yang lebih tua telah mengalami satu dekade pengujian dan perbaikan bug, dan sangat stabil sekarang. Npmjs.org tidak memiliki mekanisme untuk menilai paket, yang telah menyebabkan proliferasi paket melakukan lebih atau kurang hal yang sama, di mana persentase yang besar tidak lagi dipertahankan.

  • Callback neraka bersarang. (Tentu saja ada 20 solusi berbeda untuk ini...)

  • Paket paket yang terus berkembang dapat membuat satu proyek NodeJS muncul berbeda secara radikal dari yang berikutnya. Ada keragaman besar dalam penerapan karena banyaknya opsi yang tersedia (misalnya, Ekspres /Sails.js/Meteor/Derby). Ini kadang-kadang dapat mempersulit pengembang baru untuk terjun dalam proyek Node. Bandingkan itu dengan Rails pengembang bergabung dengan proyek yang ada: dia harus bisa terbiasa dengan aplikasi cukup cepat, karena semua aplikasi Rails didorong untuk menggunakan struktur serupa.

  • Berurusan dengan file bisa sedikit merepotkan. Hal-hal yang sepele dalam bahasa lain, seperti membaca garis dari file teks, adalah cukup aneh untuk dilakukan dengan Node.js bahwa ada pertanyaan StackOverflow dengan 80+ upvote. Ada tidak ada cara sederhana untuk membaca satu catatan pada satu waktu dari file CSV. Dan lain-lain

Saya suka NodeJS, cepat dan liar dan menyenangkan, tetapi saya khawatir itu memiliki sedikit ketertarikan pada kebenaran yang dapat dibuktikan. Mari berharap kita akhirnya bisa menggabungkan yang terbaik dari kedua dunia. Saya ingin melihat apa yang akan menggantikan Node di masa depan ... :)


209
2017-11-25 21:47



Singkatnya:

Node.js sangat cocok untuk aplikasi yang memiliki banyak koneksi konkuren dan setiap permintaan hanya membutuhkan sangat sedikit siklus CPU, karena loop peristiwa (dengan semua klien lainnya) diblokir selama pelaksanaan suatu fungsi.

Artikel bagus tentang loop acara di Node.js adalah Blog teknologi Mixu: Memahami loop peristiwa node.js.


208
2018-01-15 01:48



Saya memiliki satu contoh dunia nyata di mana saya telah menggunakan Node.js. Perusahaan tempat saya bekerja mendapatkan satu klien yang ingin memiliki situs web HTML statis sederhana. Situs web ini untuk menjual satu barang menggunakan PayPal dan klien juga ingin memiliki counter yang menunjukkan jumlah barang yang dijual. Klien diharapkan memiliki jumlah pengunjung yang sangat besar ke situs web ini. Saya memutuskan untuk membuat penghitung menggunakan Node.js dan Express.js kerangka.

Aplikasi Node.js itu sederhana. Dapatkan jumlah barang yang terjual dari Redis database, meningkatkan penghitung ketika barang dijual dan melayani nilai counter ke pengguna melalui API.

Beberapa alasan mengapa saya memilih untuk menggunakan Node.js dalam kasus ini

  1. Ini sangat ringan dan cepat. Ada lebih dari 200000 kunjungan di situs web ini dalam tiga minggu dan sumber daya server minimal telah mampu menangani semuanya.
  2. Penghitung sangat mudah dibuat untuk menjadi real time.
  3. Node.js mudah dikonfigurasi.
  4. Ada banyak modul yang tersedia secara gratis. Sebagai contoh, saya menemukan modul Node.js untuk PayPal.

Dalam hal ini, Node.js adalah pilihan yang luar biasa.


127
2018-05-31 06:34



Alasan terpenting untuk memulai proyek Anda berikutnya menggunakan Node ...

  • Semua orang keren yang ada di dalamnya ... jadi itu harus bersenang-senanglah.
  • Anda dapat hangout di pendingin dan memiliki banyak petualangan Node untuk dipamerkan.
  • Anda seorang pincher penny ketika datang ke biaya hosting cloud.
  • Berada di sana melakukannya dengan Rails
  • Anda benci penyebaran IIS
  • Pekerjaan IT lama Anda menjadi agak membosankan dan Anda berharap Anda berada di Start Up baru yang mengilap.

Apa yang akan terjadi ...

  • Anda akan merasa aman dan aman dengan Express tanpa semua bloatware server yang tidak pernah Anda butuhkan.
  • Berlari seperti roket dan bersisik dengan baik.
  • Anda memimpikannya. Anda menginstalnya. Reposit paket node npmjs.org adalah ekosistem perpustakaan open source terbesar di dunia.
  • Otak Anda akan mendapatkan waktu melengkung di tanah callback bersarang ...
  • ... sampai kamu belajar untuk menjaga dirimu Janji.
  • Sekuel dan Paspor adalah teman API baru Anda.
  • Debugging kebanyakan async code akan mendapatkan umm ... menarik .
  • Waktu untuk semua Noders untuk dikuasai Jenis naskah.

Siapa yang menggunakannya?

  • PayPal, Netflix, Walmart, LinkedIn, Groupon, Uber, GoDaddy, Dow Jones
  • Inilah alasan mereka beralih ke Node.

105
2018-06-12 13:24



Tidak ada yang seperti Silver Bullet. Semuanya datang dengan beberapa biaya yang terkait dengannya. Ini seperti jika Anda makan makanan berminyak, Anda akan membahayakan kesehatan Anda dan makanan sehat tidak datang dengan bumbu seperti makanan berminyak. Ini adalah pilihan individual apakah mereka menginginkan kesehatan atau rempah-rempah seperti dalam makanan mereka. Cara yang sama Node.js mempertimbangkan untuk digunakan dalam skenario khusus. Jika aplikasi Anda tidak sesuai dengan skenario itu, Anda tidak boleh mempertimbangkannya untuk pengembangan aplikasi Anda. Saya hanya menempatkan pemikiran saya pada hal yang sama:

Kapan menggunakan Node.JS

  1. Jika kode sisi server Anda memerlukan siklus cpu yang sangat sedikit. Di dunia lain Anda melakukan operasi non-blocking dan tidak memiliki algoritma berat / Job yang menghabiskan banyak siklus CPU.
  2. Jika Anda berasal dari belakang Javascript dan nyaman dalam menulis kode Single Threaded seperti sisi klien JS.

Ketika TIDAK menggunakan Node.JS

  1. Permintaan server Anda bergantung pada algoritma mengkonsumsi / Job berat CPU.

Skalabilitas Pertimbangan dengan Node.JS

  1. Node.JS sendiri tidak menggunakan semua inti dari sistem yang mendasari dan itu single threaded secara default, Anda harus menulis logika sendiri untuk menggunakan prosesor multi-core dan membuatnya multi-threaded.

Alternatif Node.JS

Ada pilihan lain untuk digunakan di tempat Node.JS Vert.x tampaknya cukup menjanjikan dan memiliki banyak fitur tambahan seperti poligon dan pertimbangan skalabilitas yang lebih baik.


60
2018-04-05 17:17



Hal hebat lainnya itu kupikir tidak ada yang menyebutkan tentang Node.js adalah komunitas luar biasa, sistem manajemen paket (npm) dan jumlah modul yang ada yang dapat Anda sertakan dengan hanya menyertakannya dalam file package.json Anda.


41
2018-06-06 17:42



Karya saya: nodejs sangat bagus untuk membuat sistem waktu nyata seperti analitik, obrolan-aplikasi, apis, server iklan, dll. Neraka, saya membuat aplikasi obrolan pertama saya menggunakan nodejs dan socket.io di bawah 2 jam dan itu juga selama ujian minggu!

Edit

Sudah beberapa tahun sejak saya mulai menggunakan nodejs dan saya telah menggunakannya dalam membuat banyak hal yang berbeda termasuk file server statis, analitik sederhana, aplikasi chat dan banyak lagi. Ini yang saya ambil ketika menggunakan nodejs

Kapan digunakan

Saat membuat sistem yang mengutamakan konkurensi dan kecepatan.

  • Hanya soket server seperti aplikasi obrolan, aplikasi irc, dll.
  • Jejaring sosial yang menekankan pada sumber daya waktu nyata seperti geolokasi, aliran video, streaming audio, dll.
  • Menangani sebagian kecil data sangat cepat seperti webapp analytics.
  • Sebagai mengekspos api REST saja.

Kapan tidak digunakan

Ini adalah webserver yang sangat fleksibel sehingga Anda dapat menggunakannya di mana pun Anda inginkan, tetapi mungkin bukan tempat-tempat ini.

  • Blog sederhana dan situs statis.
  • Sama seperti server file statis.

Perlu diingat bahwa saya hanya rewel. Untuk server file statis, apache lebih baik terutama karena tersedia secara luas. Komunitas nodejs telah tumbuh lebih besar dan lebih matang selama bertahun-tahun dan aman untuk mengatakan nodejs dapat digunakan hampir di mana saja jika Anda memiliki pilihan hosting sendiri.


37
2018-05-06 13:52