@acta/path-matcher 中文文档教程
Path-Matcher @acta/path-matcher
从编译正则表达式匹配器针对正则表达式匹配器的路径模板和测试路径。 这意味着用作路由器的实用程序。
Table of Contents
- Basic use case
- Store compiled templates
- Test against a compiled template
- Check if a path matches a stored template
- Dev scripts
Basic use case
使用 testPath( path, template )
根据模板测试路径。 如果路径与模板匹配,则返回具有名称、路径名和段值的对象。 否则,测试返回 false。
import pathMatcher from '@acta/path-matcher';
// Strict template
pathMatcher.testPath('/foo/bar', '/foo/bar');
/**
{
name: '/foo/bar', <= the template is unnamed
pathname: '/foo/bar',
segments: {},
template: '/foo/bar',
}
*/
// Template with variable segment
pathMatcher.testPath('/foo/bar', '/foo/{baz}')
/**
{
name: '/foo/{baz}',
pathname: '/foo/bar',
segments: { baz: 'bar' }, <= the value for the segment 'baz'
template: '/foo/{baz}',
}
*/
// Template with optional segment
pathMatcher.testPath('/foo', '/foo/{bar?}')
/**
{
name: '/foo/{bar?}',
pathname: '/foo',
segments: { bar: null }, <= note the optional segment at null
template: '/foo/{bar?}',
}
*/
// No match
pathMatcher.testPath('/foo/bar', '/bar/foo'); // false
Store compiled templates
您可以将模板存储在 pathMatcher
对象中。 它们将被编译以备后用。
import pathMatcher from '@acta/path-matcher';
// As a simple string
pathMatcher.addTemplate('/foo/{bar?}');
// As a template with meta data
pathMatcher.addTemplate({
name: 'foobar',
paramsChecks: {
bar: /[0-9]?/
},
template: '/foo/{bar?}'
});
编译后的模板可以在
pathMatcher.compiledTemplates
中访问。
Test against a compiled template
存储模板后,您可以针对它测试路径。
import pathMatcher from '@acta/path-matcher';
pathMatcher.testPathAgainstCompiledTemplate('foobar', 'foo/123');
/**
{
name: 'foobar', <= now the template is named
pathname: 'foo/baz',
segments: {
bar: '123'
},
template: '/foo/{bar?}',
}
*/
这更像是一种用于查找模板的内部方法,但您可以使用它来构建路由器。
Check if a path matches a stored template
import pathMatcher from '@acta/path-matcher';
// Add a simple template
pathMatcher.addTemplate('/foo/bar/{baz?}');
// Add the template with meta data
pathMatcher.addTemplate({
name: 'foobar',
paramsChecks: {
bar: /[0-9]?/
},
template: '/foo/{bar?}'
});
// Find the path
pathMatcher.findPath('foo/123');
/**
{
name: 'foobar',
pathname: 'foo/baz',
segments: {
bar: '123'
},
template: '/foo/{bar?}',
}
*/
// Find an unknown path
pathMatcher.findPath('bar/123');
/**
false
*/
Dev scripts
脚本:
npm run dev
to dev (build, test and watch)npm run build
to build the production versionnpm run release
to release a new version. Relies on release-it for deployments.
要使用其他应用程序或包中的包在本地进行开发,请使用符号链接:npm link /the/absolute/path/url
。
发布:npm publish --access=public
。
Path-Matcher @acta/path-matcher
To compile a regex matcher from a path template and test paths against a regex matcher. This is meant to be used as an utilit for a router.
Table of Contents
- Basic use case
- Store compiled templates
- Test against a compiled template
- Check if a path matches a stored template
- Dev scripts
Basic use case
Test a path against a template with testPath( path, template )
. If the path matches with the template, an object with the name, the pathname and the segment values is returned. Otherwise, the test returns false.
import pathMatcher from '@acta/path-matcher';
// Strict template
pathMatcher.testPath('/foo/bar', '/foo/bar');
/**
{
name: '/foo/bar', <= the template is unnamed
pathname: '/foo/bar',
segments: {},
template: '/foo/bar',
}
*/
// Template with variable segment
pathMatcher.testPath('/foo/bar', '/foo/{baz}')
/**
{
name: '/foo/{baz}',
pathname: '/foo/bar',
segments: { baz: 'bar' }, <= the value for the segment 'baz'
template: '/foo/{baz}',
}
*/
// Template with optional segment
pathMatcher.testPath('/foo', '/foo/{bar?}')
/**
{
name: '/foo/{bar?}',
pathname: '/foo',
segments: { bar: null }, <= note the optional segment at null
template: '/foo/{bar?}',
}
*/
// No match
pathMatcher.testPath('/foo/bar', '/bar/foo'); // false
Store compiled templates
You can store templates in the pathMatcher
object. They will be compiled for later use.
import pathMatcher from '@acta/path-matcher';
// As a simple string
pathMatcher.addTemplate('/foo/{bar?}');
// As a template with meta data
pathMatcher.addTemplate({
name: 'foobar',
paramsChecks: {
bar: /[0-9]?/
},
template: '/foo/{bar?}'
});
The compiled template will be accessible in
pathMatcher.compiledTemplates
.
Test against a compiled template
When a template has been stored, you can test a path against it.
import pathMatcher from '@acta/path-matcher';
pathMatcher.testPathAgainstCompiledTemplate('foobar', 'foo/123');
/**
{
name: 'foobar', <= now the template is named
pathname: 'foo/baz',
segments: {
bar: '123'
},
template: '/foo/{bar?}',
}
*/
This is more of an internal method used to find a template, but you can use it to build a router.
Check if a path matches a stored template
import pathMatcher from '@acta/path-matcher';
// Add a simple template
pathMatcher.addTemplate('/foo/bar/{baz?}');
// Add the template with meta data
pathMatcher.addTemplate({
name: 'foobar',
paramsChecks: {
bar: /[0-9]?/
},
template: '/foo/{bar?}'
});
// Find the path
pathMatcher.findPath('foo/123');
/**
{
name: 'foobar',
pathname: 'foo/baz',
segments: {
bar: '123'
},
template: '/foo/{bar?}',
}
*/
// Find an unknown path
pathMatcher.findPath('bar/123');
/**
false
*/
Dev scripts
Scripts :
npm run dev
to dev (build, test and watch)npm run build
to build the production versionnpm run release
to release a new version. Relies on release-it for deployments.
To develop in local using the package from another application or package, go for a symlink: npm link /the/absolute/path/url
.
To publish: npm publish --access=public
.