Penjelasan terperinci mengenai penggunaan Express.JS_node.js
Selepas memasang nod (muat turun), buat direktori pada mesin anda dan mulakan aplikasi pertama anda.
$ mkdir hello-world
Dalam direktori ini anda akan mentakrifkan "pakej" aplikasi, yang tidak berbeza daripada mana-mana pakej nod lain. Fail json dalam direktori fail dengan jelas mentakrifkan kebergantungan. Anda boleh menggunakan arahan npm untuk mendapatkan versi terkini ekspres, mengikut mana-mana yang anda suka, dan bukannya memasang versi selain daripada "3.x" untuk mengelakkan sebarang kejutan yang tidak diketahui.
{ "name": "hello-world", "description": "hello world test app", "version": "0.0.1", "private": true, "dependencies": { "express": "3.x" } }
Kini, anda mempunyai pakej. json fail dalam direktori ini anda boleh menggunakan npm(1) untuk memasang kebergantungan ini, dalam kes ini hanya taip:
$ npm install
Setelah npm selesai, anda akan mempunyai kebergantungan Express 3.x dalam direktori /node_modules. Anda boleh mengesahkan ini dengan npm ls, kerana coretan berikut menunjukkan pepohon Express dan kebergantungannya sendiri.
$ npm ls hello-world@0.0.1 /private/tmp └─┬ express@3.0.0beta7 ├── commander@0.6.1 ├─┬ connect@2.3.9 │ ├── bytes@0.1.0 │ ├── cookie@0.0.4 │ ├── crc@0.2.0 │ ├── formidable@1.0.11 │ └── qs@0.4.2 ├── cookie@0.0.3 ├── debug@0.7.0 ├── fresh@0.1.0 ├── methods@0.0.1 ├── mkdirp@0.3.3 ├── range-parser@0.0.4 ├─┬ response-send@0.0.1 │ └── crc@0.2.0 └─┬ send@0.0.3 └── mime@1.2.6
Sekarang untuk mencipta aplikasi itu sendiri Buat fail yang dipanggil app.js atau server.js, mana-mana yang anda suka, import ekspres, dan kemudian gunakan express() untuk mencipta aplikasi baharu:
var express = require('express'); var app = express();
Kejadian aplikasi baharu boleh mula menentukan laluan melalui app.VERB(), dalam kes ini membalas permintaan "GET/" dengan rentetan "Hello World". req dan res ialah objek nod yang sama yang diberikan kepada anda, jadi anda mungkin memanggil res.pipe(), req.on('data', panggil balik) dan perkara lain yang anda akan lakukan yang tiada kaitan dengan Express.
Express mempertingkatkan objek ini untuk memberikan anda antara muka peringkat lebih tinggi seperti res.send(), selain menambah panjang kandungan untuk anda:
app.get('/hello.txt', function(req, res){ res.send('Hello World'); });
Sekarang panggil kaedah app.listen() untuk sambungan mengikat dan mendengar, menerima parameter yang sama seperti jaring nod.Server #listen():
var server = app.listen(3000, function() { console.log('Listening on port %d', server.address().port); });
Gunakan ekspres(1) untuk menjana aplikasi
Pasukan Express mengekalkan penjana projek yang mudah dinamakan penjana ekspres(1). Jika anda memasang penjana ekspres secara global menggunakan npm, anda boleh mengaksesnya dari mana-mana sahaja pada komputer anda:
$ npm install -g express-generator
Alat ini menyediakan cara mudah untuk mendapatkan rangka kerja aplikasi, tetapi skop terhad, contohnya, ia hanya menyokong beberapa enjin templat, manakala Express sendiri sebenarnya menyokong membina mana-mana templat rangka kerja tapak web untuk nod. Boleh dilihat 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 menjana aplikasi yang menyokong sebarang situasi, anda hanya perlu melaksanakan::
$ express --css stylus myapp create : myapp create : myapp/package.json create : myapp/app.js create : myapp/public create : myapp/public/javascripts create : myapp/public/images create : myapp/public/stylesheets create : myapp/public/stylesheets/style.styl create : myapp/routes create : myapp/routes/index.js create : myapp/views create : myapp/views/index.jade create : myapp/views/layout.jade install dependencies: $ cd myapp && npm install run the app: $ DEBUG=myapp node app
Seperti mana-mana aplikasi nod lain, anda mesti memasang kebergantungan berikut:
Kalau begitu mari kita mulakan.
$ npm start
Itu sahaja yang anda perlukan untuk mengaktifkan dan menjalankan apl mudah. Ingat, Express tidak terikat dengan mana-mana struktur direktori tertentu, ini hanya untuk memberi anda panduan. Pilihan struktur aplikasi boleh dilihat dalam contoh dalam repositori github.
Ralat pengendalian
Ralat mengendalikan middleware ditakrifkan sama seperti middleware biasa, tetapi ia mesti menentukan bilangan 4 parameter Ini ialah tandatangan fungsi (err, req, res, next):
app.use(function(err, req, res, next){ console.error(err.stack); res.send(500, 'Something broke!'); });
Walaupun perisian tengah pengendalian ralat mandatori biasanya tidak ditakrifkan pada penghujungnya, selepas app.use( lain), panggilannya adalah seperti berikut:
var bodyParser = require('body-parser'); var methodOverride = require('method-override'); app.use(bodyParser()); app.use(methodOverride()); app.use(app.router); app.use(function(err, req, res, next){ // logic });
Respons dalam middleware ini adalah sewenang-wenangnya. Anda mungkin ingin membalas dengan halaman ralat HTML, mesej ringkas, rentetan JSON atau sebarang respons lain yang anda suka.
Untuk membina rangka kerja yang teratur dan peringkat lebih tinggi, anda boleh menentukan beberapa perisian tengah pengendalian ralat ini, sama seperti anda mentakrifkan perisian tengah biasa. Sebagai contoh, katakan anda ingin menentukan pengendali ralat untuk permintaan XHR Selain daripada ini, anda boleh melakukan perkara berikut:
var bodyParser = require('body-parser'); var methodOverride = require('method-override'); app.use(bodyParser()); app.use(methodOverride()); app.use(app.router); app.use(logErrors); app.use(clientErrorHandler); app.use(errorHandler);
Dalam logError yang lebih umum, anda boleh menulis permintaan dan mesej ralat ke perkhidmatan stderr, loggly atau serupa:
function logErrors(err, req, res, next) { console.error(err.stack); next(err); }
Takrif clientErrorHandler adalah seperti berikut, ambil perhatian bahawa ralat ini akan dihantar kepada yang seterusnya secara eksplisit.
function clientErrorHandler(err, req, res, next) { if (req.xhr) { res.send(500, { error: 'Something blew up!' }); } else { next(err); } }
Pelaksanaan errorHandler "seluruh" berikut boleh ditakrifkan sebagai:
function errorHandler(err, req, res, next) { res.status(500); res.render('error', { error: err }); }
Pengiraan dalam talian pengguna
Bahagian ini menerangkan secara terperinci aplikasi (kecil) yang menggunakan Redis untuk menjejaki bilangan pengguna dalam talian. Mula-mula buat pakej. Fail json mengandungi dua lampiran, satu untuk klien redis dan satu lagi untuk Express sendiri. Juga pastikan anda telah membungkus redis dan berjalan melalui $redis-server.
{ "name": "app", "version": "0.0.1", "dependencies": { "express": "3.x", "redis": "*" } }
Seterusnya, anda perlu membuat aplikasi dan sambungan ke redis:
var express = require('express'); var redis = require('redis'); var db = redis.createClient(); var app = express();
Perisian tengah seterusnya menjejaki pengguna dalam talian. Di sini kami akan menggunakan set yang diisih, supaya kami boleh menyoal pengguna dalam talian melalui redis, yang hanya mengambil masa N milisaat. Kami menggunakan cap masa sebagai "standard dalam talian" untuk ahli. Ambil perhatian bahawa di sini kami menggunakan rentetan ejen pengguna dan bukannya id pengguna biasa.
app.use(function(req, res, next){ var ua = req.headers['user-agent']; db.zadd('online', Date.now(), ua, next); });
Perisian tengah seterusnya ialah menggunakan zrevrangebyscore untuk mendapatkan bilangan maksimum pengguna dalam talian pada saat terakhir Kami sentiasa mendapat pengguna dalam talian yang paling terkini, dan had atasnya ialah cap masa semasa tolak 60000 milisaat.
app.use(function(req, res, next){ var min = 60 * 1000; var ago = Date.now() - min; db.zrevrangebyscore('online', '+inf', ago, function(err, users){ if (err) return next(err); req.online = users; next(); }); });
最后,我们通过一个url使用它,并绑定到一个端口!这就完了,在一个新浏览器访问这个应用程序,您会看到在线人数增加。
app.get('/', function(req, res){ res.send(req.online.length + ' users online'); }); app.listen(3000);
Expree的反向代理
在反向代理背后使用Expree,如Varnish 或Nginx是微不足道的,然而它需要配置。通过启用“信任代理”设置app.enable(“trust proxy”),Express有一些反向代理的技巧,X-Forwarded - *头字段可能是可信的,否则他们可能很容易被欺骗。
启用该设置有一些微妙的影响。第一个是X-Forwarded-Proto可能被反向代理设定,告诉app那是https或者只是简单的http。这个值由req.protocol反射。
第二个变化是req.ip和req.ips值将填充X-Forwarded-For地址的列表。
调试Express
Express内部使用调试模块记录路径匹配和应用程序模式的信息。要看到这条信息,只要简单设置调试环境变量为express:*,当启动应用程序后,你将在控制台看以调试信息。
$ DEBUG=express:* node ./bin/www
运行这个hello world示例将打印以下内容:
express:application booting in development mode +0ms express:router defined get /hello.txt +0ms express:router defined get /hello.txt +1ms
另外, 表达可执行(生成器)生成的程序也使用调试模块,默认作用域是my-application调试命名空间。
你可以用以下命令启用这些调试语句
$ DEBUG=my-application node ./bin/www
关于调试的更多信息,请参见调试 指南

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Leverage JQuery untuk Layouts Laman Web yang mudah: 8 Plugin Essential JQuery memudahkan susun atur laman web dengan ketara. Artikel ini menyoroti lapan plugin jQuery yang kuat yang menyelaraskan proses, terutamanya berguna untuk penciptaan laman web manual

Jadi di sini anda, bersedia untuk mempelajari semua perkara ini yang dipanggil Ajax. Tetapi, apa sebenarnya? Istilah Ajax merujuk kepada kumpulan teknologi longgar yang digunakan untuk membuat kandungan web yang dinamik dan interaktif. Istilah Ajax, yang asalnya dicipta oleh Jesse J

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Tutorial ini menunjukkan membuat kotak halaman dinamik yang dimuatkan melalui AJAX, membolehkan Refresh Instant tanpa tambah nilai halaman penuh. Ia memanfaatkan JQuery dan JavaScript. Fikirkannya sebagai loader kotak kandungan gaya Facebook tersuai. Konsep Utama: Ajax dan JQuery

10 Plugin Permainan JQuery yang menyeronokkan untuk menjadikan laman web anda lebih menarik dan meningkatkan keletihan pengguna! Walaupun Flash masih merupakan perisian terbaik untuk membangunkan permainan web kasual, jQuery juga boleh menghasilkan kesan yang mengejutkan, dan walaupun tidak setanding dengan permainan flash aksi tulen, dalam beberapa kes, anda juga boleh bersenang -senang di penyemak imbas anda. permainan jquery tic toe "Hello World" pengaturcaraan permainan kini mempunyai versi jQuery. Kod sumber JQuery Game Composition Crazy Word Ini adalah permainan mengisi kosong, dan ia dapat menghasilkan beberapa hasil yang pelik kerana tidak mengetahui konteks perkataan. Kod sumber JQuery Mine Sweeping Game

Perpustakaan JavaScript ini memanfaatkan Window.Name Property untuk menguruskan data sesi tanpa bergantung pada kuki. Ia menawarkan penyelesaian yang mantap untuk menyimpan dan mengambil pembolehubah sesi di seluruh pelayar. Perpustakaan menyediakan tiga kaedah teras: sesi

Tutorial ini menunjukkan cara membuat kesan latar belakang paralaks yang menawan menggunakan jQuery. Kami akan membina sepanduk header dengan imej berlapis yang mewujudkan kedalaman visual yang menakjubkan. Plugin yang dikemas kini berfungsi dengan JQuery 1.6.4 dan kemudian. Muat turun
