Node 模块之 util URL queryString path(八)

执笔记忆的空白 2017-12-16 16:44:58 ⋅ 1000 阅读


第一部分 util

util是一个Node.js核心模块,util模块设计的主要目的是为了满足Node内部API的需求。其中包括:格式化字符串对象的序列化实现对象继承等常用方法。要使用util模块中的方法,只需require('util')引入即可。

  1. util.format(format, […])返回一个格式化的字符串,其作用效果有点类似 printf。

util.format('%s:%s', 'foo'); // 'foo:%s'
  1. util.log(string) 以标准输出的形式输出。它将获取当前的时间戳,并和参数 string 一起输出,中间用 “ - “ 连接。

require('util').log('Timestmaped message.'); //15 May 21:41:33 - Timestmaped message
  1. util.inspect(object,[options])将任意对象转换为字符串,

第二部分 URL
url.parse():        输入 URL 字符串,返回一个对象。
url.format(urlObj): 输入一个 URL 对象,返回格式化后的 URL 字符串。
url.resolve(from, to): 给定一个基础URL路径,和一个href URL路径,并且象浏览器那样处理他们可以带上锚点。url.resolve('http://example.com/', '/one')    // 'http://example.com/one'

例子

var url = require('url');
var queryUrl = "http://localhost:3000/index";
返回一个对象
var result = url.parse(queryUrl);
console.log(result) ;

将第一个结果作为第二个的参数

var url = require('url');
var urlObj = {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'localhost:3000',
  port: '3000',
  hostname: 'localhost',
  hash: null,
  search: null,
  query: null,
  pathname: '/index',
  path: '/index',
  href: 'http://localhost:3000/index' };
var result = url.format(urlObj);
console.log(result);

结果为: http://localhost:3000/index

第三部分: queryString 模块

