La biblioteca RoUTR es una implementación de funcionalidades relacionadas con el enrutador que se puede utilizar tanto para el servidor como para el cliente. Sigue las mismas reglas de enrutamiento que expresan mediante el uso de la misma biblioteca. Esta biblioteca no usa devoluciones de llamada para rutas, sino que solo las asigna a los nombres de cadena que se pueden usar como estado de aplicación y se usan dentro de su aplicación más adelante. Por ejemplo, en Flux, la ruta actual se mantendría como estado en una tienda.
Para ejemplos más detallados, consulte las aplicaciones de ejemplo;
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' } ,
) ; Usamos Object.freeze para congelar el enrutador y los objetos de ruta para entornos de no producción para garantizar la inmutabilidad de estos objetos.
Para los entornos de producción, se recomienda utilizar herramientas como Envify junto con Uglify como parte de su proceso de compilación para eliminar el código específico de producción para los beneficios de rendimiento.
Usamos if (process.env.NODE_ENV !== 'production') para envolver Object.freeze() , para que pueda usar varias herramientas para crear el código para diferentes entornos:
Dos complementos de utilidad principales:
process.envEjemplo de la configuración de Webpack:
plugins: [
new webpack . DefinePlugin ( {
'process.env' : {
NODE_ENV : JSON . stringify ( 'production' )
}
} ) ,
new webpack . optimize . UglifyJsPlugin ( ) ,
...
]Similar a Webpack, también puede usar los siguientes dos utilidades con su sistema de compilación favorito:
process.env.NODE_ENV al entorno deseadoEjemplo de línea de comandos:
$ browserify index.js -t [ envify --NODE_ENV production ] | uglifyjs -c > bundle.jsEste software es gratuito bajo el Yahoo! Inc. Licencia BSD. Consulte el archivo de licencia para ver el texto de la licencia y la información de derechos de autor.
El tercer código de código abierto utilizado se enumeran en nuestro archivo Packle.json.