首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捆绑依赖外部库的UMD模块

捆绑依赖外部库的UMD模块
EN

Stack Overflow用户
提问于 2015-04-08 20:16:22
回答 1查看 533关注 0票数 2

我正在实现一个应该在NodeJS和浏览器(AMD/NodeJS)中工作的模块。

它的简化版本如下所示:

代码语言:javascript
复制
var Backbone = require('backbone');

module.exports = Backbone.Model.extend({...});

但我不知道如何使它对所有的环境保护者都有效。

  • 如果我使用全局主干(没有require),它将不能在NodeJS env中工作。
  • 如果我使用请求并从包中排除主干(使用--exclude backbone) -它将不工作在浏览器非AMD(错误:找不到模块backbone)

是否可以生成UMD模块,该模块将:

  • 在浏览器中使用require('backbone') / NodeJS env
  • 浏览器中的window.Backbone (非AMD)?
EN

回答 1

Stack Overflow用户

发布于 2015-09-25 05:38:06

umd软件包为jQuery插件提供了一种在非AMD、AMD或CommonJS环境中工作的模式。示例是jquery,但您可以将其修改为您自己的命名空间模块,而不是jquery。

https://github.com/umdjs/umd/blob/master/jqueryPluginCommonjs.js

我过去处理这个问题的一种方法是使用require('namespace')为插件构建独立的包,但是使用一个遵循上面链接的模式的存根来代替真正的模块。

代码语言:javascript
复制
bundle
  .require('./namespace-stub', {expose: 'namespace'})
  .require('plugin', {entry: true});

其中,namespace-stub.js是一个遵循上面链接的模式的小模块,但是它不使用命名空间调用函数(取自AMD、CommonJS或globals),它只需导出它。

换句话说,通过替换一个模块来构建插件的独立包,而主库包实际上只是查找和发现真正的库,不管它在哪里都是可用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29524513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档