Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何专门编译OpenLayers 3的自定义源代码_Javascript_Node.js_Openlayers 3 - Fatal编程技术网

Javascript 如何专门编译OpenLayers 3的自定义源代码

Javascript 如何专门编译OpenLayers 3的自定义源代码,javascript,node.js,openlayers-3,Javascript,Node.js,Openlayers 3,我已经为OpenLayers 3创建了一个新的源代码,它的工作方式与类似,但具有修改的请求结构,因为远程源代码不是WMS 当与ol-debug.js一起使用或与OpenLayers库一起编译时,新的源代码可以正常工作 但我想要的是专门编译我的扩展,然后将其作为OpenLayers的扩展包含在我的项目中 比如说 <script src="ol.js"></script> <script src="imageSpecialSource.js"></scrip

我已经为OpenLayers 3创建了一个新的源代码,它的工作方式与类似,但具有修改的请求结构,因为远程源代码不是WMS

当与ol-debug.js一起使用或与OpenLayers库一起编译时,新的源代码可以正常工作

但我想要的是专门编译我的扩展,然后将其作为OpenLayers的扩展包含在我的项目中

比如说

<script src="ol.js"></script>
<script src="imageSpecialSource.js"></script>

那么,是否有可能专门编译一个自定义扩展名,然后将其作为一个单独的文件包含?

首先,要知道有一个更为更新的教程解释了如何编译OpenLayers 3以及您自己的库。请看这里:

编译过程需要一个
config.json
文件。以下是上述教程中的配置文件片段:

{
  "lib": [
    "node_modules/openlayers/src/**/*.js",
    "node_modules/openlayers/build/ol.ext/**/*.js",
    "src/**/*.js"
  ],
  "compile": {
    "closure_entry_point": "app",
    "externs": [
      "node_modules/openlayers/externs/bingmaps.js",
      "node_modules/openlayers/externs/closure-compiler.js",
      "node_modules/openlayers/externs/geojson.js",
      "node_modules/openlayers/externs/proj4js.js",
      "node_modules/openlayers/externs/tilejson.js",
      "node_modules/openlayers/externs/topojson.js"
    ],
    ...
看到了吗,在它里面,
lib
里面的东西被编译在一起,那就是OpenLayers和你自己的自定义代码

然后,查看
externs
部分。这些定义的外部文件允许代码在ol3中使用,而闭包编译器不会抱怨它不知道的类和方法

为了编译没有ol3的代码,您可以将其从
lib
部分删除,并在
externs
中添加
ol3 extern文件。在ol3中,该文件位于
build/ol externs.js
中。如果不存在,可以通过运行以下命令生成:

node tasks/generate-externs.js build/ol externs.js

你可以看看OL3谷歌地图库,它就是这样做的。其
dist/ol3gm.js
文件不包含OpenLayers:

查看名为
ol3gm.json的json配置文件:

. 您将看到,
ol externs.js
文件在其中使用。

谢谢您的回答。我遵循了链接,我可以看到他们最终可以得到一个包含在脚本标记中的dist文件,但我无法真正了解他们到底采取了什么步骤来结束它。如果能再详细一点,我们将不胜感激。很抱歉这么晚才回复。我再试了一次,但仍然无法创建一个成功的构建,即使包含了extern文件。如果我试图以我的扩展名作为唯一的源代码进行编译,它将由于依赖关系而失败,例如ol.Map等。如果我拥有完整的源代码,但排除了除扩展名以外的所有扩展名,则生成的文件将与我以前的类似,例如ol将抛出错误(未捕获的TypeError:a.cf不是函数)
{
  "lib": [
    "node_modules/openlayers/src/**/*.js",
    "node_modules/openlayers/build/ol.ext/**/*.js",
    "src/**/*.js"
  ],
  "compile": {
    "closure_entry_point": "app",
    "externs": [
      "node_modules/openlayers/externs/bingmaps.js",
      "node_modules/openlayers/externs/closure-compiler.js",
      "node_modules/openlayers/externs/geojson.js",
      "node_modules/openlayers/externs/proj4js.js",
      "node_modules/openlayers/externs/tilejson.js",
      "node_modules/openlayers/externs/topojson.js"
    ],
    ...