示例应用程序

本节给出了基于Zoo客户端的JavaScript应用程序的详细示例。

备注

对于这个示例应用程序,首先设置 /zoo-client-demo 可从您的Web服务器访问目录 http://localhost/zoo-client-demo .

必须在中创建以下子目录 /zoo-client-demo 目录:

assets
assets/js
assets/js/lib
assets/js/lib/hogan
assets/js/lib/jquery
assets/js/lib/query-string
assets/js/lib/xml2json
assets/js/lib/zoo
assets/tpl

您需要复制节点模块中的javascript文件 hoganquery-string 目录。首先,您需要安装查询字符串。

npm install query-string

那你就复制 query-string.jshogan-3.0.2.js 您的 zoo-client-demo Web目录。这些文件位于 ~/node_modules 目录。

对于其他库,您需要从它们的官方网站下载它们,并将它们解压缩到相应的目录中。

从Web应用程序加载模块

在使用Zoo客户机之前,首先必须包含网页中的javascript文件。通过使用RequireJS,HTML页面中只需要一行就可以同时包含所有内容。此行将如下所示:

<script data-main="assets/js/first" src="assets/js/lib/require.js"></script>

在这个例子中,我们假设您已经创建了 first.js 文件中 assets/js 包含主应用程序代码的目录。首先,在这里定义所需的JavaScript库和可能的配置,然后可以添加任何相关的代码。

 1requirejs.config({
 2    baseUrl: 'assets/js',
 3    paths: {
 4        jquery: 'lib/jquery/jquery-1.11.0.min',
 5        hogan: 'lib/hogan/hogan-3.0.2',
 6        xml2json: 'lib/xml2json/xml2json.min',
 7        queryString: 'lib/query-string/query-string',
 8        wpsPayloads: 'lib/zoo/payloads',
 9        wpsPayload: 'lib/zoo/wps-payload',
10        utils: 'lib/zoo/utils',
11        zoo: 'lib/zoo/zoo',
12        domReady: 'lib/domReady',
13        app: 'first-app',
14    },
15    shim: {
16        wpsPayloads: {
17            deps: ['hogan'],
18        },
19        wpsPayload: {
20            deps: ['wpsPayloads'],
21            exports: 'wpsPayload',
22        },
23        hogan: {
24            exports: 'Hogan',
25        },
26        xml2json: {
27          exports: "X2JS",
28        },
29        queryString: {
30            exports: 'queryString',
31        },
32    },
33});
34
35requirejs.config({
36    config: {
37        app: {
38            url: '/cgi-bin/zoo_loader.cgi',
39            delay: 2000,
40        }
41    }
42});
43
44require(['domReady', 'app'], function(domReady, app) {
45    domReady(function() {
46        app.initialize();
47    });
48});

在第2行中,定义文件在Web服务器上的URL,位于 assets/js .从第3行到第14行,定义要加载的javascript文件。从第15行到第21行,配置依赖项和导出的符号。从第35行到第42行,配置主应用程序。

在这个应用程序中,我们使用 domReady 调用的模块 initialize 在中定义的函数 app 模块,在 first-app.js 文件定义见第13行。

 1define([
 2    'module','zoo','wpsPayload'
 3], function(module, ZooProcess, wpsPayload) {
 4
 5    var myZooObject = new ZooProcess({
 6        url: module.config().url,
 7        delay: module.config().delay,
 8    });
 9
10    var initialize = function() {
11        self = this;
12        myZooObject.getCapabilities({
13           type: 'POST',
14             success: function(data){
15                     console.log(data);
16            }
17        });
18
19        myZooObject.describeProcess({
20            type: 'POST',
21            identifier: "all",
22            success: function(data){
23                console.log(data);
24            }
25        });
26
27       myZooObject.execute({
28           identifier: "Buffer",
29           dataInputs: [{"identifier":"InputPolygon","href":"XXX","mimeType":"text/xml"}],
30           dataOutputs: [{"identifier":"Result","mimeType":"application/json","type":"raw"}],
31           type: 'POST',
32           success: function(data) {
33                console.log(data);
34           },
35           error: function(data){
36                console.log(data);
37           }
38        });
39    }
40
41    // Return public methods
42    return {
43        initialize: initialize
44    };
45
46});

在第5行,您创建了一个“全局” ZooProcess 名为的实例 myZooObject ,您设置 urldelay 到中定义的值 first.js 在第35行。从第10行到第40行,定义一个简单的 initialize 函数,它将调用 getCapabilities (第12至18行) describeProcess (从第20行到第26行)和 execute (从第28行到第39行)方法。对于每一个,都定义一个回调函数,该函数只在浏览器控制台中显示结果数据。