我的网络应用程序使用了大量的javascript,在javascript中我有消息,我会向用户报告。

从我的javascript中提取文本并将其外部存储在另一个.js语言文件中的最佳方法是什么?我将如何在我的js代码中引用它?

这方面的最佳做法是什么?

有帮助吗?

解决方案

创建一个对象文字:

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

然后你可以参考,如下:

if (error) alert(messages.error);


如果您想要实现多种语言,这非常有用。我通常做的是包括一个服务器端文件,它会呈现出一条“消息”。根据在应用程序配置中选择的任何语言或根据UI文化(在ASP.NET的情况下)选择对象。

以下是您如何使用它,内联:

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


使用对象文字的好处是代码更详细。而不是使用像这样的数组: alert(messages [0])你这样做: alert(messages.error),这是一个更具说明性。

旁注:所有消息都在一个对象中定义,而不是由一堆变量定义,从而避免污染全局命名空间。 点击搜索结果 在JavaScript中,您可以在运行时修改对象。因此,如果您希望稍后在代码中添加更多消息,那么您只需执行此操作:

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

其他提示

我看到其他人告诉你如何将它存储在JS文件中(如你所知)。但我可以建议您将其存储在XML文件中吗?管理起来比较容易(IMO)。

创建一个XML文件,其条目如下:

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

然后,您可以轻松地获取常规JS / jQuery中所需的所有文本:

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

要调用一些文本,就像这样简单:

<代码>警报(文本[ 'welcome_to_site']);

您可以随时在XML文件中轻松更改它:添加文本,删除文本,编辑文本。这很简单。它还有助于分离您的设计并为您打开大门,允许其他人编辑文本,如果他们不得不对一堆JavaScript进行排序,则可能无法进行编辑。

一种方法是在页面中有一个单独的js包含实际指向服务器端脚本的内容。然后,此脚本可以回显出您需要的字符串,如下所示:

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

在您的网页上有这样的:     

我们这里为 http://addons.mozilla.org 执行此操作: http://addons.mozilla.org/en-US/firefox/pages/js_constants.js

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top