Wajah menggunakan nodejs fundamental

Pemrogramaman berbasis event bisa sangat luar biasa untuk pemula, yang bisa membuat Node. js sulit untuk dimulai. Tapi jangan biarkan hal itu menghalangi Go on; . js dan menjelaskan mengapa ia menjadi sangat populer

candi

Untuk mulai menggunakan Node. js, Anda harus terlebih dahulu memahami perbedaan antara Node. js dan lingkungan skrip sisi-server tradisional (misalnya. php, python, rubi, dll. )

Pemrogramman Asinkron

Jangan berikan. js menggunakan modul arsitektur untuk mempermudah pembuatan aplikasi yang kompleks

Mungkin bagus bahwa Anda terbiasa dengan pemrograman asinkron; . Setiap fungsi di Node. js bersifat asinkron.js. Oleh karena itu, semua yang biasanya memblokir thread malah dieksekusi di latar belakang. Ini adalah hal terpenting untuk diingat tentang Node. js. Misalnya, jika Anda membaca file pada sistem file, Anda harus menentukan fungsi callback yang dijalankan saat operasi selesai

Go yang Melakukan Segalanya

Jangan berikan. js hanyalah sebuah lingkungan - yang berarti anda harus melakukan semuanya sendiri. Tidak ada server HTTP default, atau server apa pun dalam hal ini. Ini bisa sangat luar biasa bagi pengguna baru, tetapi hasilnya adalah aplikasi web berkinerja tinggi. Satu skrip menangani semua komunikasi dengan klien. Hal ini sangat mengurangi jumlah sumber daya yang digunakan oleh aplikasi. Sebagai contoh, berikut adalah kode untuk aplikasi Node. sederhana

var i, a, b, c, max;

max = 1000000000;

var d = Date.now();

for (i = 0; i < max; i++) {
    a = 1234 + 5678 + i;
    b = 1234 * 5678 + i;
    c = 1234 / 2 + i;
}

console.log(Date.now() - d);

Dan di sini adalah yang setara ditulis dalam PHP

________satu_______

Sekarang mari kita lihat angka benchmarknya. Tabel berikut mencantumkan waktu respons, dalam milidetik, untuk dua aplikasi sederhana ini

jumlah iterasiNode. jsPHP1002. 000. 1410'0003. 0010. 531'000'00015. 001119. 2410'000'000143. 0010621. 461'000'000'00011118. 001036272. 19

Saya menjalankan dua aplikasi dari baris perintah sehingga server tidak akan menuda eksekusi aplikasi. Saya menjalankan setiap tes sepuluh kali dan hasilnya sama rata. PHP terutama lebih cepat dengan jumlah iterasi yang lebih sedikit, namun keuntungan itu cepat menghilang seiring bertambahnya jumlah iterasi. Ketika semua dikatakan dan dilakukan, PHP 93% lebih lambat dari Node. js

Jangan berikan. js cepat, tapi Anda perlu mempelajari beberapa hal agar bisa menggunakannya dengan benar

modul-modul

Jangan berikan. js menggunakan modul arsitektur untuk mempermudah pembuatan aplikasi yang kompleks. Modul mirip dengan pustaka di C, atau unit dalam Pascal. Setiap modul berisi satu set fungsi yang terkait dengan "subjek" dari modul. Misalnya, modul http berisi fungsi khusus untuk HTTP. Jangan berikan. js menyediakan beberapa modul inti di luar kotak untuk membantu Anda mengakses file pada file sistem, membuat server HTTP dan TCP/UDP, dan melakukan fungsi berguna lainnya

Memasukkan modul itu mudah;

var http = require('http');

Jangan berikan. js hanyalah sebuah lingkungan;

Fungsi

var http = require('http');
2 mengembalikan referensi ke modul yang ditentukan. Dalam kasus kode ini, referensi ke modul http disimpan dalam variabel
var http = require('http');
4

Dalam kode di atas, kami memberikan nama modul ke fungsi