querystring模块是Node.js中的工具模块之一,用于处理URL中的查询字符串,即:querystring部分。查询字符串指:URL字符串中,从问号"?"(不包括?)开始到锚点"#"或者到URL字符串的结束(存在#,则到#结束,不存在则到URL字符串结束)的部分叫做查询字符串。

 url.parse(string).query
                                           |
           url.parse(string).pathname      |
                       |                   |
                       |                   |
                     ------ -------------------
http://localhost:8888/start?foo=bar&hello=world
                                ---       -----
                                 |          |
                                 |          |
              querystring(string)["foo"]    |
                                            |
                         querystring(string)["hello"]


3.1 querystring可以将URL参数字符串与参数对象的互相转换;

var url = require('url');
var qs = require('querystring');

var testURL = 'http://localhost:3000/index?x=1&y=2';
testURL = url.parse(testURL);
//url格式化为对象
//console.log(testURL);
//拿到可查询字符串
console.log(testURL.query);
//对象 利用qs模块将可查询字符串 转换为对象
var json = qs.parse(testURL.query);
console.log(json);

//将对象转换为字符串
console.log(qs.stringify(json));

结果为:

x=1&y=2
{ x: '1', y: '2' }
x=1&y=2

3.2 querystring.stringify(obj, [sep], [eq]):将JSON对象格式化为查询字符串格式的字符串,默认的分隔符为:“&”和“=”, 可以选择是否覆盖默认的分割符('&')和分配符('=')。

var url = require('url');
var qs = require('querystring');
var queryUrl = "http://localhost:3000/index?x=1&y=2" ;
//query:查询
//parse:解析
queryUrl = url.parse(queryUrl).query;
console.log(queryUrl) ;
console.log(qs.parse(queryUrl)) ;

例子二

var querystring = require('querystring');

var json = {x:'123', y:'456'};
//对象序列化为一个querystring, 
console.log(querystring.stringify(json, ';', ':'));
//输出如下 x:123;y:456

//querystring.parse方法用于将查询字符串解析为对象
console.log(querystring.parse('xx=111111&yy=222222'));

3.3 编码查询字符串中的参数:querystring.escape 和 querystring.unescape

var querystring = require('querystring');
//对查询字符串进行  编码
var excape = querystring.escape('name=张&age=11')
console.log(excape);
//对查询字符串进行  解码
console.log(querystring.unescape(excape));

// //结果: 
// name%3D%E5%BC%A0%26age%3D11
// name=张&age=11
第四部分 path处理文件路径


path模块可以帮你规范化连接和解析路径,还可以用于绝对路径到对路径的转换、提取路径的组成部分及判断路径是否存在等。
文件路径指文件的保存位置,可以分为相对路径和绝对路径。可以通过拼接文件路径检测文件是否存在,也可以访问文件信息。

4.1 path.normalize(p) 规范路径

var path = require('path');
//格式化
console.log(path.normalize('/foo/bar//baz/asdf/quux/..'));;
// 处理后
//'/foo/bar/baz/asdf'

path.join()方法可以连接任意多个路径字符串。要连接的多个路径可做为参数传入。path.join()方法在接边路径的同时也会对路径进行规范化。例如:

var path = require('path');
//合法的字符串连接
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// 连接后
'/foo/bar/baz/asdf'

//不合法的字符串将抛出异常
path.join('foo', {}, 'bar')
// 抛出的异常
TypeError: Arguments to path.join must be strings'

path.dirname()方法可以提取出一个文件路径中的目录的部分。path.basename()方法可以提取出一个文件路径中的文件的部分。path.extname()方法可以提取文件的扩展名。例如:

var path = require('path');
path.dirname('/Users/liuht/code/itbilu/demo/path.js')
// 结果
'/Users/liuht/code/itbilu/demo'

path.basename('/Users/liuht/code/itbilu/demo/path.js')
// 结果
'path.js'

path.extname('/Users/liuht/code/itbilu/demo/path.js')
// 结果
'.js'







全部评论: 0

    我有话说:

    Node模块Events模块(五)

    Node模块Events模块(五)

    Node模块fs模块(六)

    屏幕快照 2017-08-08 上午10.53.21.png 第一部分 概述 Node.js 提供一组类似UNIX(POSIX)标准的文件操作API,Node.js中操作文件的模块是fs(File

    Node模块(四)

    模块化分工、各司其职

    Node实战篇:Express--jade模板引擎(七)

    Jade(Pug) — Node Template Engine,一个高性能的模板引擎,专为 Node 而做......

    Node实战篇:Express-session解析()

    Session和HTTP协议属于不同层面的事物,HTTP属于ISO七层模型的最高层应用层,前者Session不属于后者,前者HTTP是具体的动态页面技术来实现的,但同时它又是基于后者的。

    Node实战篇:使用joi来验证数据模型 (十)

    Joi 是 hapijs 自带的数据校验模块,他已经高度封装常用的校验功能,本文就是介绍如何优雅地使用 joi 对数据进行校验......

    Node上传文件、文件夹()

    学习时候的错觉就是你写bug时候的感觉。没错、老铁。

    Nodejs视频服务器 切片ffmpeg

    Node 视频服务器 切片ffmpeg

    Node异步式I/O和异步式编程(三)

     Node.js 最大的特点就是异步式 I/O(或者非阻塞I/O)与事件紧密结合的编程模式。 第一部分: I/O 1.阻塞I/O与非阻塞I/O概念 1.1阻塞I/O(同步I/O) 线程在

    Nodejs实用技巧-Exceljs

    今天我们就在此介绍下exceljs的基本使用,应该可以满足我们大部分的需求。

    Nodejs神兽--Promise

    言必信,行必果。 没毛病,这就是Promise!

    Node实战篇:阶段项目(九)

    项目整体预览 项目的github地址 界面逼格还行-_- 主要功能: 登陆; 退出; 所用的主要模块: express, 路由.静态文件.模块分工等; express-session, 采用

    Node实战篇:Express路由(三)

    Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

    2018年8个技巧来构建更好的Node.js应用程序

    2018年8个技巧来构建更好的Node.js应用程序

    Node实战篇:Express 中间件-body-parser(五)

    body-parser是什么?body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JS

    「轻阅读」聊一聊6种常用的架构设计模式(上)

      许多现代应用都需要在企业级规模上进行构建,有时甚至需要在互联网规模上进行构建。这些应用都需要满足可扩展性、可用性、安全性、可靠性和弹性需求。 在本文中,我将谈论一些设计模式,这些模式

    为什么要使用 Node.js?这几点你必须知道!

    经过这几年的发展,前端普遍进入了技术深水区,只会Web页面开发已经难以满足企业的需求,Node逐渐成为了刚性技能。 但Node在业务上的使用还没有那么普及,有的时候想用老板还不同意,本文将从4个角度

    NodeJS 10.5.0 中的线程:实用介绍

    几天前,Node.js版本10.5.0发布,其中包含的主要功能之一是添加了线程支持。