مكتبة 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 لتجميد كائنات التوجيه والمسار لبيئات عدم الإنتاج لضمان ثبات هذه الكائنات.
بالنسبة لبيئات الإنتاج ، يوصى باستخدام أدوات مثل Envify مع 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 ، يمكنك أيضًا استخدام اثنين من المستخدمين التاليين مع نظام الإنشاء المفضل لديك:
process.env.NODE_ENV إلى البيئة المطلوبةمثال سطر الأوامر:
$ browserify index.js -t [ envify --NODE_ENV production ] | uglifyjs -c > bundle.jsهذا البرنامج مجاني لاستخدامه تحت Yahoo! شركة BSD ترخيص. راجع ملف الترخيص للحصول على نص الترخيص ومعلومات حقوق الطبع والنشر.
يتم سرد رمز المصدر المفتوح على الشاشة الثالثة في ملف package.json الخاص بنا.