var http = require('http');
2. Ini menyebabkan Node mencari folder node_modules di direktori aplikasi kita, dan mencari modul http di folder itu. Jika Node tidak menemukan folder node_modules (atau modul http di dalamnya), maka Node akan melihat melalui cache modul global. Anda juga dapat menentukan file yang sebenarnya dengan melewati jalur relatif atau absolut, seperti

var myModule = require('./myModule.js');

Modul adalah potongan kode yang dienkapsulasi. Kode dalam modul sebagian besar bersifat private - yang berarti bahwa fungsi dan variabel yang ditentukan di dalamnya hanya dapat diakses dari bagian dalam modul. Anda dapat, bagaimanapun, mengekspos fungsi dan/atau variabel yang akan digunakan di luar modul. Untuk melakukannya, gunakan objek

var http = require('http');
_6 dan isi properti dan metodenya dengan potongan kode yang ingin Anda paparkan. Perhatikan modul berikut ini sebagai contoh

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_

Kode ini menciptakan variabel

var http = require('http');
_7 yang hanya dapat diakses oleh kode yang terdapat dalam modul; . Selanjutnya, dua fungsi dibuat pada objek
var http = require('http');
6. Fungsi-fungsi ini dapat diakses di luar modul karena mereka didefinisikan pada objek
var http = require('http');
6. Akibatnya,
var http = require('http');
_7 benar-benar terlindungi dari gangguan luar. Oleh karena itu, Anda dapat yakin bahwa
var myModule = require('./myModule.js');
1 dan
var myModule = require('./myModule.js');
2 akan selalu berperilaku sebagaimana layaknya (selama sebuah nilai diberikan untuk parameter
var myModule = require('./myModule.js');
3)

Lingkup global

Node adalah lingkungan JavaScript yang berjalan di mesin JavaScript V8 dari Google. Karena itu, kita harus mengikuti praktik terbaik yang kita gunakan untuk pengembangan sisi-klien. Misalnya, kita harus menghindari menempatkan sesuatu ke dalam lingkup global. Itu, bagaimanapun, tidak selalu memungkinkan. Lingkup global di Node adalah

var myModule = require('./myModule.js');
4 (berlawanan dengan
var myModule = require('./myModule.js');
5 di browser), dan Anda dapat dengan mudah membuat variabel global dari fungsi dengan menghilangkan kata kunci
var myModule = require('./myModule.js');
6, seperti ini

________dua puluh_______

Kemudian lagi, global harus dihindari sebisa mungkin. Jadi hati-hati dan ingatlah untuk menggunakan

var myModule = require('./myModule.js');
_6 saat mendeklarasikan sebuah variabel

installasi

Tentu, kita perlu menginstal Node sebelum kita bisa menulis dan menjalankan sebuah aplikasi. Instasinya sederhana, jika Anda menggunakan Windows atau OS X; . org menawarkan penginstal untuk sistem operasi tersebut. Untuk Linux, gunakan paket manager. Buka terminal dan ketik

sudo apt-get update
sudo apt-get install node

peti mati

sudo aptitude update
sudo aptitude install node

Jangan berikan. js berada di sid repositori;

sudo echo deb http://ftp.us.debian.org/debian/ sid main > /etc/apt/sources.list.d/sid.list

Namun perlu diingat bahwa menginstal paket sid pada sistem yang lebih tua dapat merusak sistem Anda. Hati-hati, dan hapus

var myModule = require('./myModule.js');
_8 setelah Anda selesai menginstal Node

menggantikan Modul Baru

Jangan berikan. js memiliki manager package, yang disebut Node Package Manager (NPM). Ini otomatis diinstal dengan Node. js, dan Anda menggunakan NPM untuk menginstal modul baru. Untuk menginstal modul, buka terminal/command line Anda, navigasikan ke folder yang diinginkan, dan jalankan perintah berikut

npm install module_name

Tidak masalah OS apa yang Anda miliki;

Aplikasi Halo Dunia

Tentu saja, skrip Node. js pertama kita akan mencetak teks

var myModule = require('./myModule.js');
9 ke konsol. Buat file yang bernama hello. js, dan ketik kode berikut

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_0

