是否有单独的GitHub存储库用于OpenLayers 4的ES2015模块?

时间:2017-06-10 10:59:29

标签: openlayers

我知道你可以从NPM获得ol包裹。

OpenLayers 4的ES2015模块是从主openlayers代码库自动生成的,还是有单独的存储库?如果是这样,我想请它。

谢谢!

1 个答案:

答案 0 :(得分:0)

[更新] 请参阅https://github.com/openlayers/openlayers/issues/5623

我问自己同样的问题。 直到有一个工作版本,你可以使用旧的闭包编译器openlayers dist从他们的GitHub repo做同样的事情。 您需要更改UMD包装器以执行您想要的操作。查看tasks / build.js并应用以下补丁或自行更改。

@@ -15,19 +15,10 @@ var generateExports = require('./generate-exports');
 var log = closure.log;
 var root = path.join(__dirname, '..');

-var umdWrapper = ';(function (root, factory) {\n' +
-    '  if (typeof exports === "object") {\n' +
-    '    module.exports = factory();\n' +
-    '  } else if (typeof define === "function" && define.amd) {\n' +
-    '    define([], factory);\n' +
-    '  } else {\n' +
-    '    root.ol = factory();\n' +
-    '  }\n' +
-    '}(this, function () {\n' +
-    '  var OPENLAYERS = {};\n' +
-    '  %output%\n' +
-    '  return OPENLAYERS.ol;\n' +
-    '}));\n';
+var umdWrapper = 'var OPENLAYERS = {};\n' +
+    '%output%\n' +
+    '\n' +
+    'export default OPENLAYERS.ol;';

 var version;

更改后,您可以运行

make install
make build

生成的文件build / ol.js将包含您要导入的所有代码。您可以像这样使用它,然后:

<script type="module">
import ol from './ol.js'; // ← url to ol.js

// do classic ol stuff here :)
</script>

但除此之外我还没有看到有效的发布。

如果您确实希望采用更模块化的方法。您必须等到openlayers所需的所有模块都写为ES6模块或者完成ES6构建。您可以将openlayers源转换为通过URL导入,然后您可以执行以下操作:

import olMap from './ol/map.js';
import olTile from './ol/tile/tile.js'; // and so on...

我不确定OpenLayers最终会如何做到这一点,因为后来的方法可能会在您的服务器上造成数百个请求...不确定这是否是比捆绑的更好的解决方案。