Istnieje duża różnica między wykorzystaniem tych dwóch przykładów. Funkcje zarejestrowane pod numerem app.use
są ogólnymi funkcjami oprogramowania pośredniego i są nazywane stosownymi do ich położenia na stosie oprogramowania pośredniego, zazwyczaj wewnątrz funkcji app.configure
. Tego typu oprogramowanie pośredniczące jest zwykle umieszczane pod przedapp.route
, z wyjątkiem funkcji obsługi błędów.
Z drugiej strony app.all
jest funkcją routingu (zwykle nie nazywa middleware), która obejmuje wszystkie metody HTTP i jest wywoływana tylko wewnątrzapp.route
. Jeśli którakolwiek z twoich poprzednich funkcji routera pasuje do /some/path
i nie zadzwoniła pod numer oddzwonienia , app.all
nie zostanie wykonane, więc funkcje app.all
są zwykle na początku twojego bloku routingu.
Istnieje również trzeci typ oprogramowania pośredniego, wykorzystywany w funkcjach routingu, np.
app.get('/some/path', middleware1, middleware2, function(req, res, next) {});
typicaly który jest stosowany do ograniczenia dostępu i wykonać ogólne czynności związanych /some/path
trasy.
Do praktycznego zastosowania można użyć obu funkcji, ale należy zachować ostrożność w odniesieniu do różnicy w zachowaniu podczas korzystania z app.use
z /some/path
. W przeciwieństwie do app.get
, app.use
paskami /some/path
z trasy przed wywołaniem funkcji anonimowej.
Możesz znaleźć więcej w dokumentacji express.
Duplikat http://stackoverflow.com/questions/14125997/difference-between-app-all-and-app-use –