Saya telah menjadi pengembang PHP selama lebih dari 10 tahun dan saya baru saja pindah ke dunia full stack JS. Saya sudah terbiasa dengan JavaScript. Saya memiliki fase jQuery, lalu Aplikasi Angular dan akhirnya saya mulai menggunakan React
Ketika saya masih pemula di PHP, saya menyematkannya di file HTML. Kode saya berantakan. Oleh karena itu saya mulai menggunakan kerangka kerja untuk mencoba mengaturnya. ZF1 dan ZF2. Dengan berlalunya waktu, pendekatan API-pertama memberi saya server yang terdiri dari REST API yang dihasilkan dan beberapa ratus baris kode khusus
Karena hanya sebagian kecil dari proyek kami yang menggunakan PHP, muncul pertanyaan;
Saya akan menyajikan Anda dalam artikel ini sebagian besar perjalanan saya di sisi server dari PHP ke Node. js, dan tidak akan membahas tentang Webpack, React, dan teknologi frontend JS lainnya
Evolusi tumpukan
Node. js adalah komponen utama tumpukan baru kami. Itu mengeksekusi program JavaScript dengan kecepatan tinggi
Itu melakukan tugasnya dengan sangat baik, sehingga banyak alat yang sebelumnya ditulis dalam bahasa tingkat rendah sekarang memiliki rekan mereka di JavaScript. Menginstal program asli sangat membosankan sehingga kami harus menggunakan Ansible untuk dapat menerapkan tumpukan kami. Karena alat pilihan baru kami sekarang hanya bergantung pada Node. js, satu-satunya hal yang harus kita instal sendiri di server adalah NVM (Node Version Manager). alat yang didedikasikan untuk menginstal Node. js
Cara menginstal Node. js dengan benar dengan NVM
Mengandalkan manajer paket OS atau menginstal Node secara manual. js dengan cepat membawa kami ke banyak masalah saat kami mencoba beralih versi. Jadi kami menggunakan NVM
Sangat mudah untuk mengaturnya
Setelah diinstal kami dapat melakukannya
- Instal Node yang berbeda. js versi pada satu sistem dengan satu perintah
- Beralih dengan mulus di antara Node tersebut. versi js
Lebih baik lagi, NVM bekerja di Linux, Mac dan Windows berkat nvm-windows
Javascript pada tahun 2017
Saat mulai belajar JavaScript selama studi saya, itu dilihat sebagai bahasa sampah, “sayangnya diperlukan” untuk membuat situs web menjadi dinamis. Jadi saya tidak pernah meluangkan waktu untuk mempelajarinya dengan benar. Saya kebanyakan belajar tentang JavaScript dari posting blog dan jawaban stack-overflow. Saya menyesalinya
Saya belum siap untuk mulai menggunakan alat atau kerangka JavaScript modern. JavaScript di tahun 2017 adalah bahasa yang sangat berbeda, dengan fitur-fitur modern seperti
- Kelas
- Janji (sekarang bawaan dalam bahasa)
- Operator perusak dan penyebaran
- Modul dan pemuat modul
- Peta / Set dan versi lemahnya
- Asinkron / Menunggu
Jadi butuh waktu untuk mempelajari banyak materi untuk mempelajari Javascript dengan cara yang benar. Keluarga Babelj. Situs web .io memberi saya gambaran terbaik tentang apa itu pemrograman dalam JavaScript saat ini
Dari Komposer ke Benang
Komposer adalah alat yang sangat bagus tetapi lambat. NPM memiliki masalah yang sama, jadi kami memilih Yarn sebagai gantinya. Ini adalah alternatif yang lebih cepat untuk NPM
Pada proyek terakhir saya, kami memiliki sekitar seratus dependensi. Di antara tim kami yang terdiri dari 10 pengembang, kami memiliki setidaknya 2 modifikasi folder node_modules per hari
(10 dev + 3 env) * 2 pemasangan/hari * 60 hari * 3 mnt/pemasangan = 78 jam
Memang, dua minggu dihabiskan untuk melihat loader dan membaca Reddit. 3 menit cukup lama untuk menambah biaya proyek tetapi terlalu pendek untuk beralih ke tugas pengembangan lainnya
Dengan menurunkan waktu penginstalan dari 3 menit menjadi 1 menit dengan Yarn, kami menghemat 46 jam fokus. Itu bagus jika Anda bertanya kepada saya
Menghasilkan API Dalam JavaScript
Kode akan berbicara sendiri. Berikut adalah contoh minimal API Berdasarkan
- Express, JavaScript ringan yang setara dengan Zend Framework 2 / Symfony
Dengan beberapa baris kode, kami mendapatkan REST API yang dapat dikonfigurasi dan diperpanjang
Setelah menghasilkan lebih dari 50 titik akhir API dengan Apigility, kami yakin bahwa membuat titik akhir REST dapat dilakukan DAN efisien
Epilog menghasilkan 10 titik akhir kami tanpa masalah. Kami dapat memasukkan beberapa kode khusus di alur kerja default untuk menangani aturan yang rumit, seperti hak pengguna. Apa yang tidak dapat dihasilkan telah dikembangkan sebagai titik akhir Express RPC sederhana dengan bantuan Sequelize
Memang benar bahwa Zend Framework 2 memiliki lebih banyak fitur daripada Express. Tapi Express elegan, ramping, dan cukup untuk semua kebutuhan kita. Kami tidak melewatkan apa pun
Aku merindukan tipeku. Mengalir untuk menyelamatkan
Kemampuan untuk menambahkan masukan dan mengembalikan petunjuk jenis ke skrip PHP kami, hanya jika diperlukan, adalah salah satu fitur yang paling saya sukai dalam bahasa ini.
Selama bertahun-tahun saya berpikir bahwa tidak ada cara untuk mendapatkan dukungan yang sama untuk tipe tanpa berkomitmen untuk berpindah ke TypeScript
saya salah
Saya menemukan Flow, juga dikenal sebagai Flow-type, dan mulai menambahkan tipe ke file JavaScript saya dengan mudah
Flow adalah alat yang mudah dipasang
Ini adalah keikutsertaan yang mudah, kami hanya perlu menambahkan satu baris di bagian atas file yang ingin kami lacak
/* @aliran */ atau // @aliran
Kemudian, perintah "pemeriksaan aliran" memberikan laporan lengkap berdasarkan jenis yang disimpulkan
Jika proyek Anda menggunakan transpiler seperti Babel, aturan baru dapat ditambahkan untuk menangani petunjuk tipe Flow di dalam kode JavaScript seperti di PHP
Bagaimana jika server saya mogok?
Dengan PHP, skrip yang mogok berarti permintaan tidak dilayani. Dengan Node. js, jika server crash, website down. Jadi kami harus mengelola proses kami
Kami beralih dari Supervisord ke pesaing keren yang ditulis dalam JavaScript
❤ PM2 (juga dikenal sebagai Manajer Proses 2) ❤
Dengan banyak hati karena ini adalah pilihan favorit saya dari artikel ini
Selain memiliki keuntungan untuk dipasang melalui Benang, PM2 juga memiliki kelebihan lainnya. Ini mendukung semua fitur pemantauan Supervisord dan melakukan lebih banyak lagi. Ini melacak beban dan memori dari setiap proses dan dapat dikonfigurasi untuk memuat ulang ketika kode mereka berubah
“pm2 monit” akan memberikan gambaran rinci tentang apa yang terjadi pada setiap proses secara real time. Selain itu, masuk terasa lebih mudah karena kami, secara default, dapat menggunakan konsol asli. catatan()/. memperingatkan()/. kesalahan()
Lebih baik lagi, sementara lingkup Supervisord terbatas pada pengelolaan proses, PM2 juga dapat mengganti beberapa skrip penerapan dengan file konfigurasi sederhana
PM2 bagi saya adalah salah satu manfaat terbesar dari pindah ke tumpukan penuh JavaScript. Namun kita dapat menggunakannya dengan bahasa apa pun, hanya saja tidak terintegrasi
Konfigurasikan proyek Anda dengan. lingkungan
Phing digunakan untuk tiga hal dalam proyek kami
- Mengonfigurasi proyek
- Pembuatan skrip
- Menyimpan perintah yang berguna
Di dunia JavaScript, bagian konfigurasi dapat ditangani oleh a. env, dengan perpustakaan DotEnv yang hebat. Ini memungkinkan kita untuk menggunakan variabel lingkungan untuk mengonfigurasi aplikasi kita. Ini adalah praktik yang baik dari metodologi Aplikasi Dua Belas Faktor, referensi yang kami gunakan setiap hari
Bagian skrip dari Phing tidak lagi layak untuk digunakan karena semua skrip kami, baik terkait dengan konfigurasi perangkat lunak di luar dunia PHP, seperti Supervisord, yang tidak kami miliki lagi atau dapat dibuat sebagai skrip shell independen dalam beberapa
Pada akhirnya, satu-satunya peran yang akan dipenuhi Phing adalah menyimpan perintah dan mengalikannya. Dan ini ditangani dengan luar biasa oleh Yarn (atau NPM)
Jadi kita bisa menyingkirkan Phing sepenuhnya dan memanggil perintah kita seperti ini
benang menjalankan db-migrasi
Gunakan editor Open Source yang bagus
Saat mengembangkan di PHP, saya memutuskan untuk menggunakan PhpStorm, IDE komersial, karena yang gratis terasa lambat dan kekurangan plugin
Di JavaScript, ada lebih banyak pilihan yang valid. Tujuan kami adalah menggunakan VsCode, editor yang dibuat dalam JavaScript yang sangat didukung oleh komunitas dan Microsoft
Sejauh ini, kami memiliki pengalaman hebat menggunakan VsCode. Cepat, memiliki mesin pelengkapan otomatis yang mengagumkan, dan memiliki komunitas yang hebat
Kemampuan untuk menentukan plugin mana yang digunakan pada proyek dan untuk berbagi konfigurasinya luar biasa. Siapa saja dapat, dalam satu klik, langsung mulai membuat kode dengan semua plugin yang telah dikonfigurasi sebelumnya
Singkirkan linting manual dengan Prettier
Di PHP kami memiliki sesuatu yang luar biasa. PSR. Standar tersebut sangat berguna untuk menentukan bagaimana kode harus ditulis
Kami mengonfigurasi IDE kami untuk mengikuti PSR1&2. Karena tidak ada fitur koreksi otomatis, semua orang harus menerapkannya. Itu bukan kesuksesan besar
Prettier datang untuk menyelamatkan JavaScript. Prettier adalah pemformat kode berpendirian yang menghapus semua gaya asli dan memastikan bahwa semua kode yang dihasilkan sesuai dengan gaya yang konsisten setiap kali Anda menyimpan file
Tidak ada lagi perdebatan, tidak ada lagi pelatihan, tidak ada lagi waktu sia-sia yang dihabiskan untuk menggabungkan modifikasi gaya saja
Semua orang di tim menggunakannya dan MENYUKAINYA. Mengkodekan gaya minimum yang ketat sementara kami membiarkan Prettier mengurus detailnya sungguh luar biasa
Kesimpulan
Manfaat
- Tumpukan kami lebih mudah dipasang dan digunakan
- Kami tidak perlu beralih konteks antar bahasa lagi
- Kami tidak lagi mengandalkan skrip pemasangan yang rumit
Kekurangan
- Diperlukan banyak penelitian untuk membuat tumpukan yang sesuai dengan kebutuhan kita
- Kami harus mengadakan banyak pelatihan untuk mempelajari cara membuat kode di Javascript pada tahun 2017
Kami dapat dengan cepat menghasilkan server API seperti yang biasa kami lakukan di PHP. Saya tidak merasa ingin meninggalkan apa pun selama transisi, semua alat yang kami gunakan setara atau lebih baik dari sebelumnya
Kami ingin Anda terjun dan berhasil dalam transisi ini. Jangan ragu untuk menghubungi kami jika Anda menginginkan detail lebih lanjut atau mengalami masalah dengan langkah apa pun