Apprentissage de nodejs : entrée express et bases
Ce chapitre vous présente l'introduction et les connaissances de base de l'apprentissage de nodejs : express. Alors, qu'est-ce qu'Express ? Express est un framework de développement Web avec des fonctions minimales et composé entièrement de routage et de middleware : essentiellement, une application express appelle divers middleware. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Initialisation
Créer un nouveau répertoire myapp, initialisation du projet
$ npm init
Installer express
$ npm install express --save
Créez une instance hello world
Entrez dans le répertoire myapp et créez une instance nommée app.js
var express = require('express'); var app = express(); app.get('/', function(req, res) { res.send('Hello World!'); }); var server = app.listen(3000, function() { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); });
Le code ci-dessus démarre un serveur et écoute toutes les demandes de connexion provenant du port 3000. Il renverra la chaîne "Hello World!" à toutes les URL ou routes (/). Tous les autres chemins renvoient 404 Not Found.
Démarrez via la ligne de commande suivante
$ node app.js
générateur express
Peut être rapidement créé via l'outil générateur d'application express Le squelette d'une application.
1. Installez la commande suivante
$ npm install express-generator -g
2. Créez l'application myapp dans le répertoire actuel et exécutez la commande suivante
$ express myapp $ cd myapp $ npm install> set DEBUG=myapp & npm start
Application créée via Express. générateur d'application Généralement, on a la structure de répertoire suivante :
├── app.js ├── bin │ └── www ├── package.json ├── public │ ├── images │ ├── javascripts │ └── stylesheets │ └── style.css ├── routes │ ├── index.js │ └── users.js └── views ├── error.jade ├── index.jade └── layout.jade 7 directories, 9 files
routage express
Le routage est composé d'un URI (ou chemin) et Il s'agit d'une méthode HTTP spécifique (GET, POST, etc.) qui implique la manière dont l'application répond à l'accès du client à un certain nœud de site Web. Chaque route peut avoir une ou plusieurs fonctions de processeur lorsqu'une route est mise en correspondance, ces fonctions/fonctions seront exécutées.
La définition de l'itinéraire se compose de la structure suivante : app.METHOD(PATH, HANDLER). Parmi eux, app est une instance express ; METHOD est l'une des méthodes de requête HTTP ; PATH est le chemin côté serveur ; HANDLER est la fonction qui doit être exécutée lorsque la route correspond.
Voici quelques codes de routage courants :
var express = require('express'); var app = express(); // respond with "hello world" when a GET request is made to the homepage app.get('/', function(req, res) { res.send('hello world'); }); // POST method route app.post('/', function (req, res) { res.send('POST request to the homepage'); }); //app.all() 是一个特殊的路由方法,没有任何 HTTP 方法与其对应,它的作用是对于一个路径上的所有请求加载中间件。 app.all('/secret', function (req, res, next) { console.log('Accessing the secret section ...'); next(); // pass control to the next handler });
Exemple de chemin de routage utilisant un modèle de chaîne : Les caractères ?, +, * et () sont un sous-ensemble d'expressions régulières, - et . sont interprétés littéralement dans des chemins basés sur des chaînes.
// 匹配 acd 和 abcd app.get('/ab?cd', function(req, res) { res.send('ab?cd'); }); // 匹配 abcd、abbcd、abbbcd等 app.get('/ab+cd', function(req, res) { res.send('ab+cd'); }); // 匹配 abcd、abxcd、abRABDOMcd、ab123cd等 app.get('/ab*cd', function(req, res) { res.send('ab*cd'); }); // 匹配 /abe 和 /abcde app.get('/ab(cd)?e', function(req, res) { res.send('ab(cd)?e'); }); //使用正则表达式的路由路径示例: // 匹配任何路径中含有 a 的路径: app.get(/a/, function(req, res) { res.send('/a/'); }); // 匹配 butterfly、dragonfly,不匹配 butterflyman、dragonfly man等 app.get(/.*fly$/, function(req, res) { res.send('/.*fly$/'); });
Route handle
peut fournir plusieurs fonctions de rappel pour le traitement des requêtes, qui se comportent comme un middleware. La seule différence est que ces fonctions de rappel peuvent appeler la méthode next('route') et ignorer d'autres fonctions de rappel d'itinéraire.
Les poignées d'itinéraire se présentent sous de nombreuses formes, elles peuvent être une fonction, un tableau de fonctions ou un mélange des deux, comme indiqué ci-dessous :
//使用多个回调函数处理路由(记得指定 next 对象): app.get('/example/b', function (req, res, next) { console.log('response will be sent by the next function ...'); next(); }, function (req, res) { res.send('Hello from B!'); }); //使用回调函数数组处理路由: var cb0 = function (req, res, next) { console.log('CB0'); next(); } var cb1 = function (req, res, next) { console.log('CB1'); next(); } var cb2 = function (req, res) { res.send('Hello from C!'); } app.get('/example/c', [cb0, cb1, cb2]);
Méthode de réponse
La méthode de l'objet de réponse (res) dans le tableau suivant renvoie une réponse au client, mettant fin au cycle demande-réponse. Si aucune méthode n’est appelée dans le handle de route, les requêtes du client seront suspendues.
Description de la méthode :
res.download() vous invite à télécharger le fichier.
res.end() termine le processus de traitement des réponses.
res.JSON() envoie une réponse au format JSON.
res.jsonp() envoie une réponse au format JSON prenant en charge JSONP.
res.redirect() redirige la requête.
res.render() restitue le modèle de vue.
res.send() envoie différents types de réponses.
res.sendFile envoie un fichier sous forme de flux d'octets.
res.sendStatus() définit le code d'état de la réponse et l'envoie sous forme de chaîne dans le corps de la réponse.
app.route()
Vous pouvez utiliser app.route() pour créer des poignées d'itinéraire chaînées pour les chemins de routage. Étant donné que le chemin est spécifié au même endroit, cela permet de créer un routage modulaire et de réduire la redondance du code et les fautes de frappe.
app.route('/book') .get(function(req, res) { res.send('Get a random book'); }) .post(function(req, res) { res.send('Add a book'); }) .put(function(req, res) { res.send('Update the book'); });
express.Router
Vous pouvez utiliser la classe express.Router pour créer des gestionnaires d'itinéraires modulaires et montables. Une instance de routeur est un système complet de middleware et de routage, c'est pourquoi elle est souvent appelée « mini-application ».
Créez un fichier nommé bird.js dans le répertoire de l'application avec le contenu suivant :
var express = require('express'); var router = express.Router(); // 该路由使用的中间件 router.use( function timeLog(req, res, next) { console.log('Time: ', Date.now()); next(); }); // 定义网站主页的路由 router.get('/', function(req, res) { res.send('Birds home page'); }); // 定义 about 页面的路由 router.get('/about', function(req, res) { res.send('About birds'); }); module.exports = router;
Chargez ensuite le module de routage dans l'application :
var birds = require('./birds'); ... app.use('/birds', birds);
Le L'application gère les requêtes de /birds et /birds/about et appelle le middleware timeLog spécifié pour cette route.
Utilisez Express pour héberger des fichiers statiques
Vous pouvez facilement héberger des fichiers statiques, tels que des images, des fichiers CSS et JavaScript, grâce aux fonctionnalités intégrées d'Express. -en attente express.static.
Passez le répertoire où se trouvent les fichiers de ressources statiques en tant que paramètre au middleware express.static pour donner accès aux fichiers de ressources statiques. Par exemple, en supposant que vous placez des fichiers images, CSS et JavaScript dans le répertoire public, vous pouvez :
app.use(express.static('public'));
Maintenant, les fichiers du répertoire public sont accessibles.
http://localhost:3000/images/kitten.jpg http://localhost:3000/css/style.css http://localhost:3000/js/app.js http://localhost:3000/images/bg.png http://localhost:3000/hello.html
Si vos ressources statiques sont stockées dans plusieurs répertoires, vous pouvez appeler le middleware express.static plusieurs fois :
app.use(express.static('public')); app.use(express.static('files'));
如果你希望所有通过 express.static 访问的文件都存放在一个“虚拟(virtual)”目录(即目录根本不存在)下面,可以通过为静态资源目录指定一个挂载路径的方式来实现,如下所示:
app.use('/static', express.static('public'));
现在,你就爱可以通过带有 “/static” 前缀的地址来访问 public 目录下面的文件了。
http://localhost:3000/static/images/kitten.jpg http://localhost:3000/static/css/style.css http://localhost:3000/static/js/app.js http://localhost:3000/static/images/bg.png http://localhost:3000/static/hello.html
常见问题
如何处理 404 ?
在 Express 中,404 并不是一个错误(error)。因此,错误处理器中间件并不捕获 404。这是因为 404 只是意味着某些功能没有实现。也就是说,Express 执行了所有中间件、路由之后还是没有获取到任何输出。你所需要做的就是在其所有他中间件的后面添加一个处理 404 的中间件。如下:
app.use(function(req, res, next) { res.status(404).send('Sorry cant find that!'); });
Express 支持哪些模板引擎?
Express 支持任何符合 (path, locals, callback) 接口规范的模板引擎。
如何渲染纯 HTML 文件?
不需要!无需通过 res.render() 渲染 HTML。你可以通过 res.sendFile() 直接对外输出 HTML 文件。如果你需要对外提供的资源文件很多,可以使用 express.static() 中间件。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les principales différences entre Node.js et Tomcat sont : Runtime : Node.js est basé sur le runtime JavaScript, tandis que Tomcat est un conteneur de servlet Java. Modèle d'E/S : Node.js utilise un modèle asynchrone non bloquant, tandis que Tomcat est un modèle de blocage synchrone. Gestion de la concurrence : Node.js gère la concurrence via une boucle d'événements, tandis que Tomcat utilise un pool de threads. Scénarios d'application : Node.js convient aux applications en temps réel, gourmandes en données et à forte concurrence, et Tomcat convient aux applications Web Java traditionnelles.

