Saya telah melihat banyak pembicaraan tentang betapa hebatnya Node.js untuk aplikasi web waktu nyata - hal-hal yang membutuhkan soket, Komet, komunikasi berat AJAX, dan sebagainya. Saya tahu bahwa model-driven, asynchronous, thread-driven modelnya juga bagus untuk concurrency dengan overhead yang rendah.
Saya juga melihat tutorial Node.js untuk aplikasi non-realtime yang lebih sederhana, 'tradisional', (misalnya, contoh blog standar, yang tampaknya menjadi standar 'Hello World' untuk orang yang mempelajari pengembangan aplikasi). Dan saya juga tahu bahwa simpul-statis memungkinkan Anda untuk melayani aset statis.
Pertanyaan saya adalah: apakah ada alasan bagus untuk menghindari Node.js untuk aplikasi web tradisional, seperti iklan baris, forum, contoh blog yang disebutkan di atas, atau jenis aplikasi CRUD yang Anda buat untuk aplikasi bisnis internal? Hanya karena ia unggul di semua hal realtime yang funky, apakah itu kontraindikasi untuk penggunaan yang lebih tenang?
Satu-satunya hal yang bisa saya pikirkan, adalah kelangkaan perpustakaan yang sudah matang (meskipun itu berubah).
(Alasan saya bertanya adalah bahwa saya sedang mempertimbangkan membuang PHP untuk Node.js, sebagian besar untuk mengatasi ketidakcocokan impedansi beralih antar bahasa, tetapi juga agar saya dapat menggunakan kembali kode validasi dan yang lainnya. Superego saya memperingatkan saya untuk memilih alat terbaik untuk pekerjaan itu , namun, saya tidak punya banyak waktu untuk belajar lima belas bahasa dan semua perpustakaan pengguna mereka hanya untuk memiliki gudang senjata yang komprehensif. Ini juga meyakinkan bahwa Node.js mungkin memberi saya jalur pengoptimalan yang lebih mudah daripada PHP / Apache di masa depan ketika saya harus mulai memikirkan lalu lintas yang padat.)
[EDIT] Terima kasih atas jawabannya sejauh ini, teman-teman; Saya hanya ingin melihat apakah ada orang lain yang mempertimbangkan sebelum saya memilih jawaban. Jawaban dari @Raynos agak mengkonfirmasi apa yang saya pikirkan, dan tautan dari komentator memberikan makanan yang baik untuk dipikirkan, tetapi saya ingin melihat apakah ada orang lain yang memiliki jawaban spesifik-Node, seperti 'JANGAN GUNAKAN NODE UNTUK MASALAH X ' (Selain tugas CPU tinggi; Saya sudah tahu :-)
sumber
Jawaban:
Ya, jika Anda memiliki N tahun di platform web X maka jelas Anda dapat mengembangkan aplikasi di platform X lebih cepat.
Jika Anda ingin melakukan Y dan platform X memiliki solusi pra-dibuat Y yang melakukan X maka lakukanlah.
Semua alasan umum mengapa Anda harus menggunakan satu platform di atas yang lain.
Ya ada platform lain yang memungkinkan Anda menulis aplikasi generik lebih cepat, ruby on rails muncul di benak Anda.
Namun, itu dikatakan. Saya memiliki pengalaman dengan simpul dan tidak dapat mengklaim bahwa saya akan memilih platform lain daripada simpul kecuali ia melakukan sejumlah besar fitur di luar kotak bagi saya.
Pada dasarnya ini adalah pertanyaan sederhana
Tidak ada alasan kuat mengapa node.js adalah platform yang tidak nyaman (selain "i hate javascript")
sumber
Setelah bekerja dengan node selama beberapa minggu, saya akan mengatakan ya, itu sangat keren. Tetapi belum tentu sesuatu yang ingin Anda gunakan untuk mengganti aplikasi web yang sedang berjalan dengan ... atau, imo, memang seharusnya begitu.
Ingat, simpul adalah server sendiri. Ini memperkenalkan kompleksitas jika Anda ingin menjalankan lebih dari satu aplikasi node.js Anda. yaitu, jika Anda memiliki lebih dari satu situs / domain yang dihosting di mesin. Ini tidak seperti tumpukan LAMP, di mana Anda dapat memiliki selusin aplikasi PHP untuk setengah lusin domain yang berbeda menjalankan server yang sama (pada port 80, setidaknya). Ada kerangka kerja untuk simpul yang mungkin memungkinkan, tetapi menambahkan kompleksitas yang tidak Anda perlukan jika Anda terjebak pada platform web tradisional. (Anda tentu saja dapat juga mengatur proxy dengan meletakkan server web di depan node, tetapi hal tersebut mengalahkan manfaat menggunakan node).
imo, Node sangat cocok untuk bekerja bersama dengan server web tradisional. Cara saya mengatur hal-hal sekarang adalah untuk menyajikan html / js / gambar statis melalui apache, dan menangani kebutuhan data 'real time' dengan polling panjang ke aplikasi node.
sumber
Alasan yang baik untuk memiliki pemikiran detik tentang simpul tidak teknis - ini bagus dan menakjubkan pada apa yang dilakukannya.
Mereka adalah bisnis dan khususnya sumber daya manusia, yaitu programmer yang mengetahuinya, berapa biayanya dan ketersediaannya. Ini tidak terlalu sulit untuk dipelajari, tetapi seperti halnya dengan teknologi yang lebih baru, jumlah orang yang mengenalnya dengan baik (atau ingin) adalah subest dari kumpulan pekerja yang lebih besar.
sumber
Ini adalah pertanyaan yang sangat bagus, yang harus kita tanyakan, agar terlalu memajukan seni.
Saya sangat ingin tahu (seperti Paul d'Aoust) di mana keterbatasan Node.JS ada. Sayangnya, banyak jawaban yang PENUH dari bias subyektif dan alasan yang relevan untuk sementara.
Saya bertanya pada diri sendiri: BISAKAH KITA MENYARANKAN BIAS SUBJEKTIF DAN MENDAPATKAN JAWABAN PADAT DENGAN PERTANYAAN YANG RELEVAN INI?
Poin yang tersisa tampaknya adalah:
1. NodeJS tidak setua Kerangka Tradisional. Seperti yang disarankan Paul d'Aoust, ini hanya alasan yang relevan untuk sementara waktu, bukan untuk penghindaran penuh - tetapi sebaliknya meninjau dan uji tuntas. Melakukan pekerjaan rumah kita sebagai profesional web diharapkan, dan itu adalah tugas kita untuk menentukan yang paling cocok dari teknologi untuk organisasi, kebutuhan mereka, masa depan mereka, tim (dan bukan kita). Kedewasaan adalah kebutuhan untuk klarifikasi dan penilaian untuk selera risiko, tetapi bukan penghindaran.
2. NodeJS sebagai Server Proxy. Sebuah saran bijak, dari diskusi sebelumnya, yang patut ditinjau dan dipertimbangkan. Ini adalah gagasan menggunakan Node dalam korelasi dengan teknologi yang ada sebagai pola desain proxy antarmuka front-end. Tetapi juga, itu bukan alasan untuk MENGHINDARI menggunakan node, tetapi sebagai alasan untuk menghindari menggunakannya sebagai pengganti penuh. Alih-alih memilih pendekatan wajar.
3. Debugging Node. Dalam percakapan dengan pengembang inti Node di Joyent ada banyak komplikasi seputar debuggability dan melacak kembali akar penyebab masalah yang dihasilkan dari inti (berdasarkan pada eksekusi thread tunggal dan ketidakmampuan untuk melihat ke thread sebelumnya). Ini patut dipertimbangkan dan dievaluasi - tetapi (sekali lagi) kemungkinan tidak benci untuk penggunaan umum hanya kasus tepi yang dapat mendorong amplop. Mungkin kebutuhan spesifik Anda akan masuk dalam kategori ini dan mungkin tidak.
4. Sumber Daya Manusia. Ini adalah alasan terbaik untuk MENGHINDARI menggunakan JS di halaman ini, dan menurut pendapat saya yang sederhana itu adalah kebenaran yang nyata dan tidak nyaman. Ini menimbulkan pertanyaan: apakah perusahaan Anda memiliki profesional berbakat yang tepat untuk melihat proyek melalui siklus hidup penuh? Jika tidak, tidak ada pertanyaan yang perlu Anda hindari NodeJS. Atau sebagai gantinya pertimbangkan A) menemukan bakat yang tepat, atau B) Mendidik bakat yang ada.
Keluhan: Pengamatan saya terhadap keluhan pada JavaScript adalah bahwa, banyak hasil lebih banyak dari Kesalahan Pengguna daripada kesalahan yang konsisten dari bahasa tersebut. Kami telah membantah banyak klaim terhadap "The Hate JavaScript Diatribe" dan kami akan terus membantah lebih banyak lagi. Masalah seperti - dokumentasi tidak cukup baik, tidak cukup seksi, tetapi orang tidak menyukainya, itu kanker, itu iblis, atau terlalu "salah ketik" (-Cichardson), bersifat subyektif dan keluhan bias yang perlu disingkirkan untuk pengambilan keputusan perusahaan yang akurat.
Pada akhirnya, jawaban yang benar mungkin - tidak ada alasan bagus untuk MENGHINDARI NodeJS . Mungkin inilah sebabnya ia mengalami pertumbuhan, adopsi, dan kontribusi yang cepat. Tetapi bagi kita semua, mungkin jawabannya di sini adalah untuk terus mengevaluasi, meneliti, dan memahami NodeJS dengan lebih baik - dan mencari keengganan yang nyata. Dalam upaya menjadi terbuka untuk memahami dengan tepat di mana Node.JS belum dewasa - kami menemukan di mana kita harus membuatnya lebih baik. Dan itu adalah berkah.
Pertanyaan bagus. Saya tetap ingin tahu seseorang untuk mengemukakan alasan yang lebih baik untuk menghindari NodeJS - daripada ini.
sumber
Apakah ada manfaat menggunakan simpul lebih dari X untuk aplikasi non-realtime:
Manfaat menggunakan X over Node untuk aplikasi non-realtime:
Jawaban saya pasti tidak akan valid pada tahun 2015. Pada tahun 2014, lewati Node untuk aplikasi web non-realtime tetapi tetap awasi.
Setiap kerangka kerja web memiliki poin kuat. Anda akan bahagia saat Anda menggunakannya untuk saat itu. Aplikasi web non-realtime bukanlah titik kuat kerangka kerja web Node.
sumber
Node.js adalah platform yang sangat populer dan memiliki banyak fitur menarik blah blah blah, tetapi penggunaan alat adalah preferensi pribadi. Saya memberi Node.js empat kali dan saya tidak senang dengan itu. Inilah alasan saya. Harap diingat bahwa beberapa alasan tersebut sudah usang, atau hanya bersifat pribadi: P
sumber
HTTP tidak memiliki kewarganegaraan, jadi sebenarnya tidak ada aplikasi web non-realtime dan karenanya tidak ada alasan Anda tidak dapat menggunakan simpul untuk semuanya.
Yang mengatakan, simpul lebih cocok untuk jenis arsitektur aplikasi tertentu. PHP adalah file html yang mengandung sedikit kode. Node adalah kode yang secara opsional mengandung sedikit html.
Ini berarti bahwa jika aplikasi Anda adalah bentuk html standar tanpa skrip sisi klien, PHP akan lebih mudah. Node memang memiliki alat templating, tetapi jelas tidak seatur sesuatu seperti PHP.
Jika Anda memiliki banyak skrip sisi klien dan menyimpan data dengan ajax, Anda berakhir dengan fungsi panggilan klien html statis di server. Persis seperti inilah simpulnya. Meskipun bukan cara aplikasi CRUD biasanya dibangun, Anda dapat menghasilkan sesuatu yang cukup bagus dengan kerangka kerja yang tepat.
sumber