Latest web development tutorials

cadre Node.js express

profil express

Express est un cadre d'application node.js Web simple et flexible qui offre une gamme de fonctionnalités puissantes pour vous aider à créer une variété d'applications Web, et de riches outils de HTTP.

Utilisez Express peut rapidement mettre en place un site Web entièrement fonctionnel.

Express caractéristiques essentielles du cadre:

  • Middleware peut être configuré pour répondre aux requêtes HTTP.

  • Il définit la table de routage pour effectuer différentes requêtes HTTP action.

  • Vous pouvez passer des paramètres au modèle pour rendre dynamiquement des pages HTML.


Installation express

Installation Express et enregistrez-le à compter sur la liste:

$ npm install express --save

La commande ci - dessus Exprimez cadre est monté répertoirenode_modules le répertoire courant, le répertoire sera automatiquement créé exprimer répertoire node_modules.Plusieurs besoins importants et le module Express est installé avec le cadre:

  • corps-parser - node.js middleware, JSON, Raw, texte et des données d'URL codées pour le traitement.

  • cookie parser - Ceci est un outil pour l' analyse Cookie.Par req.cookies peut arriver à passer le cookie, et les transformer en objets.

  • multer - node.js middleware pour le traitement enctype = "multipart / form-data " ( sous forme de jeu codage MIME) des données de formulaire.

$ npm install body-parser --save
$ npm install cookie-parser --save
$ npm install multer --save

La première instance de cadre express

Ensuite, nous utilisons le cadre Express pour la sortie "Bonjour tout le monde".

L'exemple suivant, nous avons introduit le module express, et le client demandeur, la réponse à la chaîne "Bonjour tout le monde".

Créer un fichier express_demo.js, le code est le suivant:

//express_demo.js 文件
var express = require('express');
var app = express();

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Exécutez le code ci-dessus:

$ node express_demo.js 
应用实例,访问地址为 http://0.0.0.0:8081

Accès http://127.0.0.1:8081 dans le navigateur, les résultats indiqués ci-dessous:


Demande et réponse

l' application Express utilise lesparamètres de la fonction de rappel:demande et deréponsedes objets à traiter les demandes et les réponses données.

app.get('/', function (req, res) {
   // --
})

introduire lademande spécifique et l' objet de réponse:

Demande Objet - Demande objet représente une requête HTTP contient le paramètre de chaîne demande de requête, le contenu, en- tête HTTP attributs.attributs communs sont:

  1. req.app: Lorsque rappel à un fichier externe, avec un accès express exemples de req.app
  2. req.baseUrl: Obtenir URL routage actuellement installé
  3. req.body / req.cookies: obtenir "corps de la demande" / Cookies
  4. req.fresh / req.stale: déterminer si la demande est toujours "frais"
  5. req.hostname / req.ip: obtenir le nom d'hôte et l'adresse IP
  6. req.originalUrl: Obtenir l'URL de demande originale
  7. req.params: Obtenez des paramètres d'itinéraire
  8. req.path: Obtenez le chemin de la requête
  9. req.protocol: Get type de protocole
  10. req.query: Obtenir les paramètres de chaîne de requête d'URL
  11. req.route: Obtenez l'itinéraire correspondant actuel
  12. req.subdomains: Obtenir un sous-domaine
  13. req.accpets (): Vérifiez l'en-tête de demande Accept type de demande
  14. req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages
  15. req.get (): Obtient la requête HTTP en-tête spécifié
  16. req.is (): si la demande en-tête Content-Type type MIME

