routr
v3.0.1
ROUTR庫是可用於服務器和客戶端的路由器相關功能的實現。它遵循與使用同一庫相同的路由規則。該庫不為路由使用回調,而只是將它們映射到可以用作應用程序狀態的字符串名稱並在您的應用程序中使用。例如,在Flux中,當前路線將在商店中以狀態作為狀態保存。
有關更詳細的示例,請查看示例應用程序;
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將路由器和路由對象凍結以確保這些對象的不變性。
對於生產環境,建議使用像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類似,您還可以將以下兩個util與您喜歡的構建系統一起使用:
process.env.NODE_ENV設置為所需的環境命令行示例:
$ browserify index.js -t [ envify --NODE_ENV production ] | uglifyjs -c > bundle.js該軟件可以在Yahoo!下免費使用。 Inc. BSD許可證。有關許可文本和版權信息,請參見許可證文件。
我們的package.json文件中列出了使用的第三pary開源代碼。