0

我创建了一个多页面的 Web 应用程序,包括: - 单个 requirejs 配置文件,requestjsConfig.js - 一些库,如 jquery.js 等... - 页面 js,如 homePage.js - 表单事件绑定 js,如pageHeader.js - 常见的逻辑处理,如 shoppingCart.js

我尝试使用 r.js 来丑化我的脚本,并合并为 1 个 js 文件。一般来说,它可以工作,但有一个小问题。编译后,浏览器仍然会加载表单绑定js文件,事件它们仍然合并到页面js文件中。

需要JSConfig.js

requirejs.config({
    baseUrl: 'frontjs/lib',
    paths: {
        eventHandler: '../page/eventHandler',
        feature: '../feature'
    }
});

主页.js

requirejs(['../page/requestjsConfig'], function (requestjsConfig) {     
        //requirejs(['feature/page-header', 'feature/common', 'feature/index', 'feature/transport', 'feature/utils']);          
    requirejs(['eventHandler/pageHeader']);                 
});

pageHeader.js

define(function (require) { 
    var $ = require('jquery');
    require('jquery-cookie');
    require('jquery-storageapi');
    var commonString = require('feature/commonString');
    var shoppingCart = require('feature/shoppingCart');
    ...     
}

r.js 的 build.js 进行优化

appDir: '../ecomm',
    mainConfigFile: '../ecomm/frontjs/page/requestjsConfig.js',
    dir: '../ecomm-built',
    modules: [
        //First set up the common build layer.
        {
            //module names are relative to baseUrl
            name: '../page/requestjsConfig',
            //List common dependencies here. Only need to list
            //top level dependencies, "include" will find
            //nested dependencies.
            include: ['jquery',
                      'jquery.md5'
                     ]
            },
            {
            //module names are relative to baseUrl/paths config
            name: '../page/homePage',
            include: ['../page/eventHandler/pageHeader'],
            exclude: ['../page/requestjsConfig']
        },
{
            //module names are relative to baseUrl/paths config
            name: '../page/subCategory',
            include: ['../page/eventHandler/pageHeader'],
            exclude: ['../page/requestjsConfig']
        }
     ]
}

运行 node tools/r.js -o tools/build.js 后,访问首页时,还是需要 pageHeader.js。

4

1 回答 1

0

我成功了,谢谢大家,根本原因是路径。在 homePage.js 中,模块定义为

requirejs(['eventHandler/pageHeader']);                 

在 build.js 中,模块定义为

   include: ['../page/eventHandler/pageHeader'],
于 2016-04-13T12:59:19.100 回答