Библиотека Routr-это реализация функциональных возможностей, связанных с маршрутизатором, которые можно использовать как для сервера, так и для клиента. Он следует тем же правилам маршрутизации, что и Express, используя ту же библиотеку. Эта библиотека не использует обратные вызовы для маршрутов, вместо этого просто отображая их с именами строк, которые можно использовать в качестве состояния приложения, а позже используется в вашем приложении. Например, в потоке текущий маршрут будет проходить как состояние в магазине.
Для получения более подробных примеров, пожалуйста, ознакомьтесь с примерами приложений;
import Router from 'routr' ;
const router = new Router ( [
{
name : 'view_user' ,
path : '/user/:id' ,
method : 'get' ,
foo : {
bar : 'baz' ,
} ,
} ,
{
name : 'view_user_post' ,
path : '/user/:id/post/:post' ,
method : 'get' ,
} ,
] ) ;
// match route
const route = router . getRoute ( '/user/garfield?foo=bar' ) ;
if ( route ) {
// this will output:
// - "view_user" for route.name
// - "/user/garfield" for route.url
// - {id: "garfield"} for route.params
// - {path: "/user/:id", method: "get", foo: { bar: "baz"}} for route.config
// - { foo: 'bar' } for route.query
console . log ( '[Route found]:' , route ) ;
}
// generate path name (does not include query string) from route
// "path" will be "/user/garfield/post/favoriteFood?meal=breakfast"
const path = router . makePath (
'view_user_post' ,
{ id : 'garfield' , post : 'favoriteFood' } ,
{ meal : 'breakfast' } ,
) ; Мы используем Object.freeze для заморожения маршрутизатора и объектов маршрута для непроизводственных сред, чтобы обеспечить неизменность этих объектов.
Для производственных среда рекомендуется использовать такие инструменты, как Envify, а также Uglify в рамках вашего процесса сборки, чтобы лишить специфический код производства для преимуществ производительности.
Мы используем if (process.env.NODE_ENV !== 'production') , чтобы обернуть Object.freeze() , чтобы вы могли использовать различные инструменты для создания кода для различных сред:
Два основных плагина по утилите:
process.envПример конфигурации WebPack:
plugins: [
new webpack . DefinePlugin ( {
'process.env' : {
NODE_ENV : JSON . stringify ( 'production' )
}
} ) ,
new webpack . optimize . UglifyJsPlugin ( ) ,
...
]Подобно WebPack, вы также можете использовать следующие два утилита с вашей любимой системой сборки:
process.env.NODE_ENV env.node_env в желаемую средуПример командной строки:
$ browserify index.js -t [ envify --NODE_ENV production ] | uglifyjs -c > bundle.jsЭто программное обеспечение может бесплатно использовать под Yahoo! Inc. BSD Лицензия. См. Файл лицензии для текста лицензии и информации об авторском праве.
Используемый код с открытым исходным кодом третьего уровня перечислен в нашем файле Package.json.