如何使用RequireJS检查适当的页面并相应地加载脚本

如何使用RequireJS检查适当的页面并相应地加载脚本,requirejs,Requirejs,在我的网站中,我有很多JavaScript文件,所有这些文件都有不同的用途,但是登录页面只需要jquery和loginValidate文件。当我附加我的main.js时,假设通过检查条件只加载这两个文件。怎么做 我的配置文件: requirejs.config({ baseUrl:"scripts", paths:{ //libraries jquery :"lib/jquery-1.9.0.min", jquer

在我的网站中,我有很多JavaScript文件,所有这些文件都有不同的用途,但是登录页面只需要
jquery
loginValidate
文件。当我附加我的
main.js
时,假设通过检查条件只加载这两个文件。怎么做

我的配置文件:

requirejs.config({
    baseUrl:"scripts",
    paths:{
        //libraries
        jquery          :"lib/jquery-1.9.0.min",
        jqueryUI        :"lib/jquery-ui-1.9.2.custom.min",
        underScore      :"lib/underscore-min",
        backBone        :"lib/backbone-min",
        //scripts
        appInit         :"js/tasklist",
        loginValidate   :"js/loginValidate"
    },
    shim:{
        "underScore":{
            exports: "_"
        },
        "backBone":{
            exports:"Backbone",
            deps:["underScore"]
        },
        "appInit" : {
            deps:["jquery","jqueryUI","underScore","backBone"]
        },
        "jqueryUI":{
            deps:["jquery"]
        },
        "loginValidate":{
            deps:['jquery']
        }
    }
});
仅在登录页面上需要:

 require(["jquery","loginValidate"], function($,validate){
        how can i call the loginValidate function?
    });
loginValidate
功能:

define(function(){

    var tasklistHandler = function (params) {
       //params take care.. to validate
    };

        $(function(){ // calling internally the function
            var paramsLoginForm = {
                loginForm : $('#tlLoginForm')
            }
        tasklistHandler(paramsLoginForm);
    });

    })
require(["jquery","loginValidate"], function($, validate){
    var paramsLoginForm = {
        loginForm : $('#tlLoginForm')
    }
    // \|/ that is what is returned by `define`'s callback function.
    validate(paramsLoginForm);
});

这是正确的方法吗?我也在使用Backbone.js来使用其他页面;我如何处理这些页面

您遇到的问题是“factory”函数(在最后一个代码段中传递给define调用的回调函数)中缺少“return”

相反,你需要有这样的东西:

define(function(){
    return function (params) {
       //params take care.. to validate
    };
})
require
调用中,您可以使用运行工厂函数返回给您的函数:

define(function(){

    var tasklistHandler = function (params) {
       //params take care.. to validate
    };

        $(function(){ // calling internally the function
            var paramsLoginForm = {
                loginForm : $('#tlLoginForm')
            }
        tasklistHandler(paramsLoginForm);
    });

    })
require(["jquery","loginValidate"], function($, validate){
    var paramsLoginForm = {
        loginForm : $('#tlLoginForm')
    }
    // \|/ that is what is returned by `define`'s callback function.
    validate(paramsLoginForm);
});

如果您想为不同的页面加载不同的模块,那么这个答案可能会有所帮助-