概述
該工具庫用來處理 url 中地址與參數(shù),能夠很方便得到我們想要的數(shù)據(jù)。
js 中有 RegExp 方法做正則表達(dá)式校驗幢妄,而 path-to-regexp 可以看成是 url 字符串的正則表達(dá)式挺邀。
使用
第三方庫,使用前先進行安裝:
$ npm install path-to-regexp
在 js 中使用:
const pathToRegexp = require('path-to-regexp');
API 介紹
1. pathToRegexp()
作用:這里這個方法可以類比于 js 中 new RegExp('xxx')
最疆。
var pathToRegexp = require('path-to-regexp')
var re = pathToRegexp('/foo/:bar')
console.log(re);
打印結(jié)果如下:
/^\/foo\/((?:[^\/]+?))(?:\/(?=$))?$/i
要注意兩點,一點是我們自己的 url 地址蚤告,一條是匹配規(guī)則努酸。
2. exec()
作用:匹配 url 地址與規(guī)則是否相符。
var pathToRegexp = require('path-to-regexp')
var re = pathToRegexp('/foo/:bar'); // 匹配規(guī)則
var match1 = re.exec('/test/route'); // url 路徑
var match2 = re.exec('/foo/route'); // url 路徑
console.log(match1);
console.log(match2);
打印結(jié)果如下:
null
[ '/foo/route', 'route', index: 0, input: '/foo/route' ]
說明:
上述代碼中杜恰,第一個 url 路徑與匹配規(guī)則不相符返回 null获诈,第二個 url 路徑與匹配規(guī)則相符仍源,返回一個數(shù)組。
3. parse()
作用:解析 url 字符串中的參數(shù)部分(:id)舔涎。
var pathToRegexp = require('path-to-regexp');
var url = '/user/:id';
console.log(pathToRegexp.parse(url));
打印結(jié)果如下:
[ '/user',
{ name: 'id',
prefix: '/',
delimiter: '/',
optional: false,
repeat: false,
partial: false,
pattern: '[^\\/]+?' } ]
說明:返回一個數(shù)組笼踩,從第二個數(shù)據(jù)可以就可以得到 url 地址攜帶參數(shù)的屬性名稱(item.name)。
當(dāng)然亡嫌,url 中攜帶參數(shù)出了 :id 這種形式嚎于,還有 /user?id=11
這種,使用 parse() 方法解析自行查看結(jié)果挟冠。
4. compile()
作用:快速填充 url 字符串的參數(shù)值于购。
var pathToRegexp = require('path-to-regexp')
var url = '/user/:id/:name'
var data = {id: 10001, name: 'bob'}
console.log(pathToRegexp.compile(url)(data))
打印結(jié)果:
/user/10001/bob