Ketergantungan Node.js terlalu berat


9

Baru-baru ini saya mulai bermain dengan node.js.

Sekarang, setiap tutorial simpul di luar sana menyatakan bahwa Anda harus mulai dengan

npm init

dan kemudian, katakan Anda ingin beberapa kerangka kerja server standar, katakanlah Anda memilih express:

npm install express

tapi kemudian Anda akan menginginkan lebih banyak hal yang biasa Anda gunakan dari dunia seperti ASP.NET.

Saya berbicara tentang mesin template (jade) dan pra-prosesor stylesheet (SASS).

Dan kemudian mereka memberi tahu Anda "instal gulp / grunt! Sehingga Anda dapat mengecilkan dan uglify dan menjalankan server dan begitu banyak hal lainnya secara otomatis!"

Dan itu berarti menginstal tegukan, simpul-sass, dan tegukan-sass, dan tegukan-uglify, dan mungkin beberapa hal yang lebih sangat keren (tsd atau babel, penurunan harga dll) ...

Tetapi semua itu berat pada disk dan proyek Anda. Jangan mencari sesaat dan Anda dapat dengan mudah menemukan diri Anda dengan ukuran disk 100MB + untuk proyek itu (yang bahkan belum dimulai!) Belum lagi 10.000+ file karena setiap modul node membawa dependensinya sendiri, tidak peduli itu sama dependensi digunakan oleh modul lain. Dan ini adalah hal yang sangat sulit untuk bergerak ke mana saja, apalagi server web.

Apakah saya melewatkan sesuatu? Saya tidak berpikir itu mungkin bahwa begitu banyak pujian diberikan kepada lingkungan simpul sementara ada cacat yang jelas. Apakah saya berharap terlalu banyak (setelah semua saya memang mencoba menggunakan banyak alat sekaligus), apakah ada sesuatu yang sepele yang diketahui oleh veteran Node untuk memotong ini?


2
sangat setuju, saya kagum melihat npm tree untuk beberapa proyek front end. Saya kira di dunia .net Anda memiliki hal yang sama, tetapi semuanya dikompilasi menjadi biner sehingga Anda tidak menyadarinya
Ewan

2
Sayangnya ini bukan pertanyaan yang spesifik dan dapat dijawab, jadi mungkin akan segera ditutup. Apa yang bisa saya katakan adalah 1) sementara semua alat tambahan itu berguna untuk sesuatu, proyek kecil tidak membutuhkan sebagian besar dari mereka 2) semua kerangka kerja pemrograman lain dengan fungsi yang sama akan datang dengan jumlah barang yang sama (lihat saja di JRE atau .NET unduhan), satu-satunya perbedaan adalah seberapa banyak yang Anda butuhkan adalah bagian dari distribusi "default" dan berapa banyak yang harus Anda temukan dalam paket lain 3) 100 MB pada mesin dev Anda tidak ada artinya
Ixrec

1
@Irrec tentu saja jawabannya, Anda baru saja melakukannya (atau mencoba) :). Tapi kemudian, saya bisa memperdebatkan klaim Anda: 1) ini tidak harus menjadi proyek kecil - pertimbangkan proyek dengan beberapa tampilan dengan file js dan stylesheet mereka sendiri. itu cukup untuk membuat Anda ingin memiliki sass, cssnano dan uglify. juga cukup membuat Anda ingin mengekspresikan, giok dan sedikit lagi. 2) Saya memiliki proyek .net yang layak yang tidak menjadi terlalu berat (dan tidak ada banyak file). 3) mungkin mesin dev modern mengambil ini dengan mudah, tetapi itu juga membebani server, dan itu sedikit lebih memprihatinkan. Apakah aku salah?
Atau Yaniv

2
@OrYaniv Memang, Anda agak membuktikan pendapat saya: ini adalah jenis masalah yang dapat dibahas , tetapi tidak dijawab karena terlalu luas dan terlalu bergantung pada proyek apa yang Anda lakukan dan dependensi apa yang tampaknya Anda lakukan. perlu. Omong-omong, diskusi benar-benar baik-baik saja di chat . Atau di Quora.
Ixrec

3
Selamat datang di dunia node.js "semua atau tidak sama sekali yang membengkak, yang sebenarnya tidak lebih mudah dan tidak lebih baik dari apa pun yang Anda gunakan sebelumnya.
Traubenfuchs

Jawaban:


3

Masalah kiri-pad baru-baru ini adalah contoh utama dari masalah dengan kecenderungan ini di Node. Ketika Anda bergantung pada terlalu banyak hal, semuanya cenderung akan berubah, membuat proyek Anda lebih sulit untuk di-debug dan, untuk pendatang baru, lebih sulit untuk memahami cara kerja bahasa.

Sekarang programmer Node.js baik tahu untuk menulis aplikasi minimalis, di mana dependensi yang bersangkutan. Semakin sedikit hal yang Anda andalkan - semakin baik. Perlu menempelkan string ke kiri? Kode itu dalam helper, itu 11 baris kode dengan kosong. Perlu nomor baris string Anda? Masukkan kode, kurang dari 100 baris kode.

Bahkan untuk tugas-tugas yang lebih rumit, seperti manajemen proyek, saya sarankan tetap berpegang pada Makefiles sementara proyek Anda cukup sederhana - mendengus dan menelan benar-benar, sangat berguna untuk proyek-proyek raksasa yang memiliki banyak pekerjaan berat untuk dilakukan. Tetapi untuk blog SPA Anda? Menulis Makefile, dibutuhkan 5 menit dan Anda tahu cara kerjanya.

Godaan untuk hanya menjelajah npm setiap kali Anda perlu menulis 3 baris kode itu hebat, tetapi harus dilawan, kapan pun itu masuk akal. Jangan sertakan jQuery jika Anda memiliki 3 manipulasi DOM, jangan gunakan angular untuk halaman promo statis itu, jangan gunakan express untuk server sederhana. Tapi Anda sedang mengkode CMS? Anda harus menjadi gila untuk tidak menggunakan paket seperti jQuery, garis bawah dan apa yang tidak. Bekerja dengan 10 jenis koleksi, 3 dbs, dan menanyakannya setiap saat? Anda akan menjadi gila untuk tidak menggunakan garis bawah dan beberapa lainnya. Bayangkan saja 'apakah saya menghemat cukup waktu dengan menginstal paket ini?' atau 'Tidak bisakah saya memasukkan kode ini selama setengah jam atau lebih?'


1
Pada catatan lain, apakah benar-benar membutuhkan 100 baris kode Javascript untuk menambahkan nomor baris ke string?
Robert Harvey

Hahahah, saya belum benar-benar memikirkan implementasi penomoran baris yang realistis, karena ... Saya tidak benar-benar melihat perlunya hal seperti itu ada, apalagi sebagai paket.
BorisStoyanovv

Anda mungkin bisa memotong garis itu menjadi dua dengan membiarkannya saja. Ini benar-benar masalah sederhana untuk dipecahkan. (Dan itu adalah liner satu dalam bahasa seperti skema, dan mungkin python sekarang setelah saya pikirkan)
Shayne
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.