Question

Mon application Web utilise allot de javascript, et dans le javascript, j'ai des messages que je rapporte à l'utilisateur.

Quel est le meilleur moyen d'extraire le texte de mon javascript et de le stocker en externe dans un autre fichier .js, et comment pourrais-je le référencer dans mon code js à l'avenir?

Des bonnes pratiques pour cela?

Était-ce utile?

La solution

Créer un littéral d'objet:

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

que vous pouvez ensuite référencer, comme suit:

if (error) alert(messages.error);


Cela fonctionne très bien si vous souhaitez implémenter plusieurs langues. Ce que je fais habituellement, c’est d’inclure un fichier côté serveur qui restitue un "message". objet en fonction de la langue sélectionnée dans la configuration de l'application ou en fonction de la culture de l'interface utilisateur (dans le cas d'ASP.NET).

Voici comment vous l'utiliseriez, en ligne:

<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>


Ce qui est bien avec l'utilisation d'un littéral d'objet, c'est que le code est plus détaillé. Au lieu d'utiliser un tableau, comme ceci: alert (messages [0]) , procédez comme suit: alert (messages.error) , qui est un peu plus explicatif.

Remarque secondaire: tous vos messages sont définis dans un seul objet, au lieu d’être définis par un groupe de variables, ce qui évite de polluer l’espace de nom global.


En JavaScript, vous pouvez modifier des objets au moment de l'exécution. Donc, si vous voulez ajouter plus de messages à l'objet, plus tard dans votre code, vous feriez simplement ceci:

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

Autres conseils

Je vois que les autres vous ont dit comment le stocker dans un fichier JS (comme vous l’avez demandé). Mais puis-je vous suggérer de le stocker dans un fichier XML à la place? C'est un peu plus facile à gérer (IMO).

Créez un fichier XML avec des entrées comme celle-ci:

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

Ensuite, vous pouvez facilement récupérer tout le texte dont vous avez besoin dans votre JS / jQuery habituel:

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();
        });
    }
});

Et pour invoquer du texte, c'est aussi simple que cela:

alert (text ['welcome_to_site']);

Et vous pouvez toujours le changer facilement dans le fichier XML: ajoutez du texte, supprimez du texte, modifiez du texte. C'est très simple. Cela aide également à séparer votre conception et vous ouvre la porte pour permettre à d’autres personnes d’éditer du texte, qui ne pourraient sinon pas le faire s’ils devaient trier un tas de JavaScript.

Une façon de procéder consiste à inclure dans votre page un js distinct qui pointe en fait sur un script côté serveur. Ce script peut alors faire écho aux chaînes dont vous avez besoin comme ceci:

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

Et dans votre page Web ont ceci:     

Nous faisons cela pour http://addons.mozilla.org ici: http://addons.mozilla.org/en-US/firefox/pages/js_constants.js

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top