Node 模块之 util URL queryString p

2016-10-21  本文已影响102人  simuty
第一部分 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'

更多精彩内容请关注“IT实战联盟”哦~~~


IT实战联盟.jpg

参考
Node 学习笔记—Node.js 核心 API 之 Util

2.nodejs-post文件上传原理详解

上一篇下一篇

猜你喜欢

热点阅读