Heim Web-Frontend js-Tutorial Der Knoten erstellt seine eigene Serverinstanz durch die Implementierung von Express

Der Knoten erstellt seine eigene Serverinstanz durch die Implementierung von Express

May 14, 2018 am 11:16 AM
express node 搭建

In diesem Artikel wird hauptsächlich der Knoten zum Erstellen eines eigenen Servers über Express vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

Vorwort

Um das Simulationsprojekt online zu starten, benötigen wir einen Server, der eine API für den Datenabruf bereitstellt. Dieses Mal habe ich das Express-Framework verwendet, um die API-Schnittstelle zu schreiben. Alle Anfragen werden über Ajax-Anfragen an den Server gestellt, um Daten zurückzugeben. Dies ist das erste Mal, dass ich ein Backend mit Node schreibe, und es ist im Grunde so, als würde man den Fluss überqueren, indem man nach den Steinen sucht. Wenn es irgendwelche Mängel im Artikel gibt, weisen Sie sie bitte darauf hin.

Installieren Sie das Express-Framework

Portal: Express offiziell

Stellen Sie dann die Middleware vor, die eingeführt werden muss. Der Knoten selbst stellt einige Bibliotheken bereit. Wir können es direkt über require referenzieren. Für nicht bereitgestellte Bibliotheken können wir es auch über manuelles npm installieren


var fs = require('fs'); 操作文件模块
var http = require('http'); http模块
var url = require('url');  获取url信息模块
var qs = require('querystring'); 处理url参数模块
var path = require('path'); 文件路径模块
var bodyParser = require('body-parser'); 请求体对象化 (必须)否则后台无法解析前端发送的body内容
Nach dem Login kopieren

Aktivieren Sie dann das Modul direkt

app.use(bodyParser.json());

// 访问静态资源文件 这里是访问所有dist目录下的静态资源文件
app.use(express.static(path.resolve(__dirname, '../dist')))
app.use(express.static('public'));

// 因为是单页应用 所有请求都走/dist/index.html
app.get('/', function(req, res) {
 const html = fs.readFile(path.resolve(__dirname, '../dist/index.html'), 'utf-8');
 res.send(html)
});

//处理请求跨域

app.all('*', function(req, res, next) {
 res.header("Access-Control-Allow-Origin", "*");
 res.header("Access-Control-Allow-Headers", "X-Requested-With");
 res.header("Content-Type", "application/json;charset=utf-8");
 res.header("Access-Control-Allow-Headers", "content-type");
 next();
});
Nach dem Login kopieren

Nachdem die Vorbereitungen abgeschlossen sind, können Sie mit dem Schreiben der Schnittstelle beginnen. In Bezug auf die Datenbank können Sie einen JSON simulieren oder tatsächlich die Online-Datenbank simulieren.

Das Folgende wird zur Beschreibung in drei Abschnitte unterteilt: Datenbankverbindung, angeforderter Vorgang und Dateianforderungsvorgang.

Datenbankverbindung

Hier gehe ich davon aus, dass Sie die Mongodb-Datenbank installiert und erfolgreich aktiviert haben. Lesen Sie das Express-Tutorial sorgfältig durch und Sie werden feststellen, dass das Framework Mongodb über viele Erweiterungs-Plug-Ins zur Verwendung der Datenbank bietet, z. B. Mongoose. Hier verwenden wir Mongoskin, das offiziell von Express bereitgestellt wird, um auf die Datenbank zu verlinken.

$ npm install mongoskin

#####官方实例

var db = require('mongoskin').db('localhost:27017/animals');

db.collection('mamals').find().toArray(function(err, result) {
 if (err) throw err;
 console.log(result);
});
Nach dem Login kopieren

Nach erfolgreicher Installation stellen wir zunächst die von uns verwendete Datenbank vor. Der Code lautet wie folgt

var db = require('mongoskin').db('mongodb://localhost:27017/blog');
var ObjectId = require('mongodb').ObjectID;
Nach dem Login kopieren

