1

可以将多个 JavaScript 文件合并为一个,然后将生成的代码封装到一个自调用函数中,因此这些 JS 文件中的所有代码都变成:

;(function () { /* code form the JS files */ })();

这样就完全不会污染全局命名空间,现在可以在单独的 JS 文件中定义内部模块,这些模块可以跨 JS 文件访问。

除了使内部模块的调试不那么方便(因为无法浏览内部对象、从控制台手动调用它们的函数等)之外,这种方法是否有任何潜在的缺点?

或者,是否有更好的方法允许在可以跨 JS 文件访问的单独 JS 文件中定义内部模块?


以防万一,gulp 代码将 JavaScript 文件连接成一个,然后将生成的代码封装到一个自调用函数中:

var gulp = require("gulp");
var sourcemaps = require("gulp-sourcemaps");
var uglify = require('gulp-uglify');
var concat = require("gulp-concat");
var insert = require("gulp-insert");

gulp.task("default", function () {
    return gulp.src("js/app/*.js")
        .pipe(sourcemaps.init())
        .pipe(concat("app.js"))
        .pipe(insert.transform(function(contents, file) {
            return ';(function () {' + contents + '})();';
        }))
        .pipe(uglify())
        .pipe(sourcemaps.write("."))
        .pipe(gulp.dest("build/assets/js"));
});
4

0 回答 0