La bibliothèque Routr est une implémentation de fonctionnalités liées au routeur qui peuvent être utilisées pour le serveur et le client. Il suit les mêmes règles de routage que Express en utilisant la même bibliothèque. Cette bibliothèque n'utilise pas de rappels pour les itinéraires, mais les mappant simplement à des noms de chaîne qui peuvent être utilisés comme état d'application et utilisés dans votre application ultérieurement. Par exemple, en flux, l'itinéraire actuel serait maintenu comme état dans un magasin.
Pour des exemples plus détaillés, veuillez consulter les exemples d'applications;
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' } ,
) ; Nous utilisons Object.freeze pour geler le routeur et la route des objets pour les environnements non production pour assurer l'immuabilité de ces objets.
Pour les environnements de production, il est recommandé d'utiliser des outils tels que Envify avec Uglify dans le cadre de votre processus de construction pour éliminer le code spécifique de production pour les avantages sociaux.
Nous utilisons if (process.env.NODE_ENV !== 'production') pour enrouler Object.freeze() , afin que vous puissiez utiliser divers outils pour créer le code pour différents environnements:
Deux plugins utilitaires principaux:
process.envExemple de la configuration de WebPack:
plugins: [
new webpack . DefinePlugin ( {
'process.env' : {
NODE_ENV : JSON . stringify ( 'production' )
}
} ) ,
new webpack . optimize . UglifyJsPlugin ( ) ,
...
]Semblable à WebPack, vous pouvez également utiliser les deux utils suivants avec votre système de construction préféré:
process.env.NODE_ENV dans l'environnement souhaitéExemple de ligne de commande:
$ browserify index.js -t [ envify --NODE_ENV production ] | uglifyjs -c > bundle.jsCe logiciel est gratuit sous le Yahoo! Inc. Licence BSD. Voir le fichier de licence pour le texte de licence et les informations sur le droit d'auteur.
Le code open source de troisième Parle utilisé est répertorié dans notre fichier package.json.