nodejs学习笔记<三>关于路由(url)
在网站开发中,路由的设置非常关键。nodejs对路由处理封装了一个比较全面的模块。
来认识下url模块
1)在命令行(cmd)可以直接 node —> url 可直接查看url模块的所有方法。
2)在js中通过require调用url模块。var url = require('url');
url包括:parse,resolve,resolveObject,format四个方法。
1)parse:
parse用来解析url地址。同样可以直接用命令行(cmd)调用,也可以在js中通过url模块使用。
例1:解析一个合法url
var url = require('url');
/*解析url*/
function parse_url(){
return url.parse("https://www.baidu.com/");
}
console.log(parse_url());
执行结果:
parse方法提供了比较全面的解析。
protocol:底层使用的协议(比如:http,ftp,https等等)
slashes:url是否有双斜线
host:url的域名或IP地址
port:端口
hostname:主机名
hash:锚值(解析页面锚点,带#号的锚链接)
search:查询字符串参数(url连同?后面的参数一起,通常是请求参数)
query:向服务器请求的参数(这里的值和search非常像,只是少一个问号)
pathname:访问资源路径名(网站资源页,或资源的路径名)
path:路径
注:pathname和path的区别:pathname只资源路径(从url的com后的/开始一直到?中间的值),而path获取的是除域名或ip外的全部路径(从url的com后的/开始一直到url结束)
href:完整的url字符串。
这些属性都可以通过url.parse直接调用获取对应值。例如:url.parse("http://www.baidu.com").path (直接获取url的路径值)
例2:解析一个相对复杂的url
var url = require('url');
/*解析url*/
function parse_url(){
return url.parse("https://www.baidu.com:8080/map/list?id=125&name=tom#top");
}
console.log(parse_url());
执行结果:
parse第二,三个参数,parse的第二和第三个参数是可选参数,如果不加默认第二,三参数为false。
parse第二个参数:
用来将query的值解析为对象。
例:
var url = require('url');
/*解析url*/
function parse_url(){
return url.parse("https://www.baidu.com:8080/map/list?id=125&name=tom#top",true);
}
console.log(parse_url());
执行结果:
仅仅是query返回结果有变化,其他结果不变。
parse第三个参数:
用来解析不带明显请求协议的url,例如://192.168.1.1:8080/login
例:
var url = require('url');
/*解析url*/
function parse_url(){
return url.parse("//192.168.1.1:8080/longin?name=admin&pwd=admin",true,true);
}
console.log(parse_url());
执行结果:
注意:对比加了第三个参数和不加第三个参数parse出来的结果对比。
2)format:
format接受一个包含protocol,slashes,auth,host,port,hostname,hash,search,query,pathname,path的对象,生成一个合法的url。同样可以直接用命令行(cmd)调用,也可以在js中通过url模块使用。
例:
var url = require('url');
/*生成url*/
function parse_url(){
return url.format({
protocol: 'www.baidu.com:',
slashes: null,
auth: null,
host: '8080',
port: null,
hostname: '8080',
hash: null,
search: '?name=admin&pwd=admin',
query: 'name=admin&pwd=admin',
pathname: '/longin',
path: '/longin?name=admin&pwd=admin',
});
}
console.log(parse_url());
执行结果:
3)resolve
接受 域名(或ip地址) 和 路径 生成完整url。同样可以直接用命令行(cmd)调用,也可以在js中通过url模块使用。
例:
var url = require('url');
/*生成url*/
function parse_url(){
return url.resolve("http://www.soso.com","/map/chain");
}
console.log(parse_url());
执行结果:
**************************************************************************************************************
url模块对服务器交互起到至关重要的作用。
以上详解的三个方法属于url常用方法,也是nodejs官网具体介绍的三个。
nodejs学习笔记<三>关于路由(url)的更多相关文章
- NodeJS学习笔记 (12)网络地址解析-url(ok)
模块概述 nodejs中,提供了url这个非常实用的模块,用来做URL的解析.在做node服务端的开发时会经常用到.使用很简单,总共只有3个方法. 正式讲解前,各位同学先把下面这个图记在心上(来自no ...
- nodejs学习笔记三——nodejs使用富文本插件ueditor
在做自己的nodejs项目的时候遇到需要使用ueditor.原来下载的是ueditor的jsp版本.目录如下 在ueditor.config.js中有配置服务器home路径(这个home路径能找到u ...
- NodeJS学习笔记 - Express4.x路由操作
一.为Express添加about路由 1.新建js文件,about.js 2.打开about.js,并输入以下代码: var express=require('express'); var rout ...
- NodeJS学习笔记三
map map对象是一个简单的键/值映射.任何值(包括对象和原始值)都可以用作一个键或一个值. var m = new Map(); var o = {p: "Hello World&quo ...
- nodejs学习笔记三(用户注册、登录)
1.定接口 /user 接口 输入 act=reg&user=aaa&pass=123456 输出 {& ...
- Nodejs学习笔记(三)——一张图看懂Nodejs建站
前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...
- Nodejs学习笔记(四)——支持Mongodb
前言:回顾前面零零碎碎写的三篇挂着Nodejs学习笔记的文章,着实有点名不副实,当然,这篇可能还是要继续走着离主线越走越远的路子,从简短的介绍什么是Nodejs,到如何寻找一个可以调试的Nodejs ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
随机推荐
- mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...
- StringBuffer类的方法
public class Page116 { /** * StringBuffer类的练习 * @param args * @throws IOException */ public static v ...
- 6.shap以及selector的使用
功能:相当于自定义一个模板 首先,要新建一个drawble文件夹 然后,再新建一个XML文件 在<shap></shap>中写内容 <corners/>圆角 < ...
- 【转】MYSQL入门学习之一:基本操作
转载地址:http://www.2cto.com/database/201212/173868.html 1.登录数据库 www.2cto.com 命令:mysql -u usern ...
- html里文本保留换行格式
用<pre></pre>把文本包起来
- JQuery知识快览之五—操作属性和结构
前文提到JQuery提供了丰富的内置方法来操作对象集,本文主要介绍JQuery中的那些内置操作属性和DOM结构的方法. prop还是attr? 从JQuery1.6版开始,新增了prop方法来获取和设 ...
- DAG模型
数字三角形: 1.递归计算 int solve(int i,int j) { :max(solve(i+,j),solve(i+,j+))); } 2.记忆化搜索,不用指明计算顺序,并且保证每个状态只 ...
- 好玩的代码之C++实现CPU满载
#include <windows.h> #include <iostream> #include <cstdlib> using namespace std; D ...
- client/offset/srooll位置与关系
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- html与表格知识
<html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...