ROUTR Library adalah implementasi fungsionalitas terkait router yang dapat digunakan untuk server dan klien. Ini mengikuti aturan perutean yang sama seperti yang diungkapkan dengan menggunakan perpustakaan yang sama. Perpustakaan ini tidak menggunakan panggilan balik untuk rute, alih -alih memetakannya ke nama string yang dapat digunakan sebagai status aplikasi dan digunakan dalam aplikasi Anda nanti. Misalnya dalam fluks, rute saat ini akan diadakan sebagai keadaan di toko.
Untuk contoh yang lebih rinci, silakan periksa contoh aplikasi;
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' } ,
) ; Kami menggunakan Object.freeze untuk membekukan router dan rute objek untuk lingkungan non-produksi untuk memastikan ketidakmampuan objek ini.
Untuk lingkungan produksi, disarankan untuk menggunakan alat seperti Envify bersama dengan Uglify sebagai bagian dari proses pembuatan Anda untuk menghapus kode spesifik produksi untuk manfaat kinerja.
Kami menggunakan if (process.env.NODE_ENV !== 'production') untuk membungkus Object.freeze() , sehingga Anda dapat menggunakan berbagai alat untuk membangun kode untuk lingkungan yang berbeda:
Dua plugin utilitas utama:
process.envContoh konfigurasi webpack:
plugins: [
new webpack . DefinePlugin ( {
'process.env' : {
NODE_ENV : JSON . stringify ( 'production' )
}
} ) ,
new webpack . optimize . UglifyJsPlugin ( ) ,
...
]Mirip dengan Webpack, Anda juga dapat menggunakan dua util berikut dengan sistem build favorit Anda:
process.env.NODE_ENV ke lingkungan yang diinginkanContoh baris perintah:
$ browserify index.js -t [ envify --NODE_ENV production ] | uglifyjs -c > bundle.jsPerangkat lunak ini bebas digunakan di bawah Yahoo! Lisensi BSD Inc. Lihat file lisensi untuk teks lisensi dan informasi hak cipta.
Kode Sumber Terbuka Parget Ketiga yang digunakan tercantum dalam file package.json kami.