Der obige Code bedeutet, dass wir erfolgreich eine Verbindung zur Blog-Datenbank hergestellt haben und die private ID aktiviert. Die von mongodb generierte ID wird automatisch zu den Daten hinzugefügt. Es kann direkt verwendet werden. Zu diesem Zeitpunkt sind die Datenbank und der Server verbunden.

Verarbeiten Sie die vom Frontend gesendete Anfrage

Verarbeiten Sie die Get-Anfrage

/**
 * 获取文章信息
 */
app.get('/article/info', function (req, res) {
 >>> 获取请求参数
 var arg = qs.parse(url.parse(req.url).query);
 var id = arg.id;
 >>> 链接数据库根据参数查找文档并返回
 db.collection('articleList').find({ "_id": ObjectId(id)}).toArray(function(err, result) {
  if (err) throw err;
  console.log(result)
  res.end(JSON.stringify(result))
 });
});
Nach dem Login kopieren

Der obige Code implementiert a Bei der Verarbeitung der Get-Anfrage werden die Parameter der URL über das Parametermodul abgerufen, und db ist die verbundene Datenbank. Durchsuchen Sie die Datentabelle von „articleList“ anhand der ID. Geben Sie die Daten nach der Verarbeitung über res.end() zurück, um die Antwort abzuschließen.

Verarbeitung von Post-Anfragen

/**
 * 提交留言信息
 */
app.post('/board/post', function (req, res) {
 >>>> 获取请求参数
 var data = {
  date: req.body.date,
  name: req.body.name,
  content: req.body.content,
  time: req.body.time,
  position: req.body.position
 };
 
 >>> 链接数据库并插入数据
 
 db.collection('board').insert(data, function(err, result) {
  if(err) {
   res.end('Error:'+ err)
  }
  res.end('提交成功')
 });
});
Nach dem Login kopieren

Die Parametererfassung von Post-Requests unterscheidet sich von get. Sie können den vom Front-End übermittelten Request-Text direkt über req abrufen. Körper. Rufen Sie Parameter über js-Objekte ab. Führen Sie dann Datenbankoperationen basierend auf den Parametern durch. An dieser Stelle wurden die grundlegenden Anforderungen eingeführt. Lassen Sie uns darüber sprechen, wie Sie mit allgemeinen Dateibetriebsanforderungen wie dem Hochladen von Bildern umgehen.

Dateianfragen vom Frontend verarbeiten

Um den Vorgang zu vereinfachen, können wir das Multer-Modul zum Verarbeiten von Dateien einführen. Der Code lautet wie folgt

var multer = require('multer');
var storage = multer.diskStorage({
 //设置上传后文件路径,uploads文件夹会自动创建。
 destination: function (req, file, cb) {
  cb(null, './public/uploads')
 },
 //给上传文件重命名,获取添加后缀名
 filename: function (req, file, cb) {
  var fileFormat = (file.originalname).split(".");
  cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
 }
});
//生成上传模块,让API调用
var upload = multer({
 storage: storage
}).single('file');
Nach dem Login kopieren

oben Der Code führt das Datei-Upload-Modul erfolgreich ein, mit dem wir schnell entsprechende Inhalte generieren können. Für bestimmte Verwendungsmethoden können Sie die offizielle Dokumentation anzeigen. Nachdem die Vorbereitungsarbeiten abgeschlossen sind, verwenden Sie es im Projekt:

/**
 * 图片上传
 */
app.post('/upload', function (req, res) {
 upload(req, res, function (err) {
  if (err) {
   console.log(err)
   return
  }
  console.log(req.file)
  res.end(JSON.stringify(req.file))
 })
});

//图片上传到服务器 ,向客户端返回文件信息
  比如文件的存储位置,之后就可以通过地址访问服务器的图片

/**
 * 图片删除
 */
