如何解决用于 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
?
还有...
第 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 举报,一经查实,本站将立刻删除。