基于ArcGIS API 4.12 for JS 的开发实践(二)——Visual Studio Code和NodeJs实现快捷部署

1、工具包的下载和安装

VS Code下载地址:https://code.visualstudio.com/

NodeJs下载地址:http://nodejs.cn/download/

都是傻瓜式安装,这里不多讲。VS Code是一个JavaScript的开发环境,可以调试JavaScript,可以根据一些框架开发酷炫的网页。如果你想在ArcGIS API 4.12 for JS基础上深入开发,VS Code是一个非常趁手的工具。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。都是很轻量的工具,不必有什么负担。

2、创建update-library.js文件

创建一个update-library.js文件,这个文件将使得我们只要把URL替换成自己部署的IIS地址即可,代码如下:

// --------------------------------------------------------------------
// update-library.js
//
// Helper script to replace the ArcGIS API for JavaScript library
// `[HOSTNAME_AND_PATH_TO_JSAPI]` text with `www.example.com/arcgis_js_api/library/4.12/`.
//
// Note: requires node version 7.10.0 and npm version 4.2.0 or higher.
// --------------------------------------------------------------------
let fs                       = require("fs"),
    path                     = require("path"),
    util                     = require("util"),
    // --------------------------------------------------------------------
    // hostname to replace js.arcgis.com in the library such as:
    // www.example.com
    // apiDirectory would be the virtual directory in the web server hosting
    // the ArcGIS API for JavaScript library
    // --------------------------------------------------------------------
    localHost                = "localhost",
    apiDirectory             = "arcgis_js_api/library/4.12/",
    // --------------------------------------------------------------------
    // path to the downloaded ArcGIS API for JavaScript library
    // download archive contents arcgis_js_v412_api\arcgis_js_api\4.12\
    // to IIS virtual directory C:\Inetpub\wwwroot\arcgis_js_api\library\4.12\
    // --------------------------------------------------------------------
    jsapiDownloadLocation    = path.join("C:", "inetpub", "wwwroot", "arcgis_js_api", "library", "4.12"),
    // --------------------------------------------------------------------
    // Regular expression to match the template text
    // [HOSTNAME_AND_PATH_TO_JSAPI] in
    // baseUrl:"https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo"
    // --------------------------------------------------------------------
    hostnameAndPathRegEx            = /\[HOSTNAME_AND_PATH_TO_JSAPI\]/i,
    // --------------------------------------------------------------------
    // base url for the locally hosted ArcGIS API for JavaScript such as:
    // www.example.com/arcgis_js_api/library/4.12/
    // --------------------------------------------------------------------
    jsapiURLBaseLocal        = util.format("%s/%s", localHost, apiDirectory),
    // --------------------------------------------------------------------
    // Dojo file containing the CDN link to ArcGIS API for JavaScript
    // C:\Inetpub\wwwroot\arcgis_js_api\library\4.12\dojo\dojo.js
    // --------------------------------------------------------------------
    jsapiDojoFile = path.join(jsapiDownloadLocation, "dojo", "dojo.js"),
    // --------------------------------------------------------------------
    // Dojo file containing the CDN link to ArcGIS API for JavaScript
    // C:\Inetpub\wwwroot\arcgis_js_api\library\4.12\init.js
    // --------------------------------------------------------------------
    jsapiInitFile = path.join(jsapiDownloadLocation, "init.js");

// --------------------------------------------------------------------
// 1) Read the ArcGIS API for JavaScript library files
// 2) Replace the script src attribute for the ArcGIS API for JavaScript CDN
// --------------------------------------------------------------------

// --------------------------------------------------------------------
// Read the dojo file contents from disk
// --------------------------------------------------------------------
console.log("library - reading %s", jsapiDojoFile);
let rawDojoContent = fs.readFileSync(jsapiDojoFile, "utf-8");
// --------------------------------------------------------------------
// Replace the script src attribute for the ArcGIS API for JavaScript CDN
// --------------------------------------------------------------------
console.log("library - replacing script tag for %s", jsapiDojoFile);
let updatedDojoContent = rawDojoContent.replace(hostnameAndPathRegEx, jsapiURLBaseLocal);
// --------------------------------------------------------------------
// Save the dojo file contents to disk
// --------------------------------------------------------------------
console.log("library - saving %s", jsapiDojoFile);
fs.writeFileSync(jsapiDojoFile, updatedDojoContent, "utf-8");

// --------------------------------------------------------------------
// Read the init file contents from disk
// --------------------------------------------------------------------
console.log("library - reading %s", jsapiInitFile);
let rawInitContent = fs.readFileSync(jsapiInitFile, "utf-8");
// --------------------------------------------------------------------
// Replace the script src attribute for the ArcGIS API for JavaScript CDN
// --------------------------------------------------------------------
console.log("library - replacing script tag for %s", jsapiInitFile);
let updatedInitContent = rawInitContent.replace(hostnameAndPathRegEx, jsapiURLBaseLocal);
// --------------------------------------------------------------------
// Save the init file contents to disk
// --------------------------------------------------------------------
console.log("library - saving %s", jsapiInitFile);
fs.writeFileSync(jsapiInitFile, updatedInitContent, "utf-8");

将上述代码拷贝到update-library.js并保存,这就是一个自动更新“dojo.js”、“init.js”这两个文件中[HOSTNAME_AND_PATH_TO_JSAPI]的小脚本。如果你把程序部署到另外的机器上,或者更换了IP地址,则你只要把下图红框中的值,换成新的IP地址即可。

更换完毕后,需要利用VS Code里面的终端命令行,运行命令:node update-library.js,脚本将自动替换C:\inetpub\wwwroot\arcgis_js_api\library\4.12目录下“dojo.js”、“init.js”这两个文件中[HOSTNAME_AND_PATH_TO_JSAPI]的值。这里需要注意的是,替换后的URL是以HTTPS方式链接的,如果你不想以这种方式,要么修改update-library.js里的代码,实现把“dojo.js”、“init.js”这两个文件中的HTTPS替换为HTTP,要么干脆把"https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo"这个字符串改为:[HOSTNAME_AND_PATH_TO_JSAPI]dojo这种形式,同时把node update-library.js中“localhost”值改为“http://localhost”,这样就可以避免采用HTTPS方式链接。麻烦就在于,你还是需要修改“dojo.js”、“init.js”这两个文件。

在VS Code里面的终端中输入命令之后就可以了,不放心的话,就把“dojo.js”、“init.js”这两个文件重新拖到VS Code中查看是否替换成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值