Sekarang mari kita jalankan skripnya. Buka terminal/command line, arahkan ke folder yang berisi hello. js, dan jalankan perintah berikut

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_1

Go harus melihat

var myModule = require('./myModule.js');
9 ditampilkan di konsol

Server HTTP

Mari beralih ke aplikasi yang lebih canggih; . Mari kita mulai dengan kode berikut. Baca komentarnya dan kemudian penjelasannya di bawah ini

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_2

Kode ini sangat sederhana. Anda dapat mengirim lebih banyak data ke klien dengan menggunakan metode

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
1 , namun Anda harus memanggilnya sebelum memanggil
var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
2. Simpan kode ini sebagai http. js dan ketik ini ke konsol Anda

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_3

Buka browser Anda dan navigasikan ke

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
3. Anda harus melihat teks "Halo HTTP. "kata halaman

parameter URL parameter

Seperti yang saya sebutkan sebelumnya, kita harus melakukan semuanya sendiri di Node, termasuk menguraikan permintaan argumen. Ini, bagaimanapun, cukup sederhana. Lihat kode berikut ini

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_4

Kode ini menggunakan method

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_4 dari modul url, modul inti Node. js, untuk mengubah URL permintaan ke sebuah objek. Objek yang dikembalikan memiliki properti
var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_5, yang mengambil parameter URL. Simpan file ini sebagai get. js dan jalankan dengan perintah berikut

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_5

Lalu, navigasikan ke __

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_6 di browser Anda. Tentu, mengubah nilai parameter
var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_7 tidak akan merusak skrip

Membaca dan Menulis File

Untuk mengatur file di Node, kita menggunakan modul fs (modul inti). Kita membaca dan menulis file menggunakan metode

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_8 dan
var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
9. Saya akan menjelaskan argument-argumennya setelah kode berikut

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_6

Jangan berikan. js memiliki manager package, yang disebut Node Package Manager (NPM). Ini otomatis dipasang dengan Node. js

Simpan ini sebagai file. js. Sebelum menjalankan skrip ini, buatlah sebuah file bernama test. txt di direktori yang sama dengan files. js

Kode ini metode mendemokan

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_8 dan
var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
9. Setiap kali server menerima permintaan, skrip tersebut membaca sebuah nomor dari file, menambahkan nomornya, dan menulis nomor baru ke file tersebut. Metode
var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_8 menerima tiga argumen. nama file yang akan dibaca, pengkodean yang diharapkan, dan fungsi callback

Menulis ke file, paling tidak dalam kasus ini, jauh lebih sederhana. Kita tidak perlu menunggu hasil apapun, meski Anda akan mengecek kesalahan dalam aplikasi nyata. Metode

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
_9 menerima nama file dan data sebagai argumen. Ini juga menerima argumen ketiga dan keempat (keduanya opsional) untuk menentukan fungsi pengkodean dan callback

Sekarang, mari jalankan skrip ini dengan perintah berikut

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_7

Buka di browser (__

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
3) dan segarkan beberapa kali. Sekarang, Anda mungkin berpikir bahwa ada kesalahan dalam kode karena tampaknya meningkat dua kali. Ini bukan kesalahan. Setiap kali Anda meminta URL ini, permintaan dua dikirim ke server. permintaan pertama dibuat secara otomatis oleh browser, yang meminta favicon. ico, dan tentu saja, permintaan kedua adalah untuk URL (
var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
3)

Meski perilaku ini secara teknis bukan merupakan kesalahan, itu adalah perilaku yang tidak kita inginkan. Kita dapat memperbaikinya dengan mudah dengan memeriksa permintaan URL. Berikut adalah kode yang direvisi

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_8

Ujilah sekarang;

Mengakses Database MySQL

Sebagian besar teknologi sisi-server tradisional memiliki cara bawaan untuk menghubungkan dan melakukan kueri database. Dengan Node. js, Anda harus menginstal sebuah perpustakaan. Untuk tutorial ini, saya sudah memilih node-mysql yang stabil dan mudah digunakan. Nama lengkap dari modul ini adalah mysql@2. 0. 0-alpha2 (semuanya setelah @ adalah nomor versi). Buka konsol Anda, arahkan ke direktori tempat Anda menyimpan skrip Anda, dan jalankan perintah berikut

