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

时间:2013-02-05 06:31:22

标签: requirejs

在我的网站上,我有大量JavaScript文件,所有这些文件都有不同的用途,但登录页面只需要jqueryloginValidate个文件。当我附加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);
    });

    })

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

1 个答案:

答案 0 :(得分:0)

您遇到的问题是“工厂”功能中没有“返回”(您在最后一个片段中传递给定义调用的回调函数)。

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

define(function(){
    return function (params) {
       //params take care.. to validate
    };
})

在您使用的require调用中,运行由工厂函数返回给您的函数:

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