Что делает Express.js в стеке MEAN?
Недавно я попал в AngularJS, и мне это нравится. Для предстоящего проекта я хочу использовать стек MEAN (MongoDB, Express, Angular, Node). Я хорошо знаком с Angular, и у меня есть скромное понимание целей MongoDB и Node в стеке. Тем не менее, я не совсем понимаю, какова цель Express.js. Это важно для стека MEAN? Что бы вы сравнили это с традиционным MySQL, PHP, javascript-приложением? Что он делает, что другие три компонента не могут сделать?
Кроме того, если кто-то хочет дать свое собственное представление о том, как четыре части стека работают вместе, это будет здорово.
Ответы
Ответ 1
- MongoDB = база данных
- Экспресс .js = веб-фреймворк
- Angular= front-end framework
- Node= базовая платформа/веб-фреймворк
В основном, что делает Express, это позволяет вам легко создавать веб-приложения, предоставляя несколько более простой интерфейс для создания конечных точек запроса, обработки файлов cookie и т.д., чем vanilla Node. Вы можете отказаться от этого уравнения, но тогда вам придется делать гораздо больше работы, взбивая веб-приложение. Node сам мог делать все, что делает экспресс (экспресс реализован с помощью node), но выражает просто обертывает его в более приятном пакете.
Я бы сравнил Express с некоторой веб-картой PHP в описываемом вами стеке, что-то вроде slim.
Ответ 2
Вы можете думать о Экспрессе как поясе полезности для создания веб-приложений с помощью Node.js. Он предоставляет функции для почти всего, что вам нужно для создания веб-сервера. Если бы вы писали одинаковую функциональность с vanilla Node.js, вам пришлось бы писать значительно больше кода. Вот несколько примеров того, что делает Express:
- маршруты REST упрощаются с помощью таких вещей, как
-
app.get('/user/:id', function(req, res){ /* req.params('id') is avail */ });
- Система промежуточного программного обеспечения, которая позволяет подключать различные синхронные функции, которые выполняют разные действия с запросом или ответом, т.е. аутентификация или добавление свойств
-
app.use(function(req,res,next){ req.timestamp = new Date(); next(); });
- Функции для разбора тела запросов POST
- Средства защиты от сценариев межсетевого взаимодействия.
- Автоматическая обработка заголовков HTTP
-
app.get('/', function(req,res){ res.json({object: 'something'}); });
Вообще говоря, Sinatra - это Ruby, поскольку Express - Node.js. Я знаю, что это не пример PHP, но я мало знаю о фреймворках PHP.
Ответ 3
Экспресс обрабатывает такие вещи, как файлы cookie, анализирует тело запроса, формирует маршруты ответа и обработки.
Он также является частью приложения, которое слушает сокет для обработки входящих запросов.
Простой пример из express github
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
Показывает создание экспресс-сервера, создание маршрута app.get('/'...
и открытие порта для прослушивания входящих HTTP-запросов.
Ответ 4
Экспресс в среде на основе Node.js, которая упрощает написание серверного кода и логики.
Добавляет множество полезных функций и предлагает дополнительные функциональные возможности, и в целом упрощает работу.
Express основан на промежуточном программном обеспечении: он в основном направляет входящие запросы через цепочку промежуточного программного обеспечения (этапов), где мы можем что-то делать с запросом, читать некоторые данные из него, манипулировать им, проверять, аутентифицирован ли пользователь, или в основном отправлять ответ немедленно.
Эта цепочка промежуточного программного обеспечения позволяет нам писать очень структурированный код
Ответ 5
Express - это инфраструктура nodejs, построенная на основе модуля Http, с более удобными и улучшенными функциями, такими как простой способ обработки маршрутов.
Например: использование HTTP
var http = require('http');
//create a server object:
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'}); // http header
var url = req.url;
if(url ==='/about'){
res.write('<h1>about us page<h1>'); //write a response
res.end(); //end the response
}else if(url ==='/contact'){
res.write('<h1>contact us page<h1>'); //write a response
res.end(); //end the response
}else{
res.write('<h1>Hello World!<h1>'); //write a response
res.end(); //end the response
}
}).listen(3000, function(){
console.log("server start at port 3000"); //the server object listens on port 3000
});
с помощью Express:
var express = require('express');
var app = express();
app.get('/about',function(req,res)=>{
res.write('<h1>about us page<h1>'); //write a response
res.end();
})
Ответ 6
Express позволяет легко управлять запросами http по сравнению с vanilla js. вам нужно следующее, чтобы сделать запрос на получение
const Http = new XMLHttpRequest();
const url='https://jsonplaceholder.typicode.com/posts';
Http.open("GET", url);
Http.send();
Http.onreadystatechange=(e)=>{
console.log(Http.responseText)
}
В экспрессе требуется экспресс, использовать его и делать http запросы
const express = require("express")
const app =express();
app.get("url",callback function);