MEAN vs LAMP untuk projek pengaturcaraan anda yang seterusnya

Peralihan dari rasa ingin tahu canggih ke tenaga kerja praktikal bukanlah sesuatu yang dibuat oleh banyak teknologi. Permulaan yang tidak menentu semalam sering gagal memenuhi janji Versi 0.1 mereka. Tidak begitu untuk teknologi yang membentuk timbunan MEAN yang sangat akronim.

Baru beberapa tahun yang lalu MongoDB, Express.js, AngularJS, dan Node.js menaikkan alis mereka sendiri. Sekarang mereka sudah dewasa dan bersekongkol, dan bersama-sama mereka melakukan pekerjaan serius, tidak banyak pembangun dari perbukitan LAMP kem. Tetapi bagaimana sebenarnya perkara MEAN yang baru ini disusun melawan LAMP? Bilakah lebih baik memilih LAMP matang yang diuji dengan baik daripada koleksi teknologi berpusatkan JavaScript yang baru ini?

Jawapannya adalah apabila kesederhanaan dan struktur umum menjadikan hidup anda lebih mudah. MongoDB menawarkan lapisan yang lebih fleksibel dan menampung untuk menyimpan data. Node.js memberikan perhubungan yang lebih baik untuk menjalankan pelayan anda, sementara Express membantu menyeragamkan bagaimana anda membina laman web anda. Pada pelanggan, Angular menyediakan cara yang bersih untuk menambahkan fungsi interaktif dan komponen kaya yang didorong oleh AJAX. Gabungkan semuanya dan mereka membuat mekanisme yang bersih dan koheren untuk memindahkan data dari pengguna ke ladang cakera dan kembali lagi.

Bagaimanapun, penjelasan sebenarnya lebih mendalam. Di sini kami tawarkan sembilan alasan untuk memberi MEAN percubaan dengan projek anda yang seterusnya. Tidak semua orang mempunyai masa atau anggaran untuk membuang dan menyusun semula yang lama dalam kerangka terkini, paling trendi, dan juga tidak harus membuang kebolehpercayaan yang kuat dari alat yang diuji dalam pertempuran seperti Apache, MySQL, atau PHP. Tetapi untuk projek lapangan hijau yang dapat memanfaatkan fleksibiliti, kesederhanaan, dan prestasi, MEAN yang berjalan dapat menjadikan hidup anda lebih baik daripada yang anda fikirkan.

MongoDB dibina untuk awan

Sekiranya rancangan aplikasi web anda termasuk memanfaatkan janji penn-per-CPU awan, timbunan MEAN menawarkan lapisan pangkalan data yang menarik di MongoDB. Pangkalan data moden ini dilengkapi dengan pelindung automatik dan sokongan kluster penuh, langsung dari kotak. Pasang MongoDB dan ia tersebar di sekumpulan pelayan anda untuk menawarkan sokongan failover dan replikasi automatik. Memandangkan kemudahan dengan aplikasi yang dapat dikembangkan, diuji, dan dihoskan di awan, ada sedikit alasan untuk tidak mempertimbangkan MongoDB untuk projek anda yang seterusnya.

Struktur MySQL adalah terhad 

Sesiapa yang telah mengembangkan atau mengekalkan aplikasi berasaskan LAMP untuk jangka masa yang lama mengetahui bahawa kekuatan MySQL sebagai pangkalan data relasional kadang-kadang merasa sedikit memukau. Seperti semua pangkalan data hubungan, MySQL memaksa anda untuk memasukkan data anda ke dalam jadual. Ini tidak menjadi masalah jika setiap entri sesuai dengan format yang sama, tetapi seberapa sering dunia ini murah hati? Bagaimana jika dua orang berkongsi alamat yang sama tetapi tidak mempunyai akaun yang sama? Bagaimana jika anda ingin mempunyai tiga baris ke alamat dan bukannya dua? Siapa yang belum mencuba memperbaiki pangkalan data hubungan dengan terlalu banyak data menjadi satu lajur? Atau jika anda akhirnya menambah lajur lain, dan jadual tumbuh tanpa had.

