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