用于 es6 Promises 的 PouchDB polyfills:CommonJS、AMD、RequireJS、...?

问题描述

TL;DR 我的问题

致那些在旧浏览器上成功使用 PouchDB 和 polyfill es6(和 es5)的人:
你是怎么做到的?

使用了 Commonjs / AMD / RequireJS 的哪个实现(如果是这种方法)?

另外……你是在 index.html 文件中找到了几个 <script> 标签,还是全部一个

非常感谢


背景

我需要在我的网络应用程序中使用 PouchDB 浏览器数据库

PouchDB.com 上关于处理 Common Error 的建议是

您是否包含了 es6-promise shim library?并非每个浏览器都能正确实现 ES6 Promises。

推荐的“es6-promise shim 库”的 GitHub README 说

要填充全局环境(在 Node 中或通过 Commonjs 在浏览器中),请使用以下代码片段:
require('es6-promise').polyfill();
或者
require('es6-promise/auto');

注意:“...或者在浏览器中通过 Commonjs

因此,我得出结论,我需要 Commonjs 来提供 require 函数

发布到 es6-promise shim 库 GitHub 页面一个问题是
Look for AMD first,then CJS in the UMD #246 包括

...自 3.3.0 以来 es6-promise 版本的变化引入了一个新的 UMD,它首先检查 Commonjs env,而不像旧的 UMD 过去常常首先检查 AMD env。

这表明我可以使用(“更适合浏览器”)AMD。

阅读Relation between CommonJS,AMD and RequireJS?的最佳答案:

  • AMD 更适合浏览器,因为它支持模块依赖的异步加载。
  • RequireJS 是 AMD 的一个实现,同时也试图保持 Commonjs 的精神(主要是模块标识符)。

那么也许是RequireJS

还有...

Common.js -- A CommonJS preprocessor that builds you CommonJS style app into code the browser can use 中,它说:

第 3 步:将模块包含到您的应用中并使用它们

<script src="js/common.js"></script>
<script src="js/foo.js"></script>
<script src="js/bar.js"></script>
<script>
    var bar = require('bar');
    bar.doTheThing();
</script>

但是,this medium.com article 说:

如果没有像 Commonjs 这样的模块系统,依赖项必须加载到 HTML 文件头的 <script> 标签中,或者所有代码都必须放在一起,这对于文件加载来说非常慢且效率低下。

这些似乎有冲突。


注意

polyfilling es5似乎非常简单:
只需在 index.html 文件中包含 <script src="./es5-shim-master/es5-shim.min.js"></script>。浏览器没有抱怨。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...