日期:2014-05-16  浏览次数:20343 次

在 RequireJS 之前预先装载某些代码块

接着上一篇文章:http://blog.csdn.net/joyhen/article/details/21166757

<script>var __funcList = []; var _run = function (aFunc) { __funcList.push(aFunc); }; var require = { urlArgs: 'v=2001.13' };</script>
页面源码中有很多的添加执行的js模块,如下:
<script>
_run( function() {
    require( ["wojilu.core.sitetop"], function( topnav ) {
        topnav.init('/layouts/topnav/nav', '/main/checklogin', '/register/register', '/common/resetpwd/stepone');
    });
});
</script>
<script>_run(function () { wojilu.ui.slider(); }); </script>
<script>
    _run(function () {
        require(['wojilu.app.content'], function (x) {
            x.mergeSection();
            x.bindSendButton('/content396/submit/post/index');
        });
    });
</script>
<script>
    _run(function () {
        require(['wojilu.core.base'], function (x) { x.customSkin().backTop(); });
    });
</script>
目的只有一个,就是将所有要执行的js模块推入到__funcList对象中,然后会在RequireJS的main.js中执行:

注意这一句:

<script data-main="http://static.wojilu.com/js/main" src="http://static.wojilu.com/js/lib/require-jquery-wojilu.js?v=2001.13"></script>
我们看看http://static.wojilu.com/js/main.js的js具体是什么:

require(["lib/bootstrap-dropdown"], function() { 
        
    $(function() {
        for( var i=0;i<__funcList.length;i++) {
             __funcList[i]();
        }
    }); 

});
而jquer库也被放在了和requirejs一起(当然,这里面作者另行封装了一些其它方法),可以打开这个里面看到:

http://static.wojilu.com/js/lib/require-jquery-wojilu.js?v=2001.13