MongoDB, sebaliknya, menawarkan struktur dokumen yang jauh lebih fleksibel. Ingin menambahkan sedikit maklumat peribadi ke profil pengguna anda? Cukup tambahkan medan ke borang anda, gulungnya dengan data selebihnya dalam dokumen JSON, dan masukkan ke dalam koleksi MongoDB anda. Ini bagus untuk projek dalam aliran dan untuk menangani data yang akhirnya terbukti sukar untuk dikekang dalam bentuk jadual.

Ruang cakera murah

Di antara penyataan hebat pangkalan data hubungan adalah arahan JOIN. Dengan BERGABUNG, kita dapat menjimatkan ruang cakera dengan membuang medan berulang seperti bandar, negeri, dan poskod. Dengan menyimpan data yang sering diakses dan diulang ini dalam jadual berasingan yang dapat dimasukkan dalam hasil masa depan melalui JOIN, kami memastikan pangkalan data kami rapi dan cakera kami langsing.

Tetapi BERSAMA boleh menjadi sukar untuk beberapa dan sukar pada RAM, dan walaupun masih merupakan idea yang baik untuk mengasingkan dan mengakses data dalam jadual berasingan melalui JOIN, tidak banyak keperluan untuk menjimatkan ruang cakera sekarang bahawa pemacu cakera diukur dalam beberapa terabyte. Ruangnya sangat murah sehingga sebilangan pereka pangkalan data akhirnya mengubah bentuk data mereka kerana JOIN terlalu lambat. Sebaik sahaja anda melakukannya, anda tidak memerlukan pangkalan data hubungan. Mengapa tidak menggunakan MongoDB?

Node.js mempermudah lapisan pelayan

Menavigasi pelbagai lapisan tumpukan LAMP boleh menjadi tarian sukar dari banyak topi, yang membuat anda mengacak-acak pelbagai fail konfigurasi dengan sintaks yang berbeza. MEAN mempermudah ini melalui penggunaan Node.js.

Ingin mengubah cara permintaan laluan anda? Taburkan dalam beberapa JavaScript dan biarkan Node.js melakukan yang lain. Ingin menukar logik yang digunakan untuk menjawab pertanyaan? Gunakan JavaScript di sana juga. Sekiranya anda ingin menulis semula URL atau membuat pemetaan ganjil, itu juga dalam JavaScript. Ketergantungan timbunan MEAN pada Node.js meletakkan jenis paip seperti ini dalam satu tempat, semua dalam satu bahasa, semuanya dalam satu timbunan logik. Anda tidak perlu membaca semula halaman manual untuk PHP, Apache, dan apa sahaja yang anda tambahkan ke timbunan. Walaupun generasi LAMP mempunyai fail konfigurasi yang berbeza untuk semuanya, Node.js mengelakkan masalah itu sama sekali. Memiliki segala-galanya dalam satu lapisan bermaksud kurang kekeliruan dan kemungkinan kecil bug aneh dibuat oleh interaksi pelik antara pelbagai lapisan.

MEAN menjadikan kod isomorfik

Kesederhanaan tidak berhenti dengan menggunakan JavaScript di pelayan. Dengan menggunakan MEAN, anda juga dapat menikmati JavaScript yang sama pada klien, meninggalkan skizofrenia klien / pelayan stack LAMP. Sekiranya anda menulis kod untuk Node dan memutuskan kedudukannya lebih baik di Sudut, anda boleh memindahkannya dengan mudah, dan hampir pasti untuk menjalankannya dengan cara yang sama. Fleksibiliti ini menjadikan pengaturcaraan aplikasi berasaskan MEAN menjadi lebih mudah. Selain itu, jika anda mengusahakan sebuah projek, anda tidak perlu mencari ahli PHP dan pakar JavaScript, atau pakar front-end dan back-end. Sebaliknya, itu semua JavaScript di seluruh timbunan.

JSON di mana sahaja

