routr
v3.0.1
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()をラップして、さまざまなツールを使用してさまざまな環境のコードを構築できます。
2つの主要なユーティリティプラグイン:
process.envの値を定義しますWebpack構成の例:
plugins: [
new webpack . DefinePlugin ( {
'process.env' : {
NODE_ENV : JSON . stringify ( 'production' )
}
} ) ,
new webpack . optimize . UglifyJsPlugin ( ) ,
...
]Webpackと同様に、お気に入りのビルドシステムで次の2つのUTILを使用することもできます。
process.env.NODE_ENV目的の環境に設定しますコマンドラインの例:
$ browserify index.js -t [ envify --NODE_ENV production ] | uglifyjs -c > bundle.jsこのソフトウェアはYahoo!で無料で使用できますInc. BSDライセンス。ライセンステキストと著作権情報については、ライセンスファイルを参照してください。
使用されている3番目のオープンソースコードは、package.jsonファイルにリストされています。