Routr Library เป็นการใช้งานฟังก์ชันที่เกี่ยวข้องกับเราเตอร์ซึ่งสามารถใช้สำหรับทั้งเซิร์ฟเวอร์และไคลเอนต์ มันเป็นไปตามกฎการกำหนดเส้นทางเดียวกันกับ 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() เพื่อให้คุณสามารถใช้เครื่องมือต่าง ๆ เพื่อสร้างรหัสสำหรับสภาพแวดล้อมที่แตกต่างกัน:
ปลั๊กอินยูทิลิตี้หลักสองตัว:
process.envตัวอย่างของการกำหนดค่า WebPack:
plugins: [
new webpack . DefinePlugin ( {
'process.env' : {
NODE_ENV : JSON . stringify ( 'production' )
}
} ) ,
new webpack . optimize . UglifyJsPlugin ( ) ,
...
]เช่นเดียวกับ WebPack คุณสามารถใช้สอง Utils ต่อไปนี้กับระบบบิลด์ที่คุณชื่นชอบ:
process.env.NODE_ENV ไปยังสภาพแวดล้อมที่ต้องการตัวอย่างบรรทัดคำสั่ง:
$ browserify index.js -t [ envify --NODE_ENV production ] | uglifyjs -c > bundle.jsซอฟต์แวร์นี้ใช้งานได้ฟรีภายใต้ Yahoo! ใบอนุญาต BSD Inc. ดูไฟล์ใบอนุญาตสำหรับข้อความใบอนุญาตและข้อมูลลิขสิทธิ์
รหัสโอเพ่นซอร์สที่สามที่ใช้อยู่ในไฟล์ package.json ของเรา