项目JS
脚本是使用 require.js
来组织前端
在依赖没有打包以前,加载是这样shell
请求太多,一个有洁癖的人确定是受不了的,故需求就产生了,打包 require.js
模块代码依赖gulp
我使用 gulp
做为前端任务管理器,使用 amd-optimize
来打包require.js
模块依赖 有人说此插件下载量过低,不敢用,我也就呵呵了,工具是用来解决问题的,不是给人看的,实在不行,查看源代码本身造个轮子也不错
函数
我是用上图中的 test.js 做为打包入口文件工具
require(["require-config"], function() { require([ 'xxxxxxx1', 'xxxxxxx2', 'xxxxxxx3', 'xxxxxxx4', ]); });
var concatFile = require('gulp-concat') , uglifyJS = require('gulp-uglify') , shell = require('gulp-shell') , amdOptimize = require('amd-optimize'); gulp.task('bundle', function () { return gulp.src('./js/**/*.js') .pipe(amdOptimize('test', { configFile: './js/require-config.js', findNestedDependencies: true, include: false })) .pipe(concatFile('test.js')) // .pipe(uglifyJS('test.js')) .pipe(gulp.dest('./jsbuild/')); });
运行任务以后,文件已经打包指定目录
注意: 任务函数中我没有压缩,用意等下解释
测试
debug
环境下加载了 require-config.js
production
环境使用的是打包后的模块文件,即 ./jsbuild
中的 test.js
没有加载 require-config.js
,至于缘由:由于模块依赖已经打包到一个文件中,已经没有必要加载 require-config.js
可是生产环境测试发现:
发现仍是有不少请求发生,也就是说打包没有起到做用ui
查看生成的 ./jsbuild/test.js
文件,直接查看最后几行代码 就会发现spa
发现打包后的文件中包含了 require-config.js
的内容,在插件的配置选项中没有发现去除包含 require.js
配置文件的选项 【若是你发现了,请分享下,万分感谢
】插件
不得已采用 shell
处理,修改后的任务函数以下debug
gulp.task('isport:desk', function() { gulp.src('./js/**/*.js') .pipe(amdOptimize('test', { configFile: './js/require-config.js', findNestedDependencies: true, include: false })) .pipe(concatFile('test.js')) // .pipe(uglifyJS()) .pipe(gulp.dest('./jsbuild/')) .pipe(shell([ "sed '/require.config({/, $d' ./jsbuild/test.js > ./jsbuild/test-mini.js", "rm ./jsbuild/test.js"])); return gulp.src('./jsbuild/test-mini.js') .pipe(uglifyJS()) .pipe(gulp.dest('./jsmini')); });
运行任务后,在debug tools
中查看结果
经过发现,干净了,心情舒畅了
实话说这种方法打包并非很完美,至于完美的方法一直在不断的探索中