Frage

Meine Web-Anwendung verwendet zuzuteilen Javascript und in der JavaScript Ich habe Nachrichten, die ich an den Benutzer berichten.

Was ist der beste Weg, um den Text von meinem Javascript und speichern sie extern in einer anderen Js Sprachdatei zu extrahieren, und wie würde ich es in meinem JS-Code für die Zukunft verweisen?

Jede Best Practices für das?

War es hilfreich?

Lösung

Eine Objektliteral:

var messages = {
    welcome: "Welcome",
    goodbye: "Goodbye",
    error: "Something bad happend. Sowwy!"
};

, die Sie dann verweisen, etwa so:

if (error) alert(messages.error);


Dies funktioniert gut, wenn Sie mehrere Sprachen implementieren möchten. Was ich in der Regel tut, ist eine serverseitige Datei enthält, das eine „Meldungen“ Objekt macht aus nach welcher Sprache in der Konfiguration der App ausgewählt wird, oder nach der UI-Kultur (im Fall von ASP.NET).

Hier ist, wie Sie es verwenden würden, in-line:

<head>
    <!-- messages.aspx renders out the object literal -->
    <script type="text/javascript" src="messages.aspx"></script>

    <script type="text/javascript">

        /* when messages.aspx is included it provides you with an object literal
           as a global variable. The example below would alert "Something bad
           happend. Sowwy!" */

        if (error) alert(messages.error);

    </script>
</head>


Das Tolle an einem Objektliteral besteht darin, dass der Code ausführlicher ist. Statt eine Anordnung zu verwenden, wie folgt aus: alert(messages[0]) Sie dies tun:. alert(messages.error), die ein bisschen mehr erklärend

Auf einem Seite-Hinweis: alle Nachrichten sind in einem Objekt definiert, statt durch ein Bündel von Variablen definiert werden, wodurch die Vermeidung des globalen Namensraum zu verschmutzen.
In JavaScript können Sie Objekte zur Laufzeit ändern. Also, wenn Sie wollen mehr Nachrichten an das Objekt hinzufügen, später in Ihrem Code, würden Sie dies nur tun:

messages.newMessageAddedLaterOnInTheCode = "This is a new message";

Andere Tipps

Ich sehe die anderen haben gesagt, wie sie gespeichert wird in einer JS-Datei (wie Sie gefragt). Aber könnte ich vorschlagen, dass Sie es in einer XML-Datei zu speichern, statt? Es ist etwas einfacher zu verwalten (IMO).

Erstellen Sie eine XML-Datei mit Einträgen wie folgt aus:

<text id="welcome_to_site">Welcome to our site!</text>
<text id="come_back_soon">Come back soon!</text>

Dann können Sie ganz einfach den gesamten Text greifen Sie in Ihrem normalen JS / jQuery benötigen:

var text = new Object();
$.ajax({
    async: false,
    type: 'GET',
    url: 'text.xml',
    dataType: "xml",
    success: function(xml){
        $(xml).find('text').each(function(){
            text[$(this).attr('id')] = $(this).text();
        });
    }
});

Und einen Text zu berufen, es ist so einfach, wie folgt aus:

alert(text['welcome_to_site']);

Und Sie können immer es leicht in der XML-Datei ändern: Text hinzufügen, entfernen Sie Text, Text bearbeiten. Es ist sehr einfach. Es hilft auch, Ihr Design zu trennen und öffnet Türen für Sie, damit anderen Text bearbeiten, die sonst nicht in der Lage sein, wenn sie hatten durch ein Bündel von JavaScript zu sortieren.

Eine Möglichkeit, es zu tun ist, haben eine separate js in Ihrer Seite enthalten, die tatsächlich zeigt auf einen serverseitigen Skripts. Dieses Skript kann dann die Saiten echo Sie müssen wie folgt aus:

var STRINGS = {'greeting': "Hello", 'error': "Something went wrong"};

Und in Ihrer Website hat dies:     

Wir tun dies für http://addons.mozilla.org hier: http://addons.mozilla.org/en-US/firefox/pages/js_constants.js

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top