示例应用程序¶
本节给出了基于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文件 hogan 和 query-string 目录。首先,您需要安装查询字符串。
npm install query-string
那你就复制 query-string.js 和 hogan-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 ,您设置 url 和 delay 到中定义的值 first.js 在第35行。从第10行到第40行,定义一个简单的 initialize 函数,它将调用 getCapabilities (第12至18行) describeProcess (从第20行到第26行)和 execute (从第28行到第39行)方法。对于每一个,都定义一个回调函数,该函数只在浏览器控制台中显示结果数据。