Ich habe mir express.js angeschaut , um herauszufinden, wie die benannten Routenparameter req.params
-Eigenschaften zugeordnet werden.
Für diejenigen, die es nicht wissen, können Sie in express.js Routen mit benannten Parametern definieren, sie optional machen, nur solche mit einem bestimmten Format (und mehr) zulassen:
%Vor% Ich erkannte, dass das Herz dieser Funktionalität eine Methode namens pathRegexp()
definiert in lib / utils.js . Die Methodendefinition ist wie folgt:
Der wichtige Teil ist die Regex in Zeile 7, /(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?(\*)?/g
, die die übereinstimmenden Teile des Pfadnamens auf diese Weise gruppiert:
Schrägstrich
das /
-Symbol
Format Ich weiß nicht, was der Zweck dieses hier ist, Erklärung benötigt.
Schlüssel
das Wort (zB \w+
) nach dem :
-Symbol
erfassen
ein Regex vor dem key
. Sollte in Klammern eingeschlossen sein (zB (.\d+)
)
optional
das Symbol% co_de% nach dem ?
Stern
das key
-Symbol
und der Callback-Handler erstellt eine Regex aus den obigen Gruppen.
Jetzt ist die Frage , was ist der Zweck von *
hier?
Mein Verständnis nach folgender Zeile:
%Vor%und die erwähnte Regex ist,
Wenn Sie ein Symbol% co_de% nach der Gruppe format
einfügen und keine Übereinstimmungsbedingung angeben (die Regex wird in Klammern nach .
eingeschlossen), stimmt die generierte Regex mit dem Rest von slash
überein Ruft ein key
oder path
Symbol auf.
Also, was ist der Sinn?
Ich frage das, weil:
Es ist für passende Dateierweiterungen und solche richtig.
Betrachte den Pfad '/path/:file.:ext'
und betrachte den Unterschied zwischen den Ausdrücken:
Im ersten Fall haben Sie am Ende params als
%Vor%Aber ohne die Formatüberprüfung enden Sie damit:
%Vor%Tags und Links javascript regex node.js express