app.post('/image/delete', function (req, res) {
 fs.unlink(req.body.path, function(err) {
  if (err) {
   return console.error(err);
  }
  res.end("文件删除成功!");
 });
});
Nach dem Login kopieren

Um Bilder hier hochzuladen, verwenden wir direkt das zuvor geschriebene Upload-Modul. Wenn die Schnittstellenanforderung erfolgreich ist, wurde die Datei erstellt erfolgreich hochgeladen. Wenn Sie einen Vorschauvorgang benötigen, sollten Sie die Upload-Schnittstelle nicht direkt aufrufen. Über das native Knoten-FS-Modul können wir auch die hinzugefügten Dateien löschen und ändern.

Aktualisierungsprobleme im Online- und Verlaufsmodus, nachdem ich online gegangen bin

Wir können uns den Online-Prozess so vorstellen, als würde ich einen Computer wechseln, um das Programm auszuführen Server. Installieren Sie eine gute Umgebung auf dem Cloud-Server, klonen Sie das Projekt darin, installieren Sie eine permanente Laufzeitbibliothek wie „Forever“, starten Sie ~ ok, und Ihr Projekt wird immer ausgeführt. Wenn Sie WWW-Zugriff benötigen, müssen Sie außerdem eine DNS-Auflösung und einen Domänennamen kaufen, um auf Ihren Server zu verweisen.

Wenn wir das obige Projekt lokal ausführen, ist es im Grunde kein Problem. Es wird jedoch aktualisiert, sobald das Projekt online geht. Hä? ? 404 was zum Teufel? Öffnen Sie Baidu und überprüfen Sie. Das ist eine Menge Feuer ~~ Der Verlaufsmodus ist auf der aktuellen Seite aktiviert, und die Unterstützung für den Verlauf muss auch auf dem Backend aktiviert sein. Die Express-Umgebung lautet wie folgt:

var history = require('connect-history-api-fallback');
var connect = require('connect');
///////
app.use(history());
Nach dem Login kopieren

Aktualisierung des Codes aktualisieren ~ OK, perfekt!

Zusammenfassung

Wer etwas gut lernen will, braucht eine langfristige Anhäufung. Als Front-End können uns einige Kenntnisse der Serverdatenbank nicht nur dabei helfen, besser mit unseren Brüdern (Back-End) zu kommunizieren, sondern es ist auch wie ein Fisch im Wasser für das Front-End.

Verwandte Empfehlungen:

Detaillierte Erläuterung von Node.js mit Express.Router-Beispielen

jq Paginator kombiniert mit Express-Implementierung Paginierungseffekt

Detaillierte Erläuterung der Verwendung von nodejs+express zur Implementierung einer einfachen Datei-Upload-Funktion

Das obige ist der detaillierte Inhalt vonDer Knoten erstellt seine eigene Serverinstanz durch die Implementierung von Express. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Express für den Datei-Upload im Knotenprojekt So verwenden Sie Express für den Datei-Upload im Knotenprojekt Mar 28, 2023 pm 07:28 PM

Wie gehe ich mit dem Datei-Upload um? Der folgende Artikel stellt Ihnen vor, wie Sie Express zum Hochladen von Dateien im Knotenprojekt verwenden. Ich hoffe, er ist hilfreich für Sie!

Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Apr 03, 2023 pm 06:02 PM

In diesem Artikel stellen wir Ihnen das Prozessmanagement-Tool „pm2“ von Node vor und sprechen darüber, warum PM2 benötigt wird und wie Sie PM2 installieren und verwenden. Ich hoffe, dass es für alle hilfreich ist!

PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? Mar 05, 2025 pm 05:57 PM

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

So erstellen Sie schnell ein statistisches Diagrammsystem unter dem Vue-Framework So erstellen Sie schnell ein statistisches Diagrammsystem unter dem Vue-Framework Aug 21, 2023 pm 05:48 PM

