看了go web領(lǐng)域的httprouter實現(xiàn)借用了radix tree這個樹玫恳,據(jù)介紹路由效率很高唐础,而且還很省內(nèi)存。近來在看nodejs的原始API,然后注意到nodejs推薦給我一個router然评,名字就叫router。但是感覺這個router效率并不高庶柿,而且如果沒有用c擴(kuò)展看铆,那么內(nèi)存也會消耗很多∈1颍基于此想法酷麦,我覺得在我能力之內(nèi)(就算是之外也去嘗試一下),利用c寫擴(kuò)展喉恋,js做最后一層的模式匹配沃饶,來實現(xiàn)高性能的router。其中最關(guān)鍵的點就是用c去實現(xiàn)這個擴(kuò)展轻黑,還有js層的數(shù)據(jù)加工糊肤。想到哪寫到哪,突發(fā)奇想嘛氓鄙!記錄一下具體想法:
比如說下面的一個url:
/api/aricles/<id: int>/author //原始數(shù)據(jù)
/api/articles/?/author //經(jīng)過處理后的輸入數(shù)據(jù)馆揉,?用來占位
對輸入數(shù)據(jù)處理,如果滿足這個模式抖拦,那么返回ok升酣,讓js層做最后的模式匹配取出占位符處的數(shù)據(jù),再利用runtime確定類型态罪。