Setelah menginstal Node (unduh), buat direktori di mesin Anda dan mulai aplikasi pertama Anda.
$ mkdir hello-world
Di direktori ini Anda akan menentukan "paket" aplikasi, yang tidak berbeda dari paket node lainnya. File JSON di direktori file dengan jelas mendefinisikan ketergantungan. Anda dapat menggunakan perintah NPM untuk mendapatkan versi Express terbaru, yang ingin Anda lakukan, alih -alih menginstal versi selain "3.x" untuk mencegah kejutan yang tidak diketahui.
{"Name": "Hello-World", "Deskripsi": "Hello World Test App", "Version": "0.0.1", "Private": True, "Dependencies": {"Express": "3.x"}}Sekarang, Anda memiliki paket. Di direktori ini, Anda dapat menggunakan NPM (1) untuk menginstal ketergantungan ini, dalam hal ini Anda hanya perlu masuk:
Instal $ NPM
Setelah NPM selesai, Anda akan memiliki Express 3.x yang Anda andalkan di Direktori /Node_Modules. Anda dapat memverifikasi ini dengan NPM LS, seperti pohon ekspres dan ketergantungannya sendiri yang ditunjukkan pada cuplikan kode berikut.
$ npm [email protected] /private/tmp└─┬ [email protected] ├── [email protected] ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ └── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected] │ └── [email protected] └─┬ [email protected] └── [email protected]
Sekarang buat aplikasi itu sendiri! Buat file yang disebut app.js atau server.js, tidak peduli yang mana yang Anda suka, perkenalkan Express, dan kemudian gunakan ekspres () untuk membuat aplikasi baru:
var express = membutuhkan ('express'); var app = express ();Instance aplikasi baru dapat mulai mendefinisikan rute melalui app.verb (), dalam hal ini, menanggapi permintaan "Get/" melalui string "Hello World". Req dan Res adalah objek simpul yang sama persis yang diberikan kepada Anda, jadi Anda dapat menghubungi res.pipe (), req.on ('data', callback) dan hal -hal lain yang akan Anda lakukan yang tidak ada hubungannya dengan Express.
Express meningkatkan objek-objek ini untuk memberi Anda antarmuka tingkat yang lebih tinggi seperti res.send (), selain menambahkan panjang konten ke Anda:
app.get ('/hello.txt', function (req, res) {res.send ('hello world');});Sekarang hubungi metode app.listen () untuk koneksi untuk mengikat dan mendengarkan, menerima parameter yang sama dengan node node.server #listen ():
var server = app.listen (3000, function () {console.log ('Mendengarkan pada port %d', server.address (). port);});Gunakan Express (1) untuk menghasilkan aplikasi
Tim Express memelihara generator proyek yang nyaman bernama Express-Generator (1). Jika Anda menginstal Express-Generator secara global dengan NPM, Anda dapat mengaksesnya dari mana saja di komputer Anda:
$ npm instalasi -g ekspres -generator
Alat ini menyediakan cara mudah untuk mendapatkan kerangka kerja aplikasi, tetapi dengan ruang lingkup terbatas, misalnya, hanya mendukung beberapa mesin template, dan mengekspresikan dirinya sebenarnya mendukung membangun templat kerangka kerja situs web apa pun untuk node. Anda dapat melihatnya melalui bantuan:
Usage: express [options]Options: -h, --help output usage information -V, --version output the version number -e, --ejs add ejs engine support (defaults to jade) -H, --hogan add hogan.js engine support -c, --css add stylesheet support (less|stylus|compass) (defaults to plain css) -f, --force force on non-empty directory
Jika Anda ingin menghasilkan aplikasi yang didukung dalam hal apa pun, Anda hanya perlu mengeksekusi ::
$ express --css stylus myAppreate: myAppCreate: myapp/package.jscreate: myapp/app.jscreate: myapp/publiccreate: myapp/public/javascriptscreate: myapp/public/imagecreate: myapp/public/stylesheetscreate: myapp/public/styleSheets/style. myapp/views/index.jadecreate: myapp/views/layout.jadeinstall dependensi: $ cd myapp && npm installrun aplikasi: $ debug = aplikasi node myapp
Seperti aplikasi simpul lainnya, Anda harus menginstal dependensi berikut:
Lalu mari kita mulai.
$ npm mulai
Ini semua yang Anda butuhkan untuk menjalankan dan menjalankan aplikasi sederhana. Ingat, Express tidak terikat pada struktur direktori tertentu, ini hanya panduan untuk Anda. Pilihan struktur aplikasi dapat dilihat di repositori GitHub.
Penanganan kesalahan
Definisi penanganan middleware kesalahan seperti middleware biasa, tetapi 4 parameter harus didefinisikan, yang merupakan tanda tangan fungsi (err, req, res, next):
app.use (function (err, req, res, next) {console.error (err.stack); res.send (500, 'sesuatu rusak!');});Meskipun middleware kesalahan yang dipaksakan biasanya tidak didefinisikan di akhir, setelah aplikasi lain. Penggunaan (), panggilannya terlihat seperti ini:
var bodyparser = membutuhkan ('body-parser'); var methodOverride = membutuhkan ('method-override'); app.use (bodyparser ()); app.use (methodOverride ()); app.use (app.router); app.use (function (err, req, res, next) {// logika});Respons dalam middleware ini sepenuhnya sewenang -wenang. Anda mungkin ingin menanggapi halaman kesalahan HTML, pesan sederhana, string JSON, atau respons lain yang Anda sukai.
Untuk membangun kerangka kerja tingkat yang terorganisir dan lebih tinggi, Anda dapat mendefinisikan beberapa middleware penanganan kesalahan ini, sama seperti Anda akan mendefinisikan middleware normal. Misalnya, misalkan Anda ingin mendefinisikan penangan kesalahan untuk permintaan XHR, selain ini, apa yang mungkin Anda lakukan adalah sebagai berikut:
var bodyparser = membutuhkan ('body-parser'); var methodOverride = membutuhkan ('metode-override'); app.use (bodyparser ()); app.use (MethodOverride ()); app.use (app.router); app.use (lOgerrors); app.use (clienterrorHandler); app.use (errorHandler);Di LoGerrors yang lebih umum, Anda dapat menulis permintaan dan pesan kesalahan ke Stderr, Loggly, atau layanan serupa:
fungsi lOgerRors (err, req, res, next) {console.error (err.stack); selanjutnya (err);}Definisi ClientErrorHandler ditunjukkan di bawah ini, perhatikan bahwa kesalahan ini akan secara eksplisit diteruskan ke yang berikutnya.
function clienterrorHandler (err, req, res, next) {if (req.xhr) {res.send (500, {error: 'Sesuatu yang meledak!'}); } else {next (err); }}Implementasi "all-round" berikut ini dapat didefinisikan sebagai:
function errorHandler (err, req, res, next) {res.status (500); res.render ('error', {error: err});}Penghitungan pengguna secara online
Bagian ini menjelaskan aplikasi (kecil) secara rinci dan menggunakan Redis untuk melacak jumlah pengguna secara online. Pertama buat paket. File JSON berisi dua lampiran, satu untuk klien Redis dan yang lain untuk Express itu sendiri. Pastikan juga Anda telah membungkus Redis dan menjalankan $ redis-server.
{"Name": "App", "Version": "0.0.1", "Dependencies": {"Express": "3.x", "Redis": "*"}}Selanjutnya, Anda perlu membuat aplikasi, dan koneksi ke Redis:
var express = membutuhkan ('express'); var redis = membutuhkan ('redis'); var db = redis.createClient (); var app = express ();Middleware berikutnya melacak pengguna online. Di sini kami akan menggunakan set yang diurutkan sehingga kami dapat meminta pengguna online oleh Redis, yang hanya membutuhkan N milidetik. Kami menggunakan cap waktu sebagai "standar online" untuk anggota. Perhatikan bahwa di sini kami menggunakan string agen pengguna alih-alih ID pengguna yang biasa.
app.use (function (req, res, next) {var ua = req.headers ['user-agent']; db.zadd ('online', date.now (), ua, next);});Middleware berikutnya adalah menggunakan ZrevRangeByscore pada menit terakhir untuk mendapatkan jumlah maksimum pengguna online, kami selalu mendapatkan pengguna online terbaru, dan batas atasnya adalah stempel waktu saat ini minus 60000 milidetik.
app.use (function (req, res, next) {var min = 60 * 1000; var lalu = date.now () - min; db.zrevrangeByscore ('online', '+inf', lalu, function (err, pengguna) {if (err) return next (err); req.online = pengguna; next ();});};Akhirnya, kami menggunakannya melalui URL dan mengikatnya ke port! Itu saja, mengakses aplikasi ini di browser baru dan Anda akan melihat peningkatan jumlah orang secara online.
app.get ('/', function (req, res) {res.send (req.online.length + 'Users online');}); app.listen (3000);Proxy terbalik untuk Express
Menggunakan Express Behind Reverse Proxy, seperti pernis atau nginx sepele, namun membutuhkan konfigurasi. Dengan mengaktifkan pengaturan "proxy trust proxy".
Mengaktifkan pengaturan ini memiliki beberapa efek halus. Yang pertama adalah bahwa X-Forwarded-Proto dapat ditetapkan dengan proxy terbalik, memberi tahu aplikasi bahwa itu adalah https atau hanya http sederhana. Nilai ini tercermin oleh req.protocol.
Perubahan kedua adalah bahwa nilai req.ip dan req.ips akan mengisi daftar alamat X-Forwarded-for.
Debug Express
Express menggunakan modul debug secara internal untuk merekam informasi tentang pencocokan jalur dan pola aplikasi. Untuk melihat pesan ini, cukup atur variabel lingkungan debug untuk diekspresikan:*, dan setelah memulai aplikasi, Anda akan melihat informasi debug di konsol.
$ Debug = Express:* node ./bin/www
Menjalankan Contoh Hello World ini akan mencetak yang berikut:
Express: Application Booting dalam mode pengembangan +0msexpress: router didefinisikan get /hello.txt +0msexpress: router didefinisikan get /hello.txt +1ms
Selain itu, program yang dihasilkan dengan mengekspresikan executable (generator) juga menggunakan modul debug, dan ruang lingkup default adalah namespace debug aplikasi my.
Anda dapat mengaktifkan pernyataan debugging ini dengan perintah berikut
$ Debug = my-application node ./bin/www
Untuk informasi lebih lanjut tentang debugging, lihat panduan debugging