Rumah >hujung hadapan web >tutorial js >Bermula dengan Connect
Komponen middleware adalah plugin yang mendapat permintaan dan kemudian melakukan beberapa pemprosesan, selepas itu ia mungkin mengendalikan dan menamatkan permintaan atau lulus pada plugin middleware seterusnya. Plugin yang memproses permintaan dan lulus pada pengendali seterusnya dipanggil
penapis , manakala yang sebenarnya mengendalikan permintaan itu dikenali sebagai penyedia . Dalam kumpulan pertama, kami dapat mencari plugin logging plugin atau plugin pengesahan, hanya untuk menyebut beberapa contoh. Bagi penyedia, mereka akan menjadi sebahagian daripada logik perniagaan permohonan anda.
Dalam artikel ini, anda akan melihat bagaimana untuk memulakan dan menggunakan rangka kerja middleware Connect dalam aplikasi Node.js anda.$ npm initDan kemudian eply kepada soalan -soalan yang akan ditunjukkan (seperti nama pakej dan sebagainya). Setelah selesai, fail "Package.json" anda harus muncul dalam folder root dengan kandungan yang menyerupai yang di bawah:
<span>{ </span> <span>"name": "nodejs-connect-demo", </span> <span>"version": "1.0.0", </span> <span>"description": "Demo on how to use connect framework for Node.js", </span> <span>"main": "server.js", </span> <span>"scripts": { </span> <span>"test": "echo \"Error: no test specified\" && exit 1" </span> <span>}, </span> <span>"repository": { </span> <span>"type": "git", </span> <span>"url": "https://github.com/abbassoftware/nodejs-connect-demo.git" </span> <span>}, </span> <span>"keywords": [ </span> <span>"connect" </span> <span>], </span> <span>"author": "Abbas", </span> <span>"license": "", </span> <span>"bugs": { </span> <span>"url": "https://github.com/abbassoftware/nodejs-connect-demo/issues" </span> <span>}, </span> <span>"homepage": "https://github.com/abbassoftware/nodejs-connect-demo" </span><span>}</span>
Fail ini sudah mengandungi maklumat mengenai projek itu, tetapi ia tidak mempunyai kebergantungan yang diisytiharkan. Untuk mengisytiharkan Connect sebagai kebergantungan, anda perlu menambah nilai ketergantungan dalam fail "Package.json" anda dan mengemas kini seperti berikut:
<span>{ </span> <span>... </span> <span>"dependencies": { </span> <span>"connect": "3.x" </span> <span>}, </span> <span>... </span><span>}</span>Sebagai alternatif, anda boleh menjalankan arahan:
npm install connect --savePada ketika ini, kita boleh menjalankan arahan NPM berikut untuk memuat turun semua kebergantungan (hanya bersambung dalam kes ini):
$ npm install
Apabila ketergantungan telah ditentukan, kita boleh bergerak untuk membuat pembekal middleware yang bertindak balas terhadap semua permintaan menggunakan respons Hello Connect. Untuk melakukan itu, buat fail "server.js" dalam direktori projek node.js anda dan tambahkan kod berikut:
<span>var connect = require("connect"); </span><span>var app = connect(); </span> <span>function sayHello(req<span>, res, next</span>) { </span> res<span>.setHeader('Content-Type', 'text/plain'); </span> res<span>.end('Hello Connect'); </span><span>} </span> app <span>.use(sayHello) </span> <span>.listen(3031); </span> <span>console.log("Server is listening");</span>Dalam kod di atas, kita terlebih dahulu memuatkan modul Connect menggunakan fungsi Node.js (), dan kemudian buat pelayan menggunakan nilai pulangan fungsi. Kedua, kami membuat komponen middleware, itu hanyalah fungsi, yang memerlukan tiga parameter: permintaan , tindak balas, dan seterusnya. Seterusnya mewakili pengendali seterusnya dalam rantai. Fungsi Sayhello () menetapkan tajuk dan teks tindak balas dalam objek tindak balas. Selepas itu kami menggunakan komponen middleware ini terima kasih kepada fungsi penggunaan (). Akhirnya, kami membenarkan pelayan untuk mendengar di port 3031. Sekarang, kami boleh menjalankan aplikasi Connect kami menggunakan arahan di bawah:
node serverJika kita menunjukkan penyemak imbas kita ke localhost: 3031, kita harus dapat melihat output seperti berikut:
Dalam bahagian ini, kami akan menyelidiki permintaan, tindak balas, dan parameter seterusnya yang kami sebutkan di bahagian sebelumnya. Objek Permintaan memegang butiran mengenai permintaan yang masuk. Beberapa maklumat yang paling penting dalam objek permintaan adalah:
Objek tindak balas memegang respons yang akan dihantar kembali. Anda boleh menambah tajuk dan data kepadanya bergantung pada aplikasi anda. Beberapa fungsi penting objek tindak balas adalah:
$ npm initDalam kod di atas, kami telah menambah satu lagi komponen middleware menggunakan fungsi LoggingMiddleWare (). Ia log url dan kaedah permintaan, dan menghancurkan URL untuk mencetak nama yang mungkin parameter yang disediakan. Kemudian, ia memanggil fungsi seterusnya () yang akan lulus permintaan kepada pengendali seterusnya. Apabila kami membuat pelayan Connect mendengar port, pertama kami menggunakan LoggingMidDleWare () dan kemudian Sayhello (). Sekarang, jika kita memulakan pelayan Node.js dan jalankan arahan berikut:
<span>{ </span> <span>"name": "nodejs-connect-demo", </span> <span>"version": "1.0.0", </span> <span>"description": "Demo on how to use connect framework for Node.js", </span> <span>"main": "server.js", </span> <span>"scripts": { </span> <span>"test": "echo \"Error: no test specified\" && exit 1" </span> <span>}, </span> <span>"repository": { </span> <span>"type": "git", </span> <span>"url": "https://github.com/abbassoftware/nodejs-connect-demo.git" </span> <span>}, </span> <span>"keywords": [ </span> <span>"connect" </span> <span>], </span> <span>"author": "Abbas", </span> <span>"license": "", </span> <span>"bugs": { </span> <span>"url": "https://github.com/abbassoftware/nodejs-connect-demo/issues" </span> <span>}, </span> <span>"homepage": "https://github.com/abbassoftware/nodejs-connect-demo" </span><span>}</span>
kita akan melihat mesej berikut:
Perkara seterusnya yang perlu dilakukan ialah menambah pengesahan ke bahagian admin laman web kami menggunakan pengesahan akses asas HTTP. Untuk melakukan itu, kita perlu meneroka bagaimana kita boleh menjalankan pengendali hanya untuk bahagian admin pelayan kami. Fungsi penggunaan Connect () boleh mengambil parameter pertama kerana apa yang sepatutnya menjadi jalan dalam request.url untuk pengendali untuk dipanggil. Oleh itu, jika kita mahu pengendali pengesahan secara eksklusif untuk seksyen admin, kita perlu mengemas kini fail "server.js" seperti berikut:
<span>{ </span> <span>... </span> <span>"dependencies": { </span> <span>"connect": "3.x" </span> <span>}, </span> <span>... </span><span>}</span>
maka kita perlu membuat fail "authdetails.json" dalam direktori yang sama "server.js" dengan kandungan berikut:
$ npm initDalam kod di atas, kami memuatkan fail JSON yang dipanggil "AuthDetails.json" (yang baru dibuat) yang akan merangkumi objek JSON yang mengandungi senarai nama pengguna dan kata laluan pengguna yang diberi kuasa. Kemudian kami menambah satu lagi pengendali sambung yang dipanggil AuthenticateAdMin hanya digunakan untuk bahagian admin laman web. Pengendali yang telah disebutkan sebelumnya memeriksa tajuk kebenaran dan kemudian menguraikan nama pengguna/kata laluan, dan menyemaknya terhadap kandungan fail JSON untuk kebenaran. Sekiranya permintaan itu tidak diberi kuasa, respons yang tidak dibenarkan dengan Kod Respons 401 dihantar kepada pelanggan. Dengan kemas kini ini, jika kami membuat permintaan ke bahagian pentadbir Laman ini, output akan menjadi seperti berikut:
Bagaimana saya menggunakan middleware di Connect? gunakan () kaedah pada aplikasi Connect. Kaedah penggunaan () mengambil fungsi middleware sebagai hujah. Fungsi middleware ini kemudiannya ditambahkan ke stack middleware Connect dan akan dilaksanakan mengikut urutan yang ditambah apabila permintaan dibuat ke pelayan.
Ya, anda boleh membuat middleware anda sendiri di Connect. Middleware hanyalah fungsi yang mempunyai akses kepada objek permintaan, objek tindak balas, dan fungsi middleware seterusnya dalam kitaran permintaan permintaan aplikasi. Fungsi ini boleh melakukan apa -apa operasi pada objek permintaan dan tindak balas, dan kemudian hubungi fungsi middleware seterusnya dalam timbunan.
Fungsi seterusnya () adalah fungsi dalam middleware Connect yang, apabila dipanggil, lulus kawalan ke fungsi middleware seterusnya dalam timbunan. Jika fungsi middleware tidak memanggil seterusnya () di dalamnya, kitaran permintaan-tindak balas akan dihentikan. Ia tidak akan diteruskan ke mana-mana pengendali middleware atau laluan lain.
Ya, Connect direka untuk berfungsi dengan lancar dengan kebanyakan kerangka web Node.js. Malah, banyak kerangka popular seperti Express.js dibina di atas Connect. Ini bermakna anda boleh menggunakan middleware Connect dalam rangka kerja ini.
Pada masa penulisan, Connect tidak diselenggarakan dan dikemas kini secara aktif. Kemas kini terakhir dibuat beberapa tahun yang lalu. Walau bagaimanapun, ia masih digunakan secara meluas dan fungsinya stabil. Untuk rangka kerja middleware yang lebih aktif, anda mungkin mempertimbangkan menggunakan Express.js, yang dibina di atas Connect dan termasuk ciri -ciri tambahan.
Atas ialah kandungan terperinci Bermula dengan Connect. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!