nodejs抓取动态网页(基于HistoryAPI的路径有哪些?-苏州安嘉)
优采云 发布时间: 2021-11-14 16:08nodejs抓取动态网页(基于HistoryAPI的路径有哪些?-苏州安嘉)
路径为“/users”时调用用户列表
否则会返回404页面
String.substring(arg1,arg2);
参数 1 为起始索引值,参数 2 位为结束索引值。它返回两个索引值之间的字符,包括第一个参数指向的字符,但不包括第二个参数指向的字符。
例子:
var string = "halleo ";
var str1 = string.substring(1);
操作结果:
当只有一个参数时,返回从当前参数(包括)的索引值所指向的字符到结尾的所有字符
var string = "halleo ";
var str1 = string.substring(4,-1);
console.log(str1);
操作结果:
当第二个参数为负数时(与值无关),返回从第一个参数(正数)指向的索引值开始的字符(不包括)。
var string = "halleo ";
var str1 = string.substring(-1,-6);
console.log(str1);
操作结果:
当两个结果都为负时,返回一个空字符串
var string = "halleo ";
var str1 = string.substring(0,10);
console.log(str1);
操作结果:
当end指向的索引值大于字符串的范围时,从起始索引值指向的字符到后面的所有字符返回
基于历史API
基于 Hisotry API 的路由更直观
HTML5 History API 通过*敏*感*词* popstate 事件,可以直接更改 URL,无需刷新页面。
Popstate 事件:
当活动历史记录条目发生变化时,将触发该事件。popstate 事件的 state 属性收录历史条目的 state 对象的副本
调用 history.pushState() 或 history.replaceState() 不会触发 popstate 事件,只有用户点击浏览器的后退按钮或调用 history.back() 函数
区别:(转载)
假设服务器只有以下文件(script.js被index.html引用):
/-
|- index.html
|- 脚本.js
基于哈希的路径是:
#/foobar
基于History API的路径是:
直接访问时,两者的行为是一样的,都返回index.html文件。
从#/foobar or 跳转时,也是正常的,因为此时页面和脚本文件已经加载完毕,所以路由跳转是正常的。
直接访问#/foobar时,实际请求的是服务器,所以会先加载页面和脚本文件,然后脚本执行路由跳转,一切正常。
直接访问的时候,其实向服务器发起的请求也是,但是服务器只能匹配/而不能匹配/foobar,所以会出现404错误。
因此,如果使用基于History API的路由,则需要修改服务端,使得访问/foobar时可以返回index.html文件,这样浏览器加载页面和脚本时就可以进行路由跳转.
动态路由:
以上内容为静态内容,静态内容的路由是固定的。
动态内容不是。我们可以通过传递参数而不是单独设置静态路由来获取某个用户的信息。
例如:
表达
App.get('user/:id',(req,res,next) =>{
//...
});
烧瓶:
@app.route('/user/');
def get_user_info(user_id):
经过
/foobar 和 /foobar/ 类似,具体行为以服务端实习为准
在Express中,两者几乎相同,而在flask中,类似于lunix,末尾有斜线表示文件夹,no表示文件。
(转载示例)
Server.js 代码
var http = require("http");
var url = require("url");
function start(route) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
route(pathname);
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
router.js 代码
function route(pathname) {
console.log("About to route a request for " + pathname);
}
exports.route = route;
index.js 代码
var server = require("./server");
var router = require("./router");
server.start(router.route);
在 router.js 中创建映射函数和关系
Node.js 创建服务器和 npm 基本操作
REPL 和回调函数
node.js 绑定事件
node.js-error事件,缓冲操作
node.js-buffer 操作
node.js-stream 操作
node.js-module系统及功能
node.js-路由