问题描述
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?的最佳答案:
那么也许是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 (将#修改为@)