Node.js est un environnement d'exécution JavaScript côté serveur, tandis que Vue.js est un framework JavaScript côté client permettant de créer des interfaces utilisateur interactives. Node.js est utilisé pour le développement côté serveur, comme le développement d'API de service back-end et le traitement des données, tandis que Vue.js est utilisé pour le développement côté client, comme les applications monopage et les interfaces utilisateur réactives.

Node.js peut être utilisé comme framework backend car il offre des fonctionnalités telles que des performances élevées, l'évolutivité, la prise en charge multiplateforme, un écosystème riche et une facilité de développement.

Pour vous connecter à une base de données MySQL, vous devez suivre ces étapes : Installez le pilote mysql2. Utilisez mysql2.createConnection() pour créer un objet de connexion contenant l'adresse de l'hôte, le port, le nom d'utilisateur, le mot de passe et le nom de la base de données. Utilisez connection.query() pour effectuer des requêtes. Enfin, utilisez connection.end() pour mettre fin à la connexion.

Les variables globales suivantes existent dans Node.js : Objet global : global Module principal : processus, console, nécessiter Variables d'environnement d'exécution : __dirname, __filename, __line, __column Constantes : undefined, null, NaN, Infinity, -Infinity

Les principales différences entre Node.js et Java résident dans la conception et les fonctionnalités : Piloté par les événements ou piloté par les threads : Node.js est piloté par les événements et Java est piloté par les threads. Monothread ou multithread : Node.js utilise une boucle d'événements monothread et Java utilise une architecture multithread. Environnement d'exécution : Node.js s'exécute sur le moteur JavaScript V8, tandis que Java s'exécute sur la JVM. Syntaxe : Node.js utilise la syntaxe JavaScript, tandis que Java utilise la syntaxe Java. Objectif : Node.js convient aux tâches gourmandes en E/S, tandis que Java convient aux applications de grande entreprise.

Il existe deux fichiers liés à npm dans le répertoire d'installation de Node.js : npm et npm.cmd. Les différences sont les suivantes : différentes extensions : npm est un fichier exécutable et npm.cmd est un raccourci de fenêtre de commande. Utilisateurs Windows : npm.cmd peut être utilisé à partir de l'invite de commande, npm ne peut être exécuté qu'à partir de la ligne de commande. Compatibilité : npm.cmd est spécifique aux systèmes Windows, npm est disponible multiplateforme. Recommandations d'utilisation : les utilisateurs Windows utilisent npm.cmd, les autres systèmes d'exploitation utilisent npm.

Oui, Node.js est un langage de développement backend. Il est utilisé pour le développement back-end, notamment la gestion de la logique métier côté serveur, la gestion des connexions à la base de données et la fourniture d'API.
