热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RequireJSshim导出的是什么?

如何解决《RequireJSshim导出的是什么?》经验,为你挑选了1个好方法。

我正在阅读Backbone Fundamentals,目前正在介绍如何使用RequireJS构建应用程序的部分.

根据我的理解,匀场背后的想法是,通常当您需要模块时,RequireJS也会计算出如何加载它们的依赖关系.但是当你试图加载一个非AMD模块时,这不起作用(我不知道为什么,但这是一个单独的问题).为了解决这个问题,你可以设置一个垫片来说"在Y之前加载X".

require.config({
  shim: {
    'Y': ['X']
  }
});

我看到你可以exports说,"把这个非AMD的东西放到一个全局变量而不是一个模块".

require.config({
  shim: {
    'Y': {
      exports: 'globalY'
    }
  }
});

嗯,那解决了什么问题?非AMD库的问题不仅仅是RequireJS无法找出依赖关系吗?



1> kryger..:

实际上需要解决"我不知道为什么"的部分来回答这个问题.匀场需要非AMD模块,并通过加载RequireJS非AMD模块不能正常工作正是因为RequireJS需要AMD模块.也就是说,它需要将模块包装在define包含依赖项列表和工厂方法的调用中(此处有更多详细信息)."标准",旧式库将它们的东西写入全局范围,写入任意命名的命名空间(在Backbone的情况下:) window.Backbone.从历史上看,开发人员会编写一个小的包装模块来将"旧"库转换为AMD,例如:

骨干-wrapper.js

define([], function() {
  return window.Backbone;
});

添加填充程序配置(在RequireJS 2.0中添加)允许在配置中以声明方式处理此问题.

Shimming 并不是"将这种非AMD的东西放入全局变量而不是模块".Shimming说"加载这个非AMD库并公开exports变量中指定的全局命名空间,就好像它是一个AMD模块".


它实际上是很好的解释中RequireJS的文档和其他一些SO问题:1,2.


推荐阅读
author-avatar
唯依爱时尚服饰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有