在JS中找到路线的最快方法是什么?

时间:2019-04-14 04:39:36

标签: javascript

我正在编写一个小型路由器,仅路由/user/info之类的路径,而字符串中没有任何特殊的正则表达式或变量。我当前的实现就像

let routes = {
  user: {
     path: "/user",
     routes: {
         info: {
             path: "/user/info",
             routes: {}
         }
     }
  }
};

然后基本上将其自身视为链接列表,并按对象名称查找对象,例如routes["user"]["info"];有一些我不知道的更快的路由方法吗?我什么都找不到。

2 个答案:

答案 0 :(得分:0)

在给定代码routes["user"]["info"]中未定义。

建议:您可以为查询创建map

首先查找“用户”,然后查找其路线“信息”。

答案 1 :(得分:-1)

我猜没有人真正理解我的问题。无论如何,似乎在JS中找到“事物”(例如/user/add之类的路线)的最快方法是

  1. 使用字符串的switch语句
  2. 使用字符串的if语句
  3. 使用数字的转换语句
  4. 使用数字if语句
  5. 使用字符串映射(哇!)

以上5种方法的速度均相同。映射与原始字符串的switch语句一样快的事实令人惊讶。众所周知,使用对象反射非常慢。为创建地图的人致敬!令人惊讶的是,将数字与对象反射配合使用确实非常慢。也许因为每个数字都必须转换为字符串键?不确定。

无论如何,使用地图!

这是我的js perf

It also seems to scale