将JavaScript文件包含在另一个JavaScript文件中

时间:2014-01-17 15:42:46

标签: javascript jquery include

我正在使用两个JavaScript文件,我想将其中一个包含在另一个中。

validate.js:

function validateEmail(userEmail) {
    var email = userEmail;
    var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

    if (emailFilter.test(email)) {
    //alert('Please provide a valid email address');
        email.focus;
        return true;
    }
    else {
        return false;
    }
}

navigation.js

$(document).ready(function() {
    var imported = document.createElement('script');
    imported.src = 'lib/validation.js';
    document.head.appendChild(imported);

    console.log("DOCUMENT IS READY!");

    var viewsWrapper = $("#views-wrapper");
    var loginButton = $("#login-button");
    var registerButton = $("#register-button");

    // Login Link
    // TODO: Unclear if needed
    $("ul li.login").click(function() {
        $.get('/login', function(data) {
            viewsWrapper.html(data);
        });
    });

    $('#usernamefield').blur(function() {
        var sEmail = $('#usernamefield').val();
        if ($.trim(sEmail).length == 0) {
            alert('Please enter valid email address');
            e.preventDefault();
        }
        if (validateEmail(sEmail)) {
            alert('Email is valid');
        }
        else {
            alert('Invalid Email Address');
            e.preventDefault();
        }
    });
});

(还有更多不相关的代码)

我尝试使用此页here

中描述的解决方案

如上所示在navigate.js(评论区域)中,但这不起作用 我试图从navigation.js中调用位于validate.js中的validateEmail函数,但我似乎无法做到这一点。我见过的所有解决方案都没有帮助。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您不能以任何简单的方式包含另一个JS文件。但是您可以从使用它们的页面中包含这两者。由于您的validateEmail函数看起来是全局的,因此另一个函数只会引用它。

或者,您可以使用存在的众多模块加载器之一。我建议您保存以供日后使用,直到您可以解决这个问题。但像Require.js及其亲属这样的工具将允许一个模块指定其依赖于另一个模块并处理依赖项的加载。

或者如@Jason建议的那样,您还可以使用脚本组合器,它通常用于通过允许您使用多个文件进行开发而使用单个文件进行部署来加速网站。

但实际上,首先您需要处理基础知识,这需要了解如何在网页上使用脚本以及它们如何相互通信。

答案 1 :(得分:0)

我建议使用众多JavaScript库中的一个,例如YUI Compressor或Google Closure Compiler,将所有javascript文件合并到一个文件中。这些库也将负责缩小/压缩它们。

不要自己动手......