Objets Réponse - objet de réponse représente une réponse HTTP, HTTP qui est, lors de la réception d' une demande envoyée aux données de réponse du client. attributs communs sont:

  1. res.app: même que req.app
  2. res.append (): Indique supplémentaire en-tête HTTP
  3. res.set () avant res.append () va réinitialiser les paramètres de
  4. res.cookie (nom, valeur [option]): Set Cookie
  5. opition: domaine / expiration / httpOnly / maxAge / chemin / sécurisé / signé
  6. res.clearCookie (): Effacer Cookie
  7. res.download (): Indique le chemin de transmission du fichier
  8. res.get (): Retourne l'en-tête HTTP
  9. res.json (): transfert de réponse JSON
  10. res.jsonp (): transférer réponse JSONP
  11. res.location (): définir les en-têtes de réponse HTTP Location, et non définis ou la fermeture du code d'état de réponse
  12. res.redirect (): définir les en-têtes de réponse Emplacement HTTP, et définir le statut de code 302
  13. res.send (): HTTP transfert de réponse
  14. res.sendFile (path [, options] [fn]): Indique le chemin de transmission du fichier - est automatiquement réglé l'extension Content-Type basé sur fichier
  15. res.set (): définir l'en-tête HTTP, vous pouvez définir plusieurs tête de l'objet entrant
  16. res.status (): définir le code d'état HTTP
  17. res.type (): définir le type MIME Content-Type

routage

Nous connaissons déjà les demandes de base demande HTTP et itinéraire déterminé par qui (spécifier un script) pour répondre aux demandes des clients.

Dans la requête HTTP, nous pouvons extraire le routage d'URL et GET / POST demande de paramètre.

Ensuite, nous étendons Bonjour tout le monde, d'ajouter quelques fonctionnalités à gérer plusieurs types de requêtes HTTP.

Créer un fichier express_demo2.js, le code est le suivant:

var express = require('express');
var app = express();

//  主页输出 "Hello World"
app.get('/', function (req, res) {
   console.log("主页 GET 请求");
   res.send('Hello GET');
})


//  POST 请求
app.post('/', function (req, res) {
   console.log("主页 POST 请求");
   res.send('Hello POST');
})

//  /del_user 页面响应
app.get('/del_user', function (req, res) {
   console.log("/del_user 响应 DELETE 请求");
   res.send('删除页面');
})

//  /list_user 页面 GET 请求
app.get('/list_user', function (req, res) {
   console.log("/list_user GET 请求");
   res.send('用户列表页面');
})

// 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求
app.get('/ab*cd', function(req, res) {   
   console.log("/ab*cd GET 请求");
   res.send('正则匹配');
})


var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Exécutez le code ci-dessus:

$ node express_demo2.js 
应用实例,访问地址为 http://0.0.0.0:8081

Ensuite, vous pouvez essayer d'accéder à http://127.0.0.1:8081 adresse différente, pour voir l'effet.

http://127.0.0.1:8081/list_user d'accès dans le navigateur, les résultats comme indiqué ci-dessous:

http://127.0.0.1:8081/abcd d'accès dans le navigateur, les résultats comme indiqué ci-dessous:

Accès http://127.0.0.1:8081/abcdefg dans le navigateur, les résultats indiqués ci-dessous:


Les fichiers statiques

Express offre intégrée middlewareexpress.static pour définir des fichiers statiques tels que: images, CSS, JavaScript et ainsi de suite.

Vous pouvez utiliser un middlewareexpress.static pour définir un chemin de fichier statique.Par exemple, si vous vous imaginez, CSS, fichiers JavaScript dans le répertoire public, vous pouvez écrire:

app.use(express.static('public'));

Nous pouvons aller au public / images répertoire délégué quelques images, comme suit:

node_modules
server.js
public/
public/images
public/images/logo.png

Modifions la prochaine "Bonjour mot" ajouter des fichiers statiques de fonctionnalité de traitement des demandes.

Créer un fichier express_demo3.js, le code est le suivant:

var express = require('express');
var app = express();

app.use(express.static('public'));

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Exécutez le code ci-dessus:

$ node express_demo3.js 
应用实例,访问地址为 http://0.0.0.0:8081

Exécutez le code ci-dessus:


Méthode GET

L'exemple suivant illustre les deux paramètres dans le formulaire présenté par la méthode GET, nous pouvons utiliser leprocess_get routeur server.js dans le fichier à traiter l'entrée:

Code de fichier index.htm est le suivant:

<html>
<body>
<form action="http://127.0.0.1:8081/process_get" method="GET">
First Name: <input type="text" name="first_name">  <br>

