var continuation = require('../continuation');
var http = require("http");
var fs = require('fs');
var url = require('url');
var ps = require("path");
//var request = require("request");
function main_entry() {
var $baseurl = "http://directwebremoting.org/dwr/javadoc/";
var $basepath = "E:\\dwrdoc\\";
var $lefttopurl = "http://directwebremoting.org/dwr/javadoc/overview-frame.html";
var getLocal = function(str) {
str = str.replace($baseurl , "");
str = str.replace(/^\// , "");
if(/^http\:/.test(str)) {
return $basepath;
}
var local = ps.resolve($basepath , str);
var dirname = ps.dirname(local);
console.log(local + "," + dirname);
mkdir(dirname);
return local;
};
var mkdir = function(str) {
var arr = str.split(/\\/g);
var step = "";
while(arr.length) {
var shift = arr.shift();
step += shift + "\\";
if(!fs.existsSync(step)) {
fs.mkdirSync(step , 0777);
}
}
};
var getLinks = function(str , $base) {
$base = $base || $baseurl;
var reg = /<a.*?href="(.+?)".*?>.*?<\/a>/gi , result;
var list = [];
while((result = reg.exec(str)) != null) {
var location = url.resolve($base , result[1]).replace(/\?.*$/ , "");
if(!/#.*$/.test(location)) {
list.push(location);
}
}
var reg = /<frame.*?src="(.+?)".*?>/gi;
while((result = reg.exec(str)) != null) {
var location = url.resolve($base , result[1]).replace(/\?.*$/ , "");
if(!/^#/.test(location)) {
list.push(location);
}
}
/*
var reg = /<img.*?src="(.+?)".*?>/gi;
while((result = reg.exec(str)) != null) {
var location = url.resolve($base , result[1]).replace(/\?.*$/ , "");
var local = getLocal(location);
console.log(location + "............");
console.log(local + "...............");
http.request(location).pipe(fs.createWriteStream(local));
}
*/
return list;
};
var $httpget = function(url , next) {
//console.log('正在处理 ' + url);
if(url.indexOf("mailto:") == 0) {
return "";
}
var result = [];
http.get(url , cont(res));
res.on("data" , function(data) {
result.push(data.toString());
});
res.on("end" , cont(callback));
next(null , result.join(''));
};
$indexpath = $basepath + "index.html";
if(fs.existsSync($indexpath)) {
return;
}
$httpget($baseurl , obtain(result));
fs.writeFileSync($indexpath , result , "utf-8");
var listO = getLinks(result);
listO.forEach(function(item) {
var localPathO = getLocal(item);
if(fs.existsSync(localPathO)) {
return;
}
$httpget(item , obtain(resultO));
fs.writeFileSync(localPathO , resultO , "utf-8");
});
$httpget($lefttopurl , obtain(result1));
var list1 = getLinks(result1);
list1.forEach(function(item) {
var localPath = getLocal(item);
if(fs.existsSync(localPath)) {
return;
}
$httpget(item , obtain(result1));
fs.writeFileSync(localPath , result1 , "utf-8");
var $basedir = url.resolve(item , "./");
var list2 = getLinks(result1 , $basedir);
list2.forEach(function(item1) {
var localPath1 = getLocal(item1);
if(fs.existsSync(localPath1)) {
return;
}
$httpget(item1 , obtain(result2));
fs.writeFileSync(localPath1 , result2 , 'utf-8');
return;
/*
var list3 = getLinks(result2 , $basedir);
list3.forEach(function(item2) {
var localPath2 = getLocal(item2);
if(fs.existsSync(localPath2)) {
return;
}
$httpget(item2 , obtain(result3));
fs.writeFileSync(localPath2 , result3 , 'utf-8');
});
*/
});
});
};
var code = main_entry.toString();
var compiledCode = continuation.compile(code);
eval(compiledCode);
main_entry();
分享到:
相关推荐
【Angular2-NodeJs: Angular2与Node.js的结合应用】 Angular2,是Google推出的下一代前端框架,它在AngularJS的基础上进行了全面的升级和优化,提供了更好的性能、更清晰的结构以及更强大的功能。而Node.js则是一个...
运行在: /swagger/api-docs 健康终点: /health 微服务已准备就绪,可以在Docker容器中本地运行,也可以与本地操作系统上托管的Node.js运行时一起运行。 使用( ibmcloud dev )进行本地开发。 当您准备部署到...
【压缩包子文件的文件名称列表】:“jedrula-app-docs-master”表明这是项目的主分支或源代码库的压缩包,可能包含以下部分: - **README**:介绍项目的基本信息、安装步骤和使用指南。 - **源代码文件夹**:每个...
运行在: /swagger/api-docs 健康终点: /health 微服务已准备就绪,可以在Docker容器中本地运行,也可以与本地操作系统上托管的Node.js运行时一起运行。 使用( ibmcloud dev )进行本地开发。 当您准备部署到...
6. 安装weshop-admin-ui模块,运行mvn install和mvn build命令,运行命令前需要安装nodeJs 7. 运行weshop-eureka-server、weshop-config-server、weshop-api-gateway这几个基础服务 8. 运行weshop-user、weshop-...
: Nodejs页面解析模块 : 快速生成文档工具 项目目录说明 . |-- assets // 静态资源目录 |-- docs // docsify文档目录 | |-- index.html // docsify入口 | |-- README.md // 文档markdown |-- ser
本资源“nodejs中英文文档合集及chm打包”提供了全面的Node.js学习资料,包括中文和英文版本,方便不同语言背景的开发者查阅。 首先,`docs.rar`可能是一个包含多种格式的文档集合,如HTML、PDF或者Markdown等,...
测试数据存储 适用于需要使用测试数据的客户的API接口。 设置 ... 通过“使用API服务器”下面的部分访问API和Swagger页面,或使用Postman集合。 停止测试数据存储 使用api完成后,通过运行以下
运行在: /swagger/api-docs 健康端点: /health 该微服务已准备就绪,可以在Docker容器中本地运行,也可以与本地操作系统上托管的Node.js运行时一起运行。 使用( ibmcloud dev )进行本地开发。 当您准备部署...
这个页面展示了所有API的详细信息,包括路径、方法、参数等。 要将Swagger的在线文档转换为Word文档,我们可以借助第三方工具或库,如`swagger2doc`。这是一个Python脚本,它可以解析Swagger JSON或YAML格式的文档...
用于FFXIV的NodeJS Lodestone解析器 解析“角色。 API 帮忙 帮助构建此API非常简单,您只需要基本的Javascript / JQuery知识就可以进行解析,并且对MySQL的一些了解将对持久性领域有所帮助(不是必需的) 如果您有...
OctoLinker为您链接至API文档,如nodejs.org/en/docs、docs.python.org、docs.oracle.com或rubygems.org。代码审查Pull Request时,OctoLinker将依赖和文件链接整合,让您专注于代码审查。项目源代码可在GitHub上...
axios:https://www.axios-http.cn/docs/api_intro vite:https://vitejs.cn/ redux:https://cn.redux.js.org/index.html redux-persist:https://github.com/rt2zz/redux-persist sass:...
不用担心,octOlinker链接到API文档如nodejs.org/en/docs docs.python.org docs.oracle.com或rubygems.org。拉请求代码审查很容易。 octOlinker将依赖关系和文件链接在拉出请求上,以便您可以专注于重要的工作 - ...
axios:https://www.axios-http.cn/docs/api_intro vite:https://vitejs.cn/ redux:https://cn.redux.js.org/index.html redux-persist:https://github.com/rt2zz/redux-persist sass:...
axios:https://www.axios-http.cn/docs/api_intro vite:https://vitejs.cn/ redux:https://cn.redux.js.org/index.html redux-persist:https://github.com/rt2zz/redux-persist sass:...
axios:https://www.axios-http.cn/docs/api_intro vite:https://vitejs.cn/ redux:https://cn.redux.js.org/index.html redux-persist:https://github.com/rt2zz/redux-persist sass:...
3. 微信小程序开发:WXML(结构语言)、WXSS(样式语言)、JavaScript(逻辑层)、API调用、页面生命周期、组件和样式使用。 4. RESTful API设计:理解HTTP方法(GET、POST、PUT、DELETE)和状态码,设计清晰的接口...
- **入门教程**:[Express.js 教程](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs) 是 Mozilla 提供的一系列教程,帮助初学者逐步掌握 Express.js 的使用技巧。 **知识点三:案例...