Panggil simpul js dari php

Nama saya Daan, saya seorang Arsitek Teknis di Triple dan di blog ini, saya akan berbagi pengalaman saya dengan Node. js dan memberi tahu Anda apa yang harus diperhatikan jika Anda sudah terbiasa dengan PHP. Node. js adalah lingkungan runtime JavaScript yang kuat yang menghilangkan kebutuhan untuk bekerja dengan bahasa pemrograman yang berbeda untuk skrip sisi server dan sisi klien

Menurut Wikipedia, PHP lahir pada tanggal 8 Juni 1995, yaitu 27 tahun yang lalu pada saat blog ini dibuat. Saya mulai menulis skrip PHP sekitar usia 16 tahun, pada tahun 2000, ketika PHP versi 4 sudah diluncurkan

Saat itu, secara teknis hanya ada dua pilihan. PHP dan ASP. bersih. PHP lebih berorientasi Linux dan ASP. net dulu (dan masih) hanya tersedia untuk Windows. Perl juga merupakan pilihan, tetapi rasanya lebih seperti bahasa scripting daripada bahasa untuk membangun aplikasi web yang lengkap

Maju cepat ke sekarang. PHP masih memainkan peran penting. Menurut Kinsta. com, sekitar 80% dari semua situs web masih mengandalkan PHP sampai batas tertentu. Jumlah teknik yang tersedia telah meningkat secara signifikan sejak saat itu

Mengapa Node. js?

Saya mulai mengembangkan di Node. js (bersama PHP) sekitar enam tahun lalu, terutama di proyek sampingan. Saya sudah terbiasa dengan JavaScript saat membangun aplikasi web untuk Triple. Sebelumnya, saya juga telah menyelidiki teknik mana yang umumnya digunakan di front-end. Akibatnya, saya sudah mendapatkan beberapa pengalaman dengan Preact dan rendering sisi server, yang merupakan Node. js tidak. Toolchain untuk membangun aplikasi front-end tersebut juga ditemukan di Node.js. Pertimbangan penting lainnya untuk melanjutkan Node. js adalah bahwa aplikasi tersebut lebih mudah digunakan di Raspberry Pi saya di rumah. Dengan php-fpm dan nginx, lebih sulit untuk menjalankan versi PHP yang berbeda secara paralel di server yang sama

Apa yang perlu Anda ketahui tentang Node. js sebagai pengembang PHP

1 — Perhatikan penanganan proses dan permintaan

Node. js beroperasi dengan cara yang berbeda dari PHP. Dengan PHP, dalam banyak kasus permintaan diterima oleh nginx atau Apache dan diteruskan ke php-fpm. Aplikasi Node adalah proses yang Anda mulai sendiri. Dalam kode Anda mengonfigurasi server web (mis. g. Express) yang mendengarkan pada port TCP. Selain itu, Anda mengonfigurasi rute secara langsung di server web tersebut

Di PHP, proses php-fpm bertanggung jawab untuk memanggil juru bahasa PHP. Di Node. js, permintaan ditangani langsung di dalam aplikasi itu sendiri. Akibatnya, di Node. js Anda harus sangat berhati-hati untuk tidak memanipulasi apa pun di luar permintaan. Tidak seperti PHP, di mana seluruh skrip berakhir saat permintaan selesai, Node. js membuat proses tetap berjalan

Sumber

Pada contoh di bawah ini, nilai penghitung terus meningkat di antara permintaan. Ini tidak akan mungkin di PHP

2 — Pilih pengelola paket yang tepat

PHP menggunakan komposer, digabungkan dengan pembuat paket. org. Di Node, npmjs. com setara dengan pembuat paket. org. Ada berbagai pengelola paket yang tersedia, dua yang paling populer adalah

1. Npm, manajer paket default dari Node

2. Yarn, manajer paket yang berasal dari Facebook

Akan terlalu jauh untuk membahas perbedaan, kelebihan dan kekurangan keduanya sekarang. Sebagai Node pemula. js, pilihan untuk npm adalah yang termudah, karena sudah tersedia secara default

Ketergantungan dan paket yang akan diinstal didefinisikan dalam sebuah paket. file json di root proyek. Setelah menginstal paket, kunci paket. file json dibuat, yang setara dengan komposer. kunci file

Setelah menjalankan perintah instalasi npm, semua dependensi diunduh ke direktori node_modules. Dari sana, dependensi dimasukkan ke dalam proyek sesuai kebutuhan

3 — Gunakan TypeScript dari awal

“TypeScript adalah bahasa pemrograman yang dikembangkan dan dikelola oleh Microsoft. Ini adalah superset sintaksis JavaScript yang ketat dan menambahkan pengetikan statis opsional ke bahasa. Ini dirancang untuk pengembangan aplikasi besar dan transpile ke JavaScript. [4] Karena merupakan superset dari JavaScript, program JavaScript yang ada juga merupakan program TypeScript yang valid. " Sumber. Wikipedia

