news 2026/9/21 18:06:44

vue-router 3.x 安装指南:CDN、NPM、Vue CLI 插件与开发版构建全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vue-router 3.x 安装指南:CDN、NPM、Vue CLI 插件与开发版构建全解析

vue-router 3.x 安装指南:CDN、NPM、Vue CLI 插件与开发版构建全解析

【免费下载链接】vue-router🚦 The official router for Vue 2项目地址: https://gitcode.com/gh_mirrors/vu/vue-router

导读

本文以 Vue 2 官方路由管理器 vue-router 的安装文档(docs/zh/installation.md)为主线,系统讲解四种获取与接入 vue-router 的方式:直接下载 / CDN 引入、NPM 包管理、Vue CLI 插件化添加,以及从源码构建开发版。读完本文你将掌握每种方式的使用场景、操作步骤与注意事项,并能结合仓库源码(src/install.js、package.json)理解Vue.use()自动安装机制的底层原理,为后续编写路由配置、守卫与动态匹配打好基础。

vue-router 是 Vue.js 2 的官方路由管理器,与 Vue 核心深度集成,支持嵌套路由、路由参数、导航守卫、HTML5 history / hash 两种模式等能力。当前仓库对应 vue-router 3.6.5 版本(见 package.json),下文所有命令与产物均以该版本为准。

一、直接下载 / CDN 引入

1.1 获取最新版或指定版本

vue-router 官方文档提供基于 NPM 的 CDN 链接:

https://unpkg.com/vue-router@3/dist/vue-router.js

上面的链接会始终指向 NPM 上发布的最新版本,适合快速体验;生产环境更推荐锁定版本号或 Tag,避免 CDN 内容意外变更:

https://unpkg.com/vue-router@3.6.5/dist/vue-router.js

也可以使用@3.0.0这类早期版本号。从当前仓库 package.json 的unpkgjsdelivr字段可以看出,dist/vue-router.js正是为 CDN 场景准备的 UMD 构建产物:

"main": "dist/vue-router.common.js", "module": "dist/vue-router.esm.js", "unpkg": "dist/vue-router.js", "jsdelivr": "dist/vue-router.js"

仓库根目录的dist/目录中实际存在vue-router.jsvue-router.min.jsvue-router.esm.jsvue-router.esm.browser.jsvue-router.common.jsvue-router.mjs等产物,分别面向 script 标签、浏览器原生 ESM、打包工具 CommonJS 与 Node ESM 等不同消费场景。

1.2 在 Vue 之后加载,自动安装

<script>标签引入时,必须先加载 Vue,再加载 vue-router

<script src="/path/to/vue.js"></script> <script src="/path/to/vue-router.js"></script>

只要保证加载顺序正确,vue-router 会自动安装(在浏览器全局环境中,UMD 构建会调用install完成注册),无需额外调用Vue.use()

从源码看,这个"自动安装"的入口位于 src/index.js 与 src/entries/cjs.js:src/index.js引入./entries/cjs并默认导出VueRouter,而 UMD 构建产物在浏览器中执行时会通过VueRouter.install挂载到全局 Vue。核心的install函数定义在 src/install.js,它负责注册全局混入(beforeCreate中初始化_routerRoot_route)、在Vue.prototype上注入$router/$route属性、全局注册RouterLink/RouterView两个组件,并将路由守卫钩子的选项合并策略与created对齐。

1.3 手动在模块化工程中引入

如果使用 NPM 包但不走打包工具,也可以手动引入 ESM 版本并自行安装:

import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter)

二、NPM 安装与Vue.use()显式安装

2.1 安装命令

npm install vue-router

仓库当前版本为 3.6.5(对应 Vue 2.x)。如果你使用的是 npm 5+,package-lock.json会锁定精确版本;使用 yarn 的项目可执行等价的yarn add vue-router

2.2 为什么模块化工程必须Vue.use()

与 CDN 的自动安装不同,在模块化工程(Webpack / Rollup 等)中,必须通过Vue.use()显式安装路由功能

import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter)

原因在于:打包工具将 vue-router 作为普通 ES Module 引入后,它并不会自动感知宿主 Vue 实例,install必须被显式调用。Vue.use()会调用插件暴露的install方法,并保证同一插件只安装一次。

结合源码印证,src/install.js 的安装逻辑为:

