如何在Angular中模块化polyfill?

乔希·比姆(Josh Beam)

我想在我的AngularJS应用中使用各种填充/垫片。

例如,classList在IE9及以下版本中不受支持。

我尝试了两种在应用程序中定义polyfill的方法:

首先,只需将所有polyfill放在app.js页面的顶部,即可定义和配置所有其他模块。

其次,我已经尝试过了:

angular.module('polyfills',[]);
angular.module('polyfills')
    .config([function() {
        // all polyfills in here
    }]);

这两个选项都可以。但是,这两种选择对我来说似乎都有些奇怪。凭直觉,.config我感觉应该坚持配置诸如提供者,拦截器等之类的东西。似乎这可能是一个过去已经解决的问题,并且我觉得某种最佳实践已经实现了。结果。

有更好的方法吗?

密码迷

不要将您的polyfill放在一个有角度的模块中,这很奇怪,而不是您想要的。您想要的是让每个浏览器中的js实现看起来都一样,因此请在加载其他任何js资源之前加载您的polyfill。创建一个包含您的polyfill的js文件(如果您希望每个polyfill都包含在自己的文件中,请创建更多文件),并在脚本标记中加载该js文件,然后再放置其他任何js文件。您的polyfills也应该在IIFE的内部。

这是Array.from的示例polyfill的示例(出于演示目的,这是一个非常简单的polyfill):

array-from-polyfill.js

(function() {
  'use strict';
  Object.defineProperty(Array, 'from', {
    configurable: false,
    enumerable: false,
    value: function (object) {
        'use strict';
        return [].slice.call(object);
    }
    });
})();

然后,将以下标签放在index.html(或您称为顶层模板的任何文件)中的任何其他js文件之前是的,甚至在没有角度资源或引导资源之前。

<script src="path/to/array-from-polyfill.js"></script>

最后两个注意事项。首先,始终使用Object.defineProperty,并将“ enumerable”设置为false。除非您想要某种迭代对象属性的方法来拾取您的polyfill。这意味着您必须摆弄MDN的polyfill,但这很好。无论如何,您可能应该知道绕过defineProperty的方法。

其次,我建议您在每个浏览器中加载polyfill,即使该浏览器已经具有该功能。基本上,您执行的代码在任何地方都应该尽可能相同。在一个特定的浏览器中出现错误没有什么比这更令人烦恼的了,因为它正在(或者并非如此)使用您的polyfill。这不是一个普遍的真理,所以做适合您的事情。

不要忘记确保您的Polyfill也已加载到测试环境中,并定期检查是否可以停用Polyfill。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Angular中模块化polyfill?

来自分类Dev

如何在Node JS中模块化代码

来自分类Dev

如何在Shiny中模块化动态ggvis图表?

来自分类Dev

如何在模块化设计模式中嵌套功能?

来自分类Dev

如何在导出的函数中对导出模块化

来自分类Dev

如何在Django中模块化模板?

来自分类Dev

如何在PHP中模块化类方法?

来自分类Dev

如何在模块化设计模式中嵌套功能?

来自分类Dev

在Angular 2中模块化路由模块

来自分类Dev

如何在模块化星系图像仿真工具Galsim中设置随机种子

来自分类Dev

如何在模块化应用程序中处理通用类/接口?

来自分类Dev

如何在Sass中以模块化方式实现此粘性页脚?

来自分类Dev

如何在zsh中编写一个模块化的?

来自分类Dev

如何在模块化星系图像仿真工具Galsim中设置随机种子

来自分类Dev

如何在C#,asp.net中编写模块化设计?

来自分类Dev

如何在Symfony中使表单模块化?

来自分类Dev

如何在索引上使用模块化算术?

来自分类Dev

如何管理Angular js依赖关系和模块化?

来自分类Dev

如何使Javascript中的提取API模块化

来自分类Dev

如何在C#中的数据库中创建带有模块化可搜索字段的对象?

来自分类Dev

如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

来自分类Dev

Delphi 2010-模块化应用程序,如何在主机应用程序中获取类属性?

来自分类Dev

如何在嵌入在UINavigationController中的另一个Storyboard上以模块化方式呈现UIViewController?

来自分类Dev

如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

来自分类Dev

如何在 NetBeans 模块化项目中重命名模块?

来自分类Dev

如何模块化Powershell脚本

来自分类Dev

如何构建模块化应用

来自分类Dev

如何模块化角度代码?

来自分类Dev

如何构建模块化应用

Related 相关文章

  1. 1

    如何在Angular中模块化polyfill?

  2. 2

    如何在Node JS中模块化代码

  3. 3

    如何在Shiny中模块化动态ggvis图表?

  4. 4

    如何在模块化设计模式中嵌套功能?

  5. 5

    如何在导出的函数中对导出模块化

  6. 6

    如何在Django中模块化模板?

  7. 7

    如何在PHP中模块化类方法?

  8. 8

    如何在模块化设计模式中嵌套功能?

  9. 9

    在Angular 2中模块化路由模块

  10. 10

    如何在模块化星系图像仿真工具Galsim中设置随机种子

  11. 11

    如何在模块化应用程序中处理通用类/接口?

  12. 12

    如何在Sass中以模块化方式实现此粘性页脚?

  13. 13

    如何在zsh中编写一个模块化的?

  14. 14

    如何在模块化星系图像仿真工具Galsim中设置随机种子

  15. 15

    如何在C#,asp.net中编写模块化设计?

  16. 16

    如何在Symfony中使表单模块化?

  17. 17

    如何在索引上使用模块化算术?

  18. 18

    如何管理Angular js依赖关系和模块化?

  19. 19

    如何使Javascript中的提取API模块化

  20. 20

    如何在C#中的数据库中创建带有模块化可搜索字段的对象?

  21. 21

    如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

  22. 22

    Delphi 2010-模块化应用程序,如何在主机应用程序中获取类属性?

  23. 23

    如何在嵌入在UINavigationController中的另一个Storyboard上以模块化方式呈现UIViewController?

  24. 24

    如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

  25. 25

    如何在 NetBeans 模块化项目中重命名模块?

  26. 26

    如何模块化Powershell脚本

  27. 27

    如何构建模块化应用

  28. 28

    如何模块化角度代码?

  29. 29

    如何构建模块化应用

热门标签

归档