Javascript 如何导出浏览器中需要的浏览器系列化模块?

Javascript 如何导出浏览器中需要的浏览器系列化模块?,javascript,browserify,commonjs,Javascript,Browserify,Commonjs,我有几个js模块,我在gulp中与browserify捆绑在一起: gulp.task('build:js', ['clean:js'], function () { browserify({ debug: true, entries: paths.js.src }) .transform('babelify', { presets: ['es2015'] }) .bundle() .pipe(source('bundle.js')) .p

我有几个js模块,我在gulp中与browserify捆绑在一起:

gulp.task('build:js', ['clean:js'], function () {
  browserify({
    debug: true,
    entries: paths.js.src
  })
    .transform('babelify', { presets: ['es2015'] })
    .bundle()
    .pipe(source('bundle.js'))
    .pipe(buffer())
    .pipe(gulp.dest(paths.js.dist));
});
它输出一个bundle.js。然而,当像这样捆绑时,我不能在浏览器中要求单独的模块。我想这样做,因为我不想总是启动每个模块,有些模块是特定于页面的。相反,我希望能够使用var someModule=require'some-module';在包裹旁边的一页上

现在我在文档中找不到任何关于这方面的内容,因为它只记录了命令行选项,而没有JSAPI。显示了一个模块可以被需要并从gulp中公开,但这将公开我的整个包,而不是它所组成的模块

一个解决方案是将我的所有模块单独捆绑,排除依赖项,这样它们就不会在捆绑包之间重复,然后将其连接起来。但这似乎不是一个可行的解决方案,因为:

模块在解析依赖项时可能会遇到问题,因为所有内容都是单独绑定的,因此依赖项必须在浏览器中解析。我认为不理想,容易破损。 因为我使用了很多模块,所以这是非常劳动密集型的,每个模块都必须以gulp手动导出,依赖项被排除在外,并在我的模板中引用,但这并不排除共享依赖项。
那么我该如何解决这个问题呢?我怎么能要求在浏览器中单独编写js的捆绑包供客户端使用呢?

所以我最终做的是另一件事。我所问的有点违背了browserify的工作方式,尽管这是可能的。也许最终当HTTP2导入并可以在所有主流浏览器中使用时,这会更容易


现在,我只是为每个页面上运行的脚本提供了一个全局包,包括我所有的第三方库。然后,对于每个页面,我都有一个单独的入口点,其中包含它需要的本地模块。这是迄今为止最容易维护的解决方案。

所以我最后做的是其他事情。我所问的有点违背了browserify的工作方式,尽管这是可能的。也许最终当HTTP2导入并可以在所有主流浏览器中使用时,这会更容易


现在,我只是为每个页面上运行的脚本提供了一个全局包,包括我所有的第三方库。然后,对于每个页面,我都有一个单独的入口点,其中包含它需要的本地模块。这是迄今为止最易维护的解决方案。

您需要研究代码分块。不幸的是,在Webpack中要容易得多。您需要研究代码分块。不幸的是,在网页中要容易得多。