我创建了一个多页面的 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。