Jika Anda memilih untuk mengembangkan dengan Node. js, saran saya adalah mulai langsung dengan TypeScript. Keuntungan besarnya adalah selama pengembangan, Anda sudah dapat memberikan tipe ke variabel, argumen, dan sebagainya. Dengan cara ini, Anda sudah diberitahu tentang masalah apa pun di IDE Anda, di mana dengan JavaScript normal ini hanya terjadi selama eksekusi kode

Contoh aplikasi yang sama, di JavaScript dan di TypeScript

Melalui langkah pembuatan, kode TypeScript diubah menjadi kode JavaScript. Oleh karena itu, pengetikan dan semacamnya hanya tersedia selama pengembangan. Untuk hasilnya, kode TypeScript ditranspilasi ke JavaScript dan akan diinterpretasikan sesuai dengan itu. Oleh karena itu penting untuk memvalidasi struktur data eksternal yang diterima aplikasi, bukan hanya menunjukkan bahwa data tersebut memiliki struktur tertentu. Jika tidak, Anda tidak akan menerima peringatan selama pengembangan, tetapi masalah akan terjadi selama eksekusi

Di bawah ini Anda melihat contoh transpilasi TypeScript ke JavaScript. Karena JavaScript tidak dapat memuat pengetikan, Anda dapat menunjukkan pada langkah pembuatan TypeScript bahwa Anda ingin deklarasi jenis dihasilkan dalam file terpisah. Ini sebagian besar digunakan dengan modul eksternal, karena Anda masih dapat menunjukkan apa pengetikan dari kode JavaScript yang diimpor

4 — Perhatikan impor dan ekspor modul

5 — Lihat informasi tentang pembuatan versi dan Dukungan Jangka Panjang

Untuk Node. js ada strategi yang jelas untuk versi Dukungan Jangka Panjang (LTS). Informasi ini dapat ditemukan di situs web

6 — Belajar bekerja dengan kelas, fungsi, dan fungsi anonim

Lihat di bawah untuk beberapa contoh notasi fungsi dalam kelas di JavaScript

7 — Gunakan janji / async / menunggu

“Objek Promise mewakili penyelesaian akhir (atau kegagalan) dari operasi asinkron dan nilai yang dihasilkannya. ” —https. // pengembang. mozilla. org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Janji

Dengan menggunakan janji, Anda dapat mengizinkan eksekusi program untuk melanjutkan sambil menunggu tindakan tertentu (seperti kueri database) selesai. Sebagai Node. js adalah single-threaded, tindakan sinkron akan memblokir output aplikasi untuk setiap permintaan HTTP hingga operasi selesai. Janji adalah solusi untuk ini. Sampai saat ini, kami bekerja dengan panggilan balik, di mana hasil operasi dikembalikan melalui panggilan fungsi

Di bawah ini Anda dapat melihat contoh fungsi yang mengembalikan janji dan bagaimana fungsi panggilan menangani ini. Fungsi in kemudian akan dipanggil dengan hasil dari promise

Mekanisme Async/menunggu membuat bekerja dengan janji lebih mudah. Jika suatu fungsi menggunakan menunggu, itu harus ditandai sebagai asinkron dengan kata kunci async. Di dalam fungsi, Anda dapat mengetik await fooBar(). Ini diterjemahkan menjadi fooBar(). then() dalam interpretasi, tetapi Anda tidak perlu mengetikkannya secara eksplisit. Oleh karena itu, contoh di atas dapat ditulis dengan cara yang jauh lebih mudah dibaca

8 — Perhatikan tidak adanya autoloading / ruang nama

Konsep autoloading dan namespace tidak ada dalam Node. js. Namespacing dicapai dengan sudah menentukan lokasi dalam pernyataan import/require

Selain itu, Injeksi Ketergantungan, pola desain terkenal dengan banyak keunggulan, tidak terlalu sering digunakan. Ini adalah pola yang paling saya rindukan di ekosistem JavaScript

9 — Pilih kerangka kerja HTTP yang cocok untuk Anda

Dalam sebuah Node. js, sebagai pengembang Anda bertanggung jawab untuk menangani permintaan HTTP. Node. js menawarkan modul level rendah untuk ini. http

Faktanya, modul HTTP tidak pernah dibangun secara langsung. Sebaliknya, kerangka kerja digunakan yang bekerja di atas modul HTTP

Express adalah framework yang bekerja langsung di atas http. Selain itu, ada berbagai kerangka kerja yang dibangun di atas Express. Koa, Hapi dan kencangkan, antara lain

