繁体   English   中英

如何在浏览器中导出我的浏览器模块?

[英]How do I export my browserified modules for requiring in the browser?

我有几个js模块,我在浏览器中捆绑:gulp:

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,而不是它所组成的模块。

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

  1. 模块可能无法解析依赖关系,因为所有内容都是单独捆绑的,因此必须在浏览器中解析依赖关系。 我觉得不理想,容易破损。
  2. 这是非常耗费人力的,因为我使用了很多模块,每个模块都必须手动导出,在我的模板中排除和引用依赖项。 有一些方法可以自动化它 ,但这并不排除共享依赖项。

那么我该如何解决这个问题呢? 如何在浏览器中单独组成我的js组成的包,供客户端使用?

所以我最终做的是其他事情。 我所要求的是与浏览器工作的方式相反,即使它是可能的。 也许最终当HTTP2导入和js模块可以在所有主流浏览器中使用时,这将更容易。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM