javascript - 在 ES6 中导入 ES5 库

标签 javascript webpack ecmascript-6 babeljs

<分区>

我正在尝试在 ES6 项目上使用用 ES5 ( rtree) 编写的库,但没有成功。

在我的 ES6 代码上我这样做:

 import PolygonLookup from '../../lib/rtree';
 ...
 this.rtree = new PolygonLookup(geojson);//does not work

这不起作用,但是,如果我删除导入,而是将标签上的 rtree 添加到我的 html,它就可以完美地工作。

 <script type="text/javascript" src="..\..\lib\rtree.js"></script>

 this.rtree = new PolygonLookup(geojson); //works

我试图通过 lebab 将上述库转换为 ES6,但它也不起作用。

最佳答案

ES5 库不会以 ES6 兼容的方式导出任何内容。这就是 PolygonLookup 未定义的原因。您可以在没有任何绑定(bind)的情况下导入库:

import '../../lib/rtree';

这样 PolygonLookup 将成为全局 PolygonLookup,就像您将 lib 包含在 script 标记中一样,IF 它已被添加为全局变量。并非所有图书馆都明确地这样做。否则你可以尝试 script-loader (仅限 Webpack):

import 'script-loader!../../lib/rtree';
or even
import PolygonLookup from 'script-loader!../../lib/rtree';

如果您选择的 bundler /加载器支持其他模块格式,并且库使用其中一种格式,那么您也可以使用常规的 ES6 导入。

关于javascript - 在 ES6 中导入 ES5 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784823/

相关文章:

c# - ASP.NET MVC 3 - 创建仅用于返回的动态对象

javascript - 如何访问应用程序内的 package.json 数据?

javascript - 将 Stylelint 与 Vue.js 集成

javascript - 不使用@语法来装饰ES6类方法?

JavaScript 在日期范围和返回正确格式之间循环

javascript - Vue.js - 如何将一个键值连接到另一个键的值

javascript - 使用 AJAX 删除项目而不刷新页面

javascript - Angular 对 Chrome 中的事件执行函数两次

javascript - NPM:字段 'browser' 不包含有效的别名配置

javascript - 美元符号后跟模板字符串中的方括号