Angular dan MongoDB sama-sama bercakap JSON, begitu juga Node.js dan Express. Data mengalir dengan rapi di antara semua lapisan tanpa menulis semula atau memformat semula. Format asli MySQL untuk menjawab pertanyaan adalah, semuanya ada. Ya, PHP sudah mempunyai kod untuk mengimport data MySQL dan membuatnya mudah diproses dalam PHP, tetapi itu tidak membantu lapisan klien. Ini mungkin agak kecil bagi veteran LAMP berpengalaman kerana terdapat begitu banyak perpustakaan yang diuji dengan baik yang menukar data dengan mudah, tetapi semuanya kelihatan agak tidak cekap dan membingungkan. MEAN menggunakan format JSON yang sama untuk data di mana-mana, yang menjadikannya lebih mudah dan menjimatkan masa memformat semula ketika melewati setiap lapisan. Selain itu, keberadaan JSON melalui timbunan MEAN menjadikan kerja dengan API luaran menjadi lebih mudah: DAPATKAN, manipulasi, hadirkan, POST, dan simpan semua dengan satu format.

Node.js sangat pantas

Apache hebat, tetapi hari ini, Node.js sering kali lebih cepat. Sejumlah tanda aras menunjukkan bahawa Node.js menawarkan prestasi yang lebih baik, sambil melakukan lebih banyak lagi. Mungkin ini zaman kod. Mungkin seni bina acara Node.js lebih pantas. Tidak menjadi masalah. Hari-hari ini, terutama di kalangan pengguna peranti mudah alih yang tidak sabar, mencukur walaupun milisaat dari prestasi aplikasi anda adalah penting dan Node.js dapat melakukannya, sambil menawarkan mekanisme Turing-lengkap untuk memprogramkannya semula.

Kedalaman penting

Pencinta PHP suka melekat perpustakaan kod hebat yang dibina untuk platform dominan seperti WordPress atau Drupal. Mereka mempunyai alasan yang baik untuk merasa bangga, tetapi kelebihan mereka semakin meningkat ketika Node.js mengejar ketinggalan.

Pengurus pakej Node.js, NPM, lebih mudah untuk berkongsi kod, dan repositori awam yang menyasarkan Node.js berkembang dengan cepat. Walaupun penonton PHP mungkin memimpin pada masa ini, masa depan mungkin memihak kepada Node.js. Tambahan, penyandang jawatan sering terbukti rapuh dalam menghadapi perubahan arah. Setiap percubaan untuk memodenkan platform yang diperkukuhkan seperti Drupal dengan versi baru bererti bahawa lebih banyak pembangun mungkin membiarkan mata mereka berkeliaran ke platform yang lebih baru dan lebih pantas yang dibina di sekitar Node.js.

Sudut segar

Tidak adil jika membandingkan "A" dalam "MEAN" dengan apa-apa di LAMP stack kerana LAMP tidak termasuk analog. Sekiranya anda ingin melakukan apa sahaja di pihak pelanggan, anda sendiri. Sudah tentu, terdapat banyak kerangka kerja PHP yang bagus yang berfungsi dengan MySQL, tetapi masing-masing sedikit berbeza dan bergerak ke arahnya sendiri. WordPress, Joomla, dan Drupal, misalnya, menawarkan strategi yang berbeza, dan sukar untuk beralih di antara mereka, apalagi kod port dari satu ke yang lain. Menguruskan satu kerangka pelanggan menambah ketekalan dan kestabilan.

Ini juga membantu bahawa Angular dibina oleh orang yang berpengalaman selama 20 tahun dalam membina aplikasi web. Mereka cukup tahu untuk meninggalkan reka bentuk ke HTML dan CSS. Mereka juga mencari cara untuk menambahkan sedikit JavaScript untuk mengimbas HTML. Pereka Angular melihat apa yang dilakukan oleh manusia dengan baik, kemudian menyesuaikan JavaScript untuk menyokong manusia. Sistem templat dan lapisan logik secara dramatis lebih bersih daripada apa yang telah kita lihat sebelumnya, sebahagiannya kerana pasukan mencari cara yang lebih mudah untuk memanfaatkan kekuatan JavaScript tempatan untuk meneka apa yang anda lakukan.

Campur dan padan

Sudah tentu, jika anda benar-benar pemilih, tidak ada sebab mengapa anda tidak boleh mencampurkannya sedikit. Banyak pembangun menggunakan MongoDB dengan Apache dan PHP, dan yang lain lebih suka menggunakan MySQL dengan Node.js. Angular berfungsi dengan baik dengan mana-mana pelayan, bahkan yang menjalankan PHP untuk menyampaikan data dari MySQL. Anda tidak perlu menjadi hamba akronim.