So erstellen Sie schnell ein statistisches Diagrammsystem unter dem Vue-Framework. In modernen Webanwendungen sind statistische Diagramme ein wesentlicher Bestandteil. Als beliebtes Front-End-Framework bietet Vue.js viele praktische Tools und Komponenten, die uns beim schnellen Aufbau eines statistischen Diagrammsystems helfen können. In diesem Artikel wird erläutert, wie Sie mit dem Vue-Framework und einigen Plug-Ins ein einfaches statistisches Diagrammsystem erstellen. Zuerst müssen wir eine Vue.js-Entwicklungsumgebung vorbereiten, einschließlich der Installation von Vue-Scaffolding und einigen zugehörigen Plug-Ins. Führen Sie den folgenden Befehl in der Befehlszeile aus

Was ist ein Single-Sign-On-System? Wie implementiert man es mit NodeJS? Was ist ein Single-Sign-On-System? Wie implementiert man es mit NodeJS? Feb 24, 2023 pm 07:33 PM

Was ist ein Single-Sign-On-System? Wie implementiert man es mit NodeJS? Im folgenden Artikel erfahren Sie, wie Sie mit Node ein Single-Sign-On-System implementieren. Ich hoffe, dass er Ihnen weiterhilft!

Ausführlicher Vergleich von Express und Laravel: Wie wählt man das beste Framework aus? Ausführlicher Vergleich von Express und Laravel: Wie wählt man das beste Framework aus? Mar 09, 2024 pm 01:33 PM

Ausführlicher Vergleich von Express und Laravel: Wie wählt man das beste Framework aus? Bei der Auswahl eines für Ihr Projekt geeigneten Back-End-Frameworks sind Express und Laravel zweifellos zwei beliebte Optionen unter Entwicklern. Express ist ein leichtes Framework auf Basis von Node.js, während Laravel ein beliebtes Framework auf Basis von PHP ist. In diesem Artikel werden die Vor- und Nachteile dieser beiden Frameworks ausführlich verglichen und spezifische Codebeispiele bereitgestellt, um Entwicklern bei der Auswahl des Frameworks zu helfen, das ihren Anforderungen am besten entspricht. Leistung und SkalierbarkeitExpr

Tokenbasierte Authentifizierung mit Angular und Node Tokenbasierte Authentifizierung mit Angular und Node Sep 01, 2023 pm 02:01 PM

Die Authentifizierung ist einer der wichtigsten Teile jeder Webanwendung. In diesem Tutorial werden tokenbasierte Authentifizierungssysteme und ihre Unterschiede zu herkömmlichen Anmeldesystemen erläutert. Am Ende dieses Tutorials sehen Sie eine voll funktionsfähige Demo, die in Angular und Node.js geschrieben wurde. Traditionelle Authentifizierungssysteme Bevor wir zu tokenbasierten Authentifizierungssystemen übergehen, werfen wir einen Blick auf traditionelle Authentifizierungssysteme. Der Benutzer gibt seinen Benutzernamen und sein Passwort im Anmeldeformular ein und klickt auf „Anmelden“. Nachdem Sie die Anfrage gestellt haben, authentifizieren Sie den Benutzer im Backend, indem Sie die Datenbank abfragen. Wenn die Anfrage gültig ist, wird eine Sitzung mit den aus der Datenbank erhaltenen Benutzerinformationen erstellt und die Sitzungsinformationen werden im Antwortheader zurückgegeben, sodass die Sitzungs-ID im Browser gespeichert wird. Bietet Zugriff auf Anwendungen, die unterliegen

Was tun, wenn node server.js einen Fehler meldet? Was tun, wenn node server.js einen Fehler meldet? Dec 29, 2022 pm 04:19 PM

Der Fehler „node server.js“ liegt daran, dass der Pfad falsch ist: 1. Rufen Sie das cmd-Fenster auf. 2. Wechseln Sie zu „server.js“ unter dem Projektpfad. Befehl zur Lösung des Fehlerproblems.

See all articles