$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;

$start = microtime(true);

for ($i = 0; $i < $max; $i++) {
    $a = 1234 + 5678 + $i;
    $b = 1234 * 5678 + $i;
    $c = 1234 / 2 + $i;
}

var_dump(microtime(true) - $start);
_9

Ini mengunduh dan menginstal modul, dan juga membuat folder node_modules di direktori saat ini. Sekarang mari kita lihat bagaimana kita bisa menggunakan ini dalam kode kita;

var http = require('http');
0

Melakukan kueri database dengan perpustakaan ini mudah; . Dalam aplikasi nyata, Anda harus memeriksa apakah ada kesalahan (parameter

globalVariable = 1;
globalFunction = function () { .. };
6 tidak akan menjadi
globalVariable = 1;
globalFunction = function () { .. };
_7 jika terjadi kesalahan) dan mengirim kode respons bergantung pada keberhasilan atau kegagalan kueri. Perhatikan juga bahwa kita telah mengaktifkan
globalVariable = 1;
globalFunction = function () { .. };
_8 menjadi
globalVariable = 1;
globalFunction = function () { .. };
_9, yang merupakan tipe MIME yang valid untuk JSON. Parameter
sudo apt-get update
sudo apt-get install node
0 berisi hasil kueri, dan kita cukup mengonversi data dalam
sudo apt-get update
sudo apt-get install node
0 ke JSON menggunakan metode
sudo apt-get update
sudo apt-get install node
2

Simpan file ini sebagai mysql. js, dan jalankan (jika Anda menginstal MySQL, yaitu)

var http = require('http');
1

Arahkan ke

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};
3 di browser Anda, dan Anda harus diminta mengunduh file berformat JSON

Kesimpulan

Setiap fungsi di Node. js bersifat asinkron.js

Jangan berikan. js membutuhkan kerja ekstra, tetapi hasil dari aplikasi yang cepat dan kuat sangat layak. Jika Anda tidak ingin melakukan semuanya pada level terendah, Anda selalu dapat memilih beberapa kerangka kerja, seperti >Express, untuk mempermudah pengembangan aplikasi

Jangan berikan. js adalah teknologi yang menjanjikan dan pilihan yang sangat baik untuk aplikasi dengan beban tinggi. Ini telah dibuktikan oleh banyak perusahaan, seperti Microsoft, eBay, dan Yahoo. Jika Anda tidak yakin tentang hosting situs web/aplikasi Anda, Anda selalu dapat menggunakan solusi VPS murah atau berbagai layanan berbasis cloud, seperti Microsoft Azure dan Amazon EC2. Semua layanan ini menyediakan lingkungan terukur dengan harga yang wajar

Bagaimana menghadapi kerja Nodejs?

Simpul Kerja Wajah. js Simpul. js menggunakan operasi I/O non-blocking. Artinya, saat client mengirim permintaan ke web server, event loop single-threaded Node JS akan menerima permintaan tersebut lalu mengirimkannya ke thread pekerja untuk diproses.

Nodejs digunakan untuk apa?

Simpul. js merupakan platform yang diciptakan secara khusus untuk membantu pengembangan aplikasi berbasis web. Namun demikian, Node. js bukan bahasa pemrogramaman yang baru, tetapi runtime environment atau interpreter untuk menjalankan bahasa pemrogramaman JavaScript sebagai kebutuhan pengembangan back-end.

Apa perbedaan JavaScript dan Node JS?

JavaScript dan Node JS memiliki peran masing-masing untuk mengoptimalkan aplikasi berbasis web. Secara umum JavaScript sebagai bahasa pemrograman dan Node JS merupakan runtime yang mengeksekusi instruksi pada JavaScript .

Apakah Node JS bisa menjalankan server?

Simpul . js adalah salah satu platform berbasis Javascript yang dapat bekerja di sisi server ( server ).