2016-04-15 14 views
0

Ich bin neu bei node.js und Express.Konstanten Middleware für Benutzer gerichtete Strings

Ich baue eine app, die ejs verwendet, und ich möchte eine constants Datei für den Benutzer gerichtete Strings haben so in den .ejs Dateien I

<%= constants.WELCOME %> anzuzeigen eine Begrüßungsnachricht verwenden können.

Ich glaube, ich Einheimischen in meiner app.js Datei als solche definieren:

app.locals.WELCOME = "Hi and welcome to my app";

aber das wird umständlich schnell.

Ich möchte eine constants.js Datei haben:

module.exports = { 
    WELCOME: 'Hi and welcome to my app", 
    ENTER_USERNAME: "Please enter your username", 
    etc. 
} 

aber ich bin nicht sicher, wie eine Middleware-Funktion app.use(<?>) zu definieren, die mir meine Konstanten von überall aus zugreifen können.

  1. Überlege ich das richtig oder gibt es einen besseren Weg zu implementieren?

  2. Wie kann die Konstanten-Datei eingerichtet und als Middleware verwendet werden? Würde das überhaupt als Middleware gelten?

Antwort

1

Sie benötigen keine Middleware, es sei denn, etwas ist spezifisch für die Anfrage oder Antwort (z. B. wenn Sie internationalisieren möchten, wie es von @ zero298 vorgeschlagen wird). Wenn Sie nur eine Datei von Konstanten zur Verfügung möchten, können Sie einfach tun:

app.locals = require('./path/to/constants.js'); 

und dann definieren constants.js die Art und Weise Sie gefragt.

Wenn Sie wirklich eine Middleware wollen, die Signatur:

module.exports = function(req,res,next){ 
    // however you want to manipulate the req or res 
    return next(); 
} 

und dann:

app.use(yourMiddleware); 
+0

Das hat den Trick gemacht. Jetzt kann ich auf die Konstanten wie '<%= HI %> 'zugreifen. Danke für die Middleware-Signatur, ich bin mir sicher, dass es bald nützlich sein wird. – MayNotBe

1

Ich würde vorschlagen, etwas wie i18n verwenden. Es wird hauptsächlich für die Internationalisierung von Sprachen in einer Anwendung verwendet, hat aber den zusätzlichen Vorteil, dass String-Konstanten zentralisiert werden. Es spielt auch gut oder hat Bindungen für viele populäre JS-Frameworks.

+0

Es dauert immer noch magische Strings als Eingabe in die __ Funktion, die ich denke, ist das, was die OP versucht zu vermeiden. – Paul

+0

@Paul Vielleicht irre ich mich, aber der Punkt, den ich hauptsächlich ansprach, war "das erlaubt mir, von überall auf meine Konstanten zuzugreifen." – zero298

+0

Das ist fair, ich schätze, wir werden sehen, was er sagt. Mein Gedanke war, dass die API für i18ln immer noch eine Zeichenkette benötigt, um auf den Ausgabewert zuzugreifen, so dass in diesem Fall einfach eine andere Konstante erstellt wird. Es wäre zwar eine kürzere Konstante und natürlich in mehrsprachigen Szenarien von Vorteil, aber es ging nicht um das, was ich seiner Hauptsorge nachgesehen hatte. Aber wie ich schon sagte, wir werden sehen. i18ln ist immer noch wichtig und ein guter Vorschlag. – Paul

Verwandte Themen