Grundlegende Einführung
Beginnen wir mit einem wichtigen Konzept „Vorlage“. Im Großen und Ganzen ist eine Vorlage im Web eine Seite, auf der nach dem Ausfüllen von Daten eine Datei generiert werden kann. Streng genommen sollte die Template -Engine Dateien in einem bestimmten Format und den Daten zum Kompilieren und Generieren von Seiten verwenden. Vorlagen sind grob in Front-End-Vorlagen (wie EJs) und Back-End-Vorlagen (wie Freemarker) auf dem Browser und der Serverseite unterteilt.
Da einige Schüler vor Ort nicht viel über Node.js wussten, finden Sie hier einige der relevanten Kenntnisse von node.js. Ich werde nicht über die Definitionen von ereignisgesteuerten, asynchronen und so auf der offiziellen Website sprechen. Hier leihe ich ein Bild von Pu Lingshu aus, um die Struktur von Node zu erklären.Js. Wenn Sie Java verstehen, können Sie es als JS -Version von JVM verstehen. Zu den Browsern gehören im Allgemeinen Renderer- und JS -Skript -Engines. Wenn Sie als Beispiel den Chrome -Browser nehmen, verwenden sie den Webkit -Kernel -Renderer- und V8 -Skript -Engine, während Node.js die V8 -Engine verwendet. Kurz gesagt, es handelt sich um eine JS -laufende Umgebung, genau wie das F12 -Debugging -Tool des Browsers, aber Node.js hat keine DOM und BOM.
Dieses Bild beschreibt einige Informationen zu Node.js wie NPM, dem exzellenten Paketmanager, der CNODE -Community und Github, die den Wohlstand von Node.js bis zu einem gewissen Grad gefördert und technische Garantien bereitgestellt haben.
Große Unternehmen sind in der Regel die Wetterschaufel der Technologie. Zum Beispiel sind die Reaktionen von Google und Facebook jetzt sehr beliebt. Nur 3 große Unternehmen werden hier als Beispiele aufgeführt. Unnötig zu erwähnen, dass die Midway -Architektur von Taobao, Pu ling, der Pionier des häuslichen Knotens.js, aus Taobao stammt. Qunar hat auch einen technischen Rahmen entwickelt, der als "QTX" bezeichnet werden sollte. Das von Yueying geleitete 75 -Team hat ein Webserver -Framework auf der Basis von ES6/ES7 - ThinkJS gestartet. Zu dieser Zeit war unser technischer Direktor sehr optimistisch, aber da ich keine Zeit hatte, ES6 zu lernen und die Plug-Ins nicht reich genug waren, entschied ich mich immer noch für einen ausgereifteren Express.
Zurück zum Thema listet in dieser Tabelle drei Entwicklungsmethoden für die Trennung von Front- und Backenden aufgeführt, denen ich ausgesetzt war. Das erste sind die häufigsten Backend-Sprachvorlagen, die Java verwenden, die SEO-freundlich sind und die Cache-Nutzung besser können und die Browser-Rendering-Belastung verringern. Das größte Problem ist, dass der Kopplungsgrad der Vorlagendateien zu hoch ist. Niemand will das Problem lösen. Front-End-Mitarbeiter können die Daten nicht sehen, Back-End-Personal verstehen die Seite nicht und Vorlagendateien sind wie eine heiße Kartoffel. Die zweite ist die aktuelle Implementierungslösung des mobilen Terminals unseres Projekts, das den Framework von Angular verwendet (Winkelanweisungen können als Front-End-Vorlagen angesehen werden) und der Reverse-Proxy-Server von NGINX, um das Front-End- und Back-End vollständig zu entkoppeln und nur über AJAX mit Daten zu interagieren. Diese Lösung ist genau das Gegenteil der Vor- und Nachteile des ersteren. Die Leistung von Front-End-Vorlagen ist immer ein Problem, insbesondere auf mobilen Geräten und insbesondere auf Mobilgeräten mit niedrigem End. Das letzte ist das neue Projekt, das Node.js als Front-End-Server verwendet, das die Front-End-Verantwortlichkeiten vom Browser auf die Vorlagenebene unterteilt und alle oben genannten Probleme lösen, aber es gibt tatsächlich neue Probleme, und dieses Problem wird später analysiert.
Natürlich ist die Entwicklung der Vollstapel auch für kleine Projekte sehr geeignet. Bei der traditionellen JSP/PHP-Entwicklung sind die Kommunikationskosten der Vollstapelentwicklung niedriger, und Entwickler können das gesamte Funktionsmodul leicht verstehen und damit das Produktdesign besser wiederherstellen. Insbesondere die auf der JS-Sprache basierende Full-Stack-Entwicklung: Meteor und Mean Technology, die jetzt aufgetaucht sind, macht Front-End- und Back-End-Entwicklung direkt in einer Sprache behandelt. Bei MongoDB werden die Daten aus dem Browser zur Datenbank direkt verwendet, ohne zu entkommen, und es besteht keine Notwendigkeit, SQL zu schreiben, was die Entwicklungskosten erheblich senkt.
Einige Plugins, die zum Erstellen des Node.js -Servers diesmal verwendet werden. Es besteht keine Notwendigkeit, den berühmten Express, das Lightweight Web Server Framework, vorzustellen. Es ist auch ein Zufall, die Lenker -Template -Engine zu verwenden, da Express4 die Standardeinstellung ist, Lenker ist es wert, die Vorlagemotor der "schwachen Logik" zu sein. Es befürwortet die Reduzierung der Vorlagenlogik und versuche, nur Variablen und Paging zu verwenden. Basierend auf seinem Designkonzept habe ich nur zwei Helfer erweitert. Spezifischer Artikel: https://yalishizhude.github.io/2016/01/22/handlebars/superagent wird wegen Express4 noch verwendet. Da sein Testcode Supertest verwendet, basiert SuperTest auf Superagent, sodass Superagent verwendet wird, um Anfragen weiterzuleiten und zu initiieren. Superagent ist immer noch zu schwach und kann nicht für lange Verbindungen hergestellt werden. Ich empfehle immer noch das Anfrage -Plugin. Es gibt nichts, was er Ruhestand vorstellen kann. Der Front-End-Server und der Browser, der Front-End-Server und der Back-End-Server verwenden alle Spezifikationen. Grundsätzlich zeigt die URL -Ressourcen, fügt, löscht, ändern und prüft, und die spezifische Anforderungsmethode wird ausgedrückt, Statuscodes stellen Ergebnisse dar. Das ist zu schmerzhaft, also habe ich aufgegeben.
Entwicklungsprozess
Wenn diese Freigabe hauptsächlich darüber spricht, wie Node.js als Front-End-Server verwendet werden, um Front-End-Trennung zu erreichen, dann gibt es nichts zu sagen, schauen Sie sich den Artikel über Taobao ued einfach an. Das größte Problem bei der Trennung von Vorder- und Rücksenden besteht darin, dass die Kommunikationskosten, insbesondere die Definition und das Debuggen von Schnittstellen. In dem herkömmlichen Entwicklungsprozess in der obigen Abbildung wird die Definition der Schnittstelle in den Schnittstellenserver platziert, und dann werden die vorderen und hinteren Enden lokales Debuggen basierend auf den Schnittstellendokument -Betrugsdaten durchführen und dann gemeinsames Debugging durchführen. Dieser Link ist, wenn die Vorder- und Rückseite zu kämpfen beginnen. Dieser Parameter ist falsch und der Rückgabewert ist falsch. Kurz gesagt, es ist Zeitverschwendung. Lassen Sie uns als nächstes sehen, wie dieses Problem in unserem Projekt gelöst wird ~
Das Problem der Schnittstelle, die an der Vorder- und Rückseite ausfransen, gab es immer. Als Konservativer glaube ich an iterative Entwicklung. Der erste Schritt besteht also darin, einen Scheinserver hinzuzufügen. Die Magie dieses Servers besteht darin, dass er automatisch gefälschte Daten basierend auf dem Schnittstellendokument generiert, die Schnittstelle implementiert, nämlich die API, und die Studierenden von Front-End müssen die Daten nicht mehr zum Testen zu Tode schreiben. Wer hat auf keinen Fall gesagt, ich bin ein Front-End-Entwickler? Zunächst denke ich an meine eigenen Leute. Hehe ~ natürlich ist dies in gewissem Maße nur für die Front-End-Entwicklung von Vorteil. Es wird auch Probleme geben, wenn die Schnittstellen und Dokumente des Back-Ends inkonsistent und verbunden sind. was zu tun?
Ich habe versehentlich einen Artikel von Lao Ma auf dem Blog des Blade -Meisters gesehen, in dem speziell über die Trennung von Vorder- und Rücksenden gesprochen wird. Eines der wichtigen Konzepte sind Vertragstests, auch als bilaterale Tests bezeichnet. Das Kernkonzept besteht darin, das Problem des Fern -gemeinsamen Debuggens zu lösen. Überprüfen Sie die Parameter der vorderen und hinteren Enden und verlangen Sie, dass sich alle entsprechend dem Schnittstellendokument entwickeln. Inspiriert von ihm wurde die JSON-Schema-Regel hinzugefügt, um die Parameterüberprüfung von HTTP-Anforderungen zu erkennen, und wer die Regeln nicht befolgt, wird sie ändern.
Diese Redmine ist unser frühester Schnittstellen -Dokumentenmanager und hat keine andere Funktion als die Aufzeichnung und Anzeigefunktionen.
Swagger ist als der beliebteste Interface -Dokumentserver der Welt bekannt. Es hat eine schöne Schnittstelle und viele Plug-Ins. Es kann direkt Testcode für Back-End-Sprachen generieren. Ich habe es jedoch beim Bereitstellen nie verstanden, und das YAML -Format ist nicht so gut wie JSON, also habe ich es aufgegeben.
Dies ist der in unserem Projekt verwendete Dokumentserver und Mockserver, der Server basierend auf der mittleren Technologie und den grundlegenden Funktionen:
Unter Verwendung des MockJS-Plug-In können zufällige Daten dynamisch generiert werden, um Prüfsummen-Schnittstellentests für Schnittstellenparameter basierend auf JSON-Schema durchzuführen, und der Teststatus und die Schnittstellenantwortzeit können gespeichert werden. Der einfache JSON -Editor verfügt über eine Anmeldeverifizierungsfunktion, und das Debuggen der Schnittstelle kann nach der Anmeldung durchgeführt werden. Der Mock -Server reagiert auf die Anforderung gemäß dem API -Server und wird automatisch aktualisiert, wenn die Schnittstelle aktualisiert wird.
Einige Fragen
Node.js sind die Flügel der Front-End-Ingenieure, und sollte ich ein Engel oder Dämon mit Flügeln werden? Dies hängt davon ab, ob die durch das Gebrauch verursachten Probleme gelöst werden können.
Erstens wird die Arbeitsbelastung am vorderen Ende zweifellos zunehmen, aber die Kommunikationskosten werden reduziert. Die Serverstabilität von Node.js Single Thread ist in der Tat nicht gut genug, aber die Robustheit des Codes und das perfekte Protokoll kann effektiv vermieden werden. Rückruf. Es gibt zu viele Lösungen für dieses Problem, einschließlich Node.js 'Q/Async -Modul und ES6/ES7. node.js debugging. Obwohl ich IDE immer abgelehnt habe, muss ich zugeben, dass Webstorm in der Tat sehr bequem für das Debuggen ist. Der von mir verwendete Knoteninspektor ist ebenfalls ziemlich gut, die Schnittstelle ähnelt dem Chrome-Entwickler-Tool und sieht ziemlich vertraut aus.
Wenn Sie ein Backend -Programmierer sind, sollten Sie mit größerer Wahrscheinlichkeit von Node.js. Die Arbeit der Schnittstellenintegration wird zur Verarbeitung an den Front-End-Server übergeben, und der Kopplungsgrad mit dem Front-End wird stark reduziert und die Arbeitsbelastung und die Arbeitseffizienz werden verringert.
Es gibt zwei Punkte zu erleben
Obwohl die Verwendung von Node.js bestimmte Lernkosten hat, ist es für Front-End-Entwickler immer noch sehr freundlich. Wenn node.js im vorderen Ende verwendet wird, werden sowohl der technische Inhalt als auch die Workload verbessert, wodurch die Bedeutung des Auftrags verbessert wird. Nur wenn aktuelle Entwickler mehr Wert schaffen können, können höhere Gehälter verlangen. Es wird empfohlen, weniger Vorschläge zu machen und mehr Machbarkeitspläne bei der Arbeit zu erstellen und technische Vorforschungen durchzuführen, anstatt eine einfache HelloWorld zu schreiben.
Zusammenfassen
Einige Leute mögen sagen, dass die von Ihnen eingeführten Dinge so kompliziert ist und es zu problematisch ist, es zu verwenden. Es ist also besser, von Angesicht zu Angesicht zu kommunizieren. Für solche Zweifel kann ich nur ein Beispiel verwenden, das von Tencent Senior UI Engineer Yu Guo in "Selbstkultivation von Web-Full-Stack-Ingenieuren" erwähnt wird. Einmal, als die Front-End-Person, die für ein kleines Unternehmen im Telefon zuständig ist, ihn fragte, wie er den Code verwaltet, sagte die andere Partei, dass er FTP verwenden würde, um ihn direkt hochzuladen, und beschwerte sich, dass seine Untergebenen immer den falschen Code aktualisiert hätten. Er fragte ihn auch, warum er weder SVN noch Git benutzte, und er sagte, dass es einfacher sein würde, manuell zu aktualisieren. Die Wahrheit dieser Geschichte ist meine Antwort auf die Frage ~
PPT -Download -Adresse