Node 之URL模块

 

 

首先在控制台(终端)开启Node模式,并打印出url来看一下:

 

从图中可以看出,它有 UrlparseresolveresolveObjectformatURLURLSearchParamsdomainToASCIIdomainToUnicode 这么多模块。

那么这些模块有什么用呢?

我们来看看最终的效果:

首先输入http://localhost:3000之后的效果

 

之后是输入http://localhost:3000/?userName=perfect*&userAge=21的效果:

 

 

 从图中可以看出

访问地址是:http://localhost:3000/?userName=perfect*&userAge=21   如果 执行 console.log(req.url),它将执行两次,分别返回下面的信息:

 

代码:

var url=require("url");//引入url模块

var http=require("http");//引入HTTP模块
//创建HTTP模块,因为URL的监听,需要HTTP模块的开启

//用HTTP模块创建服务
/*
 
 * req获取url信息(request)
 * res浏览器返回响应信息(response)
 * */


http.createServer(function(req,res){
    
    
       var result=url.parse(req.url,true);
        
        console.log(result);
        
        
        
        /*Url{
            
            protocol:null,
            slashes:null,
            auth:null,
            host:null,
            port:null,
            hostname:null,
            hash:null,
            search:'?userName=perfect*&userAge=21',
            query:{userName:'perfect*',userAge:'21'},
            pathname:'/',
            path:'/?userName=perfect*&userAge=21',
            href:'/?userName=perfect*&userAge=21'
        }
        
        */
        console.log(result.query.userName);
        console.log(result.query.userAge);

    
    
    // 设置 HTTP 头部,状态码是 200,文件类型是 html,字符集是 utf8
    res.writeHead(200,{
        "Content-Type":"text/html;charset=UTF-8"
        
        
        
        
    });
    // 往页面打印值
    res.write('<h1 style="text-align:center">欢迎来到perfect*博客园</h1>');
    
    // 结束响应
    res.end();
    
}).listen(3000);

使用 url 的 parse 方法parse 方法需要两个参数: 第一个参数是地址     第二个参数是 true 的话表示把 get 传值转换成对象 

 var result=url.parse(req.url,true);

可以通过 query,获取到我们想要的路径字段。

比如说上面的代码中:

  query:{userName:'perfect*',userAge:'21'},

 var result=url.parse(req.url,true);
        
        console.log(result);
        

该段代码改为

console.log(url);

url模块所有内容显示:

Url: [Function: Url],
  parse: [Function: urlParse],//获取地址信息
  resolve: [Function: urlResolve],//追加或者替换地址
  resolveObject: [Function: urlResolveObject],
  format: [Function: urlFormat],//逆向parse,根据地址获取url信息
  URL: [Function: URL],
  URLSearchParams: [Function: URLSearchParams],
  domainToASCII: [Function: domainToASCII],
  domainToUnicode: [Function: domainToUnicode],
  pathToFileURL: [Function: pathToFileURL],
  fileURLToPath: [Function: fileURLToPath] }

 

parse模块的使用;

代码:

console.log(url.parse("https://jiguiyan.cnblogs.com"))
        
        
        
        /*Url{
            
            protocol:'https:',
            slashes:true,
            auth:null,
            host:'jiguiyan.cnblogs.com',
            port:null,
            hostname:'jiguiyan.cnblogs.com',
            hash:null,
            search:null,
            query:null,
            pathname:'/',
            path:'/',
            href:'https://jiguiyan.cnblogs.com'
        }
        

parse 带参数:

console.log(url.parse("http://www.baidu.com/new?name=zhangsan"));

/**
 * Console:
  Url {
    protocol: 'http:',
    slashes: true,
    auth: null,
    host: 'www.baidu.com',
    port: null,
    hostname: 'www.baidu.com',
    hash: null,
    search: '?name=zhangsan',
    query: 'name=zhangsan',
    pathname: '/new',
    path: '/new?name=zhangsan',
    href: 'http://www.baidu.com/new?name=zhangsan' 
  }
 */

 

format的使用:

效果图:

 

console.log(url.format({
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.baidu.com',
  port: null,
  hostname: 'www.baidu.com',
  hash: null,
  search: '?name=zhangsan',
  query: 'name=zhangsan',
  pathname: '/new',
  path: '/new?name=zhangsan',
  href: 'http://www.baidu.com/new?name=zhangsan' 
}))

resolve 的使用:

console.log(url.resolve("https://jiguiyan.cnblogs.com", "jiguiyan"));

 

 更多关于url的学习可参考官网:http://nodejs.cn/api/url.html#url_class_url

博文学习来源:https://juejin.im/post/5c1f8e52f265da6170071e43

 

posted @ 2019-07-09 09:59  perfect*  阅读(1926)  评论(0编辑  收藏  举报
$(function() { $('#cnblogs_post_body img').each(function() { let imgSrc = $(this).attr('src'); let year = parseInt(imgSrc.substr(imgSrc.indexOf('g')+1,4)); if(year >= 2022){ imgSrc += `?watermark/2/text/amlndWl5YW4=/font/5a6L5L2T/fontsize/15/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast`; $(this).attr('src', imgSrc) } }) })