Last Name: <input type="text" name="last_name">
<input type="submit" value="Submit">
</form>
</body>
</html>

Code de fichier server.js est la suivante:

var express = require('express');
var app = express();

app.use(express.static('public'));

app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.get('/process_get', function (req, res) {

   // 输出 JSON 格式
   response = {
       first_name:req.query.first_name,
       last_name:req.query.last_name
   };
   console.log(response);
   res.end(JSON.stringify(response));
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Exécutez le code ci-dessus:

node server.js 
应用实例,访问地址为 http://0.0.0.0:8081

Navigateur accès http://127.0.0.1:8081/index.htm, comme le montre:

Maintenant, vous pouvez entrer des données dans les formulaires, et soumettre la présentation suivante:


méthode POST

L'exemple suivant montre deux paramètres via la méthode POST pour soumettre le formulaire, nous pouvons utiliserle process_post du routeur dans le fichier à traiter l'entrée:

Code de fichier index.htm modifié comme suit:

<html>
<body>
<form action="http://127.0.0.1:8081/process_post" method="POST">
First Name: <input type="text" name="first_name">  <br>

Last Name: <input type="text" name="last_name">
<input type="submit" value="Submit">
</form>
</body>
</html>

Code de fichier server.js modifié comme suit:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');

// 创建 application/x-www-form-urlencoded 编码解析
var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use(express.static('public'));

app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.post('/process_post', urlencodedParser, function (req, res) {

   // 输出 JSON 格式
   response = {
       first_name:req.body.first_name,
       last_name:req.body.last_name
   };
   console.log(response);
   res.end(JSON.stringify(response));
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Exécutez le code ci-dessus:

$ node server.js
应用实例,访问地址为 http://0.0.0.0:8081

Navigateur accès http://127.0.0.1:8081/index.htm, comme le montre:

Maintenant, vous pouvez entrer des données dans les formulaires, et soumettre la présentation suivante:


File Upload

Ci-dessous, nous créons un formulaire pour télécharger un fichier en utilisant la méthode POST, l'attribut sous forme de enctype multipart / form-data.

Code de fichier index.htm modifié comme suit:

<html>
<head>
<title>文件上传表单</title>
</head>
<body>
<h3>文件上传:</h3>
选择一个文件上传: <br />
<form action="/file_upload" method="post" enctype="multipart/form-data">
<input type="file" name="image" size="50" />
<br />
<input type="submit" value="上传文件" />
</form>
</body>
</html>

Code de fichier server.js modifié comme suit:

var express = require('express');
var app = express();
var fs = require("fs");

var bodyParser = require('body-parser');
var multer  = require('multer');

app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/'}).array('image'));

app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.post('/file_upload', function (req, res) {

   console.log(req.files[0]);  // 上传的文件信息

   var des_file = __dirname + "/" + req.files[0].originalname;
   fs.readFile( req.files[0].path, function (err, data) {
        fs.writeFile(des_file, data, function (err) {
         if( err ){
              console.log( err );
         }else{
               response = {
                   message:'File uploaded successfully', 
                   filename:req.files[0].originalname
              };
          }
          console.log( response );
          res.end( JSON.stringify( response ) );
       });
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Exécutez le code ci-dessus:

$ node server.js 
应用实例,访问地址为 http://0.0.0.0:8081

Navigateur accès http://127.0.0.1:8081/index.htm, comme le montre:

Maintenant, vous pouvez entrer des données dans les formulaires, et soumettre la présentation suivante:


Gestion des cookies

Nous pouvons utiliser le middleware envoie des informations de cookie au serveur Node.js, le code suivant renvoie les informations de cookie est envoyé par le client:

// express_cookie.js 文件
var express      = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser())

app.get('/', function(req, res) {
  console.log("Cookies: ", req.cookies)
})

app.listen(8081)

Exécutez le code ci-dessus:

$ node express_cookie.js 

Maintenant, vous pouvez accéder et consulter http://127.0.0.1:8081 sortie des informations de terminal, la suite de la présentation:


Informations connexes