npm 包 vanillajs-router 使用教程

阅读时长 6 分钟读完

简介

vanillajs-router 是一个基于原生 JavaScript (Vanilla JavaScript)实现的路由库。它可以将 URL 映射到 JavaScript 函数上,从而实现对页面的控制和改变。

该库只有不到 3KB,非常轻量级,并且不依赖于其他任何库或框架。它相当于 Angular、React 或 Vue 的轻量级替代品,可以更灵活地控制你的应用程序。

该教程将深入介绍该库的使用方法,帮助你更好地理解和掌握该技术,从而更好地构建你的 JavaScript 应用程序。

安装

你可以通过 npm 安装 vanillajs-router

或者,你可以直接在 HTML 中引用该库:

使用

创建 router 实例

我们首先需要创建一个 vanillajs-router 的实例:

注册路由

要注册路由,可以使用 add 方法。该方法接受三个参数:

  • 规则:一个字符串,代表 URL 规则。可以包含参数,参数以 : 开头,例如:"/users/:id"
  • 回调函数:一个函数,当路由规则匹配时,将被调用。
  • 选项(可选):一个对象,包含以下可选属性:
    • listen:如果为 true,则注册后会立即开始监听该路由(默认为 false)。

以下是一个例子,我们注册了一个路由规则为 "/home"

监听路由

要监听路由,可以调用 listen 方法。该方法没有参数,当 URL 的哈希值(fragment)发生变化时,将自动调用路由规则中匹配的回调函数。

以下是一个例子,当 URL 中出现 #/home 时,将自动调用对应的路由:

跳转路由

要跳转路由,可以使用 go 方法。该方法接受一个字符串参数,代表要跳转的 URL。

以下是一个例子,我们跳转到 "/home" 路由:

带参数路由

我们可以在路由规则中使用参数,例如:

如上所示,我们可以在 params 参数中获取路由规则中的参数。

我们可以像这样跳转到带参数的路由:

嵌套路由

我们可以使用 router.add 来注册嵌套路由。例如:

-- -------------------- ---- -------
----- ------ - --- ------------------

--------------- -- -- -
  ---------------------
---

----- ----------- - --- ------------------

-------------------- -- -- -
  ------------------------
---

------------------------- -- -- -
  ----------------------------
---

-------------------- -- -- -
  ------------------------
  ---------------------
---

----------------

如上面的例子,我们创建了一个管理员路由,嵌套在主路由中。当 URL 中出现 #/admin 时,将启动管理员路由,并显示管理员主页。

更多 API

除了上面提到的 API,vanillajs-router 还提供了一些其他的 API,例如:

  • remove(rule):删除指定的路由规则。
  • navigate(url):在当前页面中导航到指定 URL,并触发对应的路由函数。
  • before(callback):注册一个全局的“前置钩子”,用于在路由函数调用前进行一些操作,例如登录认证。
  • after(callback):注册一个全局的“后置钩子”,用于在路由函数调用后进行一些操作,例如统计 PV 和 UV。

结论

vanillajs-router 是一个非常简单、灵活、易用的 JavaScript 路由库。它可以帮助我们更好地构建 JavaScript 应用程序,并提供了一些非常有用的 API,例如参数化路由、嵌套路由、前置钩子和后置钩子等。

当然,对于一个成熟的 Web 应用程序而言,可能需要更复杂、更强大的路由库,例如 React Router、Angular Router 或 Vue Router 等。但是,对于一些简单的应用程序而言,vanillajs-router 可以很好地满足我们的需求。

代码范例:

-- -------------------- ---- -------
----- ------ - --- ------------------

--------------- -- -- -
  ---------------------
---

-------------------- -- -- -
  -----------------------
---

------------------------ -------- -- -
  --------------- -- - ----------------
---

----- ----------- - --- ------------------

-------------------- -- -- -
  ------------------------
---

------------------------- -- -- -
  ----------------------------
---

-------------------- -- -- -
  ------------------------
  ---------------------
---

----------------

--------------------------------------------------------------- -- -- -
  --------------------
---

-------------------------------------------------------------- -- -- -
  ----------------------
---

--------------------------------------------------------------- -- -- -
  --------------------
---

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065b42c6eb7e50355dbd24

纠错
反馈