Seperti halnya PHP, pilihan kerangka kerja adalah pilihan pribadi. Itu juga tergantung pada apa kebutuhan Anda dan apa yang biasa Anda lakukan. Preferensi pribadi saya adalah penggunaan Express, alasan utamanya adalah karena saya memiliki pengalaman yang luas dengannya. Kerugian terbesar dari Express adalah tidak secara otomatis menangani penangan permintaan async dengan benar. Express 5 harus menyelesaikan ini, tetapi saat ini masih dalam versi beta. Pada artikel ini Anda dapat membaca lebih lanjut tentang subjek ini

10 — Manfaatkan perkakas

Ekosistem JavaScript terkenal (atau terkenal buruk) karena banyak kerangka kerja dan alatnya yang memecahkan masalah serupa. Agar tetap melihat hutan untuk pepohonan, saya akan menyoroti beberapa di antaranya

Lebih cantik
Di Prettier, pembuatnya menyebutnya pemformat kode yang berpendirian. Ini sebanding dengan alat seperti phpcs atau php-cs-fixer. Dengan menjalankan Prettier dalam proyek, sejumlah standar pemformatan pengkodean (tab vs spasi, baris baru, dan seterusnya) diterapkan ke setiap file. Dengan integrasi ke dalam IDE yang diterapkan, Anda bahkan dapat melakukan pemformatan sambil menyimpan file

Nodemon
Berkembang di Node. js bekerja secara berbeda untuk mengembangkan di PHP. Di PHP, menyegarkan halaman cukup untuk melihat perubahan kode, di Node.js. js aplikasi harus direstart. Nodemon adalah alat sederhana yang memonitor sistem file untuk perubahan. js atau. file .ts. Jika perubahan terdeteksi, proses dimulai ulang agar perubahan segera terlihat

Eslint
“ESLint adalah alat untuk mengidentifikasi dan melaporkan pola yang ditemukan dalam kode ECMAScript/JavaScript. ” Ini adalah alat yang banyak digunakan dalam JavaScript. Sedangkan Prettier berspesialisasi dalam pemformatan, Eslint adalah alat linting yang juga memperingatkan konten 'masalah' dengan kode. Ini sebanding dengan phpstan

Penerapannya sederhana. Anda membuat sekumpulan aturan (dan mungkin menggunakan definisi standar, seperti airbnb atau standar, sebagai dasar) dan kode Anda divalidasi berdasarkan kumpulan aturan tersebut. Apa sebenarnya aturan yang diperlukan dapat bervariasi dari kasus ke kasus. Misalnya, ini mungkin menyangkut urutan impor Anda, atau apakah Anda menggunakan catatan singkat untuk pernyataan if

Bersenda gurau
Kerangka pengujian (unit) yang paling populer saat ini adalah Jest. Dengan pengujian unit, cuplikan kode, dan mocking, ini adalah alat yang dapat digunakan untuk mengatur semua jenis pengujian otomatis dengan mudah

Informasi lebih lanjut?

Di blog ini, saya telah memberikan sepuluh tip untuk pengembang PHP yang akan mulai menulis aplikasi di Node.js. js. Apakah Anda tidak setuju dengan saya atau Anda memiliki pertanyaan? . zonneveld@wearetriple. com. Mencari pekerjaan baru atau ingin mempelajari lebih lanjut tentang Triple?

Bagaimana cara menjalankan node js dari PHP?

file php di folder public_html (atau serupa), lalu instal node. js dengan menjelajah ke. http. //contoh. org/simpul. php?instal . Ketika berhasil, instal node Anda. js dengan mengunggah foldernya atau menggunakan npm. http. //contoh. org/simpul. php?npm=instal jt-js-sample.

Bagaimana cara mengintegrasikan node js dengan PHP?

Dalam skrip PHP ini, pertama-tama kita menambahkan nama dan pesan ke dalam database (dengan stempel waktu). Kemudian, kami mengirimkan permintaan HTTP POST ke Node.js kami. js server dengan data param POST yang merupakan string berkode JSON yang berisi nama dan pesan. Param data ini akan dikirim ke klien secara langsung

Bagaimana Anda memanggil file node js?

Cara biasa untuk menjalankan Node. js adalah untuk menjalankan perintah node yang tersedia secara global (setelah Anda menginstal Node. js) dan berikan nama file yang ingin Anda jalankan . Saat menjalankan perintah, pastikan Anda berada di direktori yang sama yang berisi app.

Bisakah node js berjalan di server PHP?

Anda dapat menjalankan node dan PHP di server yang sama, dan bahkan di port yang sama . Kuncinya adalah menggunakan server seperti nginx di depan mendengarkan pada port 80, menyiapkan PHP di Nginx seperti biasa (menggunakan php-fpm) dan menyiapkan instance Node Anda untuk mendengarkan secara lokal di beberapa port tinggi seperti 8081.