如何导出浏览过的模块以便在浏览器中进行浏览?

我有几个js模块,我将它们与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 。 但是,像这样捆绑时,我require浏览器中的单个模块。 我希望这样做,因为我不希望始终启动每个模块(有些是页面特定的)。 而不是我希望能够使用var someModule = require('some-module'); 在捆绑的页面上。

现在我无法在文档中找到任何关于此的信息,因为它只记录命令行选项(而不是js api)。 这个答案显示了一个模块可以被需要并从gulp暴露出来,但是这会暴露我的整个bundle,而不是它所组成的模块。

解决方案是将所有模块分开捆绑,排除依赖关系(因此它们不会在捆绑包中重复),然后将它们连接起来。 但是这并不是一个可行的解决方案,因为:

  • 这些模块可能在解决依赖问题时遇到困难,因为所有东西都是单独捆绑在一起的,因此必须在浏览器中解析依赖关系。 我认为不理想,容易发生破损。
  • 由于我使用了很多模块,所以这非常耗费人力,每个模块都必须手动导出,排除依赖关系并在我的模板中引用。 有很多方法可以使它自动化,但这并不排除共享依赖关系。
  • 那么我该如何解决这个问题? 我如何要求我的js在浏览器中单独编写的包,供客户端使用?


    所以我最终做的是别的。 尽管有可能,但我所要求的方式与浏览工作的方式背道而驰。 也许最终当HTTP2导入和js模块可以在所有主流浏览器中使用时,这会更容易。

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

    链接地址: http://www.djcxy.com/p/32897.html

    上一篇: How do I export my browserified modules for requiring in the browser?

    下一篇: How to use my own version of jQuery with browserified modules