export function install (Vue) { if (install.installed && _Vue === Vue) return install.installed = true _Vue = Vue // ... 全局混入、$router/$route 注入、组件注册 }

其中install.installed用于幂等保护——同一 Vue 构造函数只安装一次;而 src/router.js 中init方法也专门断言了install.installed,若未先执行Vue.use(VueRouter)就创建根实例,会得到 "not installed. Make sure to callVue.use(VueRouter)before creating root instance." 的警告。

安装完成后,需要把VueRouter实例传入根 Vue 实例:

const router = new VueRouter({ routes: [ { path: '/', component: Home } ] }) new Vue({ router, render: h => h(App) }).$mount('#app')

2.3 ESM 与命名导出

当前仓库还通过exports字段(package.json)暴露了子路径vue-router/composables(对应 composables.mjs),其中提供了useRouteruseRouteuseLinkonBeforeRouteUpdateonBeforeRouteLeave等组合式 API,供在 Vue 2.7 + Composition API 场景下使用。此外,ESM 入口 src/entries/esm.js 还导出了versionisNavigationFailureNavigationFailureTypeSTART_LOCATION以及RouterLink/RouterView组件。

三、通过 Vue CLI 插件添加

如果你正在使用 Vue CLI 项目,可以以项目插件的形式添加 Vue Router:

vue add router

该命令会帮你:

  • 自动生成Vue.use(VueRouter)及路由实例创建代码;
  • 生成两个示例路由(通常是一个首页与一个 About 页面)供参考;
  • 自动在main.js中接入路由实例。

重要警告vue add router覆盖你现有的App.vue(以及可能调整main.js等文件),因此在项目中执行该命令之前,请务必先备份这些文件。建议在 Git 工作区中确认当前改动已提交,或手动复制一份App.vue留存。

四、构建开发版(使用最新源码)

如果你需要使用尚未发布到 NPM 的最新开发版,需要从 GitHub 克隆仓库并自行构建:

git clone https://github.com/vuejs/vue-router.git node_modules/vue-router cd node_modules/vue-router npm install npm run build

几点说明:

  • 克隆到node_modules/vue-router目录后,项目中已有的import VueRouter from 'vue-router'无需改动即可直接解析到本地源码构建产物,适合在本地方案中先行验证新功能。
  • npm install安装全部开发依赖(Rollup、Babel、Flow、Jasmine、Nightwatch 等,见 package.json)。
  • npm run build对应脚本node build/build.js(package.json),会借助 Rollup 打包出dist/下的全部产物(UMD、ESM、CommonJS、压缩版等),供不同场景消费。
  • 构建完成后可运行npm run devnode examples/server.js)启动本地示例服务器,仓库 examples 目录提供了从基本路由、嵌套路由到导航守卫、数据获取等大量可直接运行的示例。
  • 若想跑完整测试,可执行npm test(依次执行 lint、Flow 类型检查、Jasmine 单元测试、Nightwatch 端到端测试与 TypeScript 类型测试);其中单元测试用例位于 test/unit/specs,例如 node.spec.js 专门覆盖服务端 / 非浏览器环境下的安装与使用。

五、四种方式的选型建议

方式适用场景安装/引入方式是否需要Vue.use()
CDN / 直接下载快速原型、静态页、无构建工具<script>标签不需要(自动安装)
NPM模块化工程(Webpack/Rollup/Vue CLI 等)npm install vue-router必须显式调用
Vue CLI 插件已有 Vue CLI 项目vue add routerCLI 自动生成
源码构建尝鲜最新 dev 版、贡献代码clone +npm run build按 NPM 方式使用

无论采用哪种方式,接入后建议从仓库文档 docs/zh/guide/essentials 的"起步"与动态路由匹配章节继续,完成路由表定义与<router-link>/<router-view>的组装,即可运行第一个多页面 SPA。

【免费下载链接】vue-router🚦 The official router for Vue 2项目地址: https://gitcode.com/gh_mirrors/vu/vue-router

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 18:01:46

DLSS 版本切换:不更新游戏,把超采样 DLL 换成你要的版本

DLSS 版本切换&#xff1a;不更新游戏&#xff0c;把超采样 DLL 换成你要的版本 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 游戏开着 DLSS 却一直闪屏&#xff0c;想换个版本试试&#xff0c;游戏文件又不敢动&…

作者头像 李华
网站建设 2026/9/21 18:01:23

Java理发预约系统架构设计与高并发实践

1. 理发预约系统技术架构解析这套理发预约系统采用了当前主流的Java技术栈&#xff0c;经过精心设计能够支撑百万级用户并发。作为从业多年的Java开发者&#xff0c;我认为这个架构选择既考虑了技术先进性&#xff0c;又充分照顾了美发行业的实际业务需求。1.1 后端框架选型Spr…

作者头像 李华
网站建设 2026/9/21 17:59:10

Vue中v-if与v-for优先级:从白屏事故到最佳实践

有不少同学问过我同一个问题&#xff1a;v-if和v-for到底能不能一起用&#xff1f;为什么网上有的说能、有的说不能&#xff1f;这个问题的答案非常反直觉——在Vue 2里"能跑"&#xff0c;但性能和语义都埋着雷&#xff1b;在Vue 3里直接报错&#xff0c;根本跑不起来…

作者头像 李华
网站建设 2026/9/21 17:48:35

V型调频信号在ISAR成像中的关键技术解析

1. 项目背景与研究意义在现代雷达信号处理领域&#xff0c;调频信号脉冲压缩技术和逆合成孔径雷达&#xff08;ISAR&#xff09;成像技术一直是研究热点。国防科技大学这篇硕士论文选题具有鲜明的工程应用背景和理论创新价值。我曾在某研究所参与过类似项目&#xff0c;深知这类…

作者头像 李华
网站建设 2026/9/21 17:41:54

深拷贝与浅拷贝全解析:从内存机制到工程实践避坑指南

别小看“深拷贝”和“浅拷贝”这六个字&#xff0c;我见过不少写了三五年业务的前端&#xff0c;一到对象复制就踩坑。有的是表单提交前改了数据&#xff0c;结果上一页的状态跟着变了&#xff1b;有的复制一份配置对象想改着玩&#xff0c;结果把全局配置给改了&#xff1b;还…

作者头像 李华