Table of Contents
The development history of front-end routing
1. Back-end routing stage
2. Front-end and back-end separation
Get to know vue-router
router-link (supplementary)
Route lazy loading
Dynamic routing
1. Basics of dynamic routing Match
2. 获取动态路由的值
3. NotFound
路由的嵌套
编程式导航
1. 代码的页面跳转
2. query 方式的参数
3. 替换当前的位置
4. 页面的前后跳转
动态添加路由
路由导航守卫
1. 登录守卫功能
2. 其他导航守卫
Home Web Front-end Vue.js An article that explains Vue routing in detail: vue-router

An article that explains Vue routing in detail: vue-router

Sep 01, 2022 pm 07:43 PM
vue vue3 vue-router

This article will give you a detailed explanation of Vue Vue-Router in the FamilyBucket and learn about routing knowledge. I hope it will be helpful to everyone!

An article that explains Vue routing in detail: vue-router

The development history of front-end routing

The concept of routing appeared in software engineering and was first implemented in back-end routing , the reason is that the development of the web has mainly gone through the following stages:

  • Back-end routing stage;
  • Front-end and back-end separation stage;
  • Single page rich application (SPA) );

1. Back-end routing stage

Early website development The entire HTML page is rendered by the server, that is The server directly produces and renders the corresponding HTML page and returns it to the client for display. As shown in the picture:

An article that explains Vue routing in detail: vue-router

Advantages: Conducive to SEO optimization

Disadvantages: The entire page is maintained by back-end personnel, and HTMl code and data corresponding logic will be mixed together and written And maintenance is very poor.

2. Front-end and back-end separation

**Front-end rendering:**The static resources involved in each request will be obtained from the static resource server, these resources include HTML CSS JS, and then render the resources returned by these requests on the front end. Every request from the client will request a file from the static resource server. At this time, the backend is just responsible for providing the API.

Separation of front-end and back-end:

  • The back-end is only responsible for providing the API, and the front-end obtains data through Ajax and renders the data to the page through JavaScript
  • The back-end focuses on data, the front-end focuses on interaction and visualization

Single page (SPA) rich application stage:

  • Separate the front-end and back-end A layer of front-end routing is added on the basis of The front-end maintains a set of routing rules
  • Core: Change the page URL, but do not refresh the page.

Get to know vue-router

Install Vue-Router

npm install vue-router

Steps:

  • Create routing components that need to be mapped [Related recommendations: vue video tutorial]

  • Create routing objects through createRouter, and pass in routes and history mode

  • Use app to register routing object (use method)

  • Route usage: through and and

An article that explains Vue routing in detail: vue-router

An article that explains Vue routing in detail: vue-router

import { createRouter, createWebHashHistory } from "vue-router"

import Home from "../views/Home.vue"
import About from "../views/About.vue"
// 创建一个路由:映射关系
const router = new createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: "/",
      redirect: "/home"
    },
    {
      path: "/home",
      component: Home
    },
    {
      path: "/about",
      component: About
    }
  ]
})

export default router

Supplement: Other attributes of the route

name attribute: record the unique name of the route ;

meta attribute: custom data

router-link actually has many properties that can be configured :

  • to attribute: is a string or an object
  • replace attribute: If the replace attribute is set, when clicked, router.replace() will be called instead. router.push(). Generally, the replace attribute is not used, and the user experience is not very good.
  • active-class attribute: Set the class applied after activating the a element. The default is router-link-active
  • exact-active-class attribute: When the link is accurately activated, it is applied to rendering. class, the default is router-link-exact-active;

Route lazy loading

Problem: When packaging and building applications, the JavaScript package will become very Large, affecting page loading

Solution: Split the components corresponding to different routes into different code blocks, and then load the corresponding components when the route is accessed. It can also improve the efficiency of first-screen rendering. Among them, Vue-Router supports dynamic loading of components by default. Because component can be passed in a component or receive a function, the function needs to put back a Promise. The import function returns a Promise

An article that explains Vue routing in detail: vue-router

Dynamic routing

1. Basics of dynamic routing Match

Maps routes for a given matching pattern to the same component. You can load different routes according to your different needs to achieve different implementations and page renderings.

The use of dynamic routing is generally used in conjunction with role permission control.

For example: There is a User component, which should render to all users, but the user's ID is different. We can do this by using a dynamic field in the path, which we call a path parameter. Then implement the jump in .

An article that explains Vue routing in detail: vue-router

An article that explains Vue routing in detail: vue-router

2. 获取动态路由的值

获取动态路由的值(例如上面例子中 用户id 123),在template中,直接通过 $route.params获取值。

  • 在created中,通过 this.$route.params获取值
  • 在setup中,我们要使用 vue-router库给我们提供的一个hook useRoute

An article that explains Vue routing in detail: vue-router

3. NotFound

对于没有匹配到相应的路由,我们可以给用户匹配一个固定的页面。通过 $route.params.pathMatch获取到传入的参数

An article that explains Vue routing in detail: vue-router

路由的嵌套

组件的本身也有组件需要内部切换,这个时候就可以采用嵌套路由,在第一层路由中也使用router-view来占位之后需要渲染的组件。

An article that explains Vue routing in detail: vue-router

{
      path: "/home",
      component: () => import("../views/Home.vue"),
      children: [
        {
          path: "/show",
          component: () => import("../views/component/show.vue")
        },
        {
          path: "/detail",
          component: () => import("../views/component/detail.vue")
        }
      ]
    },

编程式导航

1. 代码的页面跳转

通过代码来控制页面的跳转

栗子:点击一个按钮跳转页面

An article that explains Vue routing in detail: vue-router

2. query 方式的参数

通过query的方式来传递参数,在界面中通过 $route.query 来获取参数。

An article that explains Vue routing in detail: vue-router

3. 替换当前的位置

使用push的特点是压入一个新的页面,那么在用户点击返回时,上一个页面还可以回退,但是如果我们希望当前页面是一个替换 操作,那么可以使用replace。这个时候已经不能回退了。

4. 页面的前后跳转

  • router 的 go 方法(指定向前(向后)跳转几步)

  • router 的back 方法 (回溯历史,向后一步)

  • router 的forward 方法(历史中前进,向前一步)

动态添加路由

场景:根据用户的不同权限,注册不同的路由

An article that explains Vue routing in detail: vue-router

补充:路由的其他方法

删除路由有以下三种方式:

  • 方式一:添加一个name相同的路由;
  • 方式二:通过removeRoute方法,传入路由的名称;
  • 方式三:通过addRoute方法的返回值回调;

router.hasRoute():检查路由是否存在。

router.getRoutes():获取一个包含所有路由记录的数组。

路由导航守卫

vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航

全局的前置守卫==beforeEach==是在导航触发时会被回调的,它有两个参数:

  • to:即将进入的路由Route对象;
  • from:即将离开的路由Route对象;

返回值:

  • false:取消当前导航;
  • 不返回或者undefined:进行默认导航;
  • 返回一个路由地址:可以是一个String类型的路径也可以是一个对象

An article that explains Vue routing in detail: vue-router

1. 登录守卫功能

场景:只有登录了的用户才能看到的页面

An article that explains Vue routing in detail: vue-router

2. 其他导航守卫

Vue还提供了很多的其他守卫函数,目的都是在某一个时刻给予回调,可以更好的控制程序的流程或者功能

[导航守卫](导航守卫 | Vue Router (vuejs.org))

流程:

  • 导航被触发。

  • 在失活的组件里调用 beforeRouteLeave 守卫。

  • 调用全局的 beforeEach 守卫。

  • 在重用的组件里调用 beforeRouteUpdate 守卫(2.2+)。

  • 在路由配置里调用 beforeEnter。  解析异步路由组件。

  • 在被激活的组件里调用 beforeRouteEnter。

  • Call the global beforeResolve guard (2.5).

  • Navigation confirmed.

  • Call the global afterEach hook.

  • Trigger DOM update.

  • Call the callback function passed to next in the beforeRouteEnter guard, and the created component instance will be passed in as a parameter of the callback function.

For more programming-related knowledge, please visit: Introduction to Programming! !

The above is the detailed content of An article that explains Vue routing in detail: vue-router. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to build a component library with Vue? How to build a component library with Vue? Jul 10, 2025 pm 12:14 PM

Building a Vue component library requires designing the structure around the business scenario and following the complete process of development, testing and release. 1. The structural design should be classified according to functional modules, including basic components, layout components and business components; 2. Use SCSS or CSS variables to unify the theme and style; 3. Unify the naming specifications and introduce ESLint and Prettier to ensure the consistent code style; 4. Display the usage of components on the supporting document site; 5. Use Vite and other tools to package as NPM packages and configure rollupOptions; 6. Follow the semver specification to manage versions and changelogs when publishing.

How to use PHP to develop a Q&A community platform Detailed explanation of PHP interactive community monetization model How to use PHP to develop a Q&A community platform Detailed explanation of PHP interactive community monetization model Jul 23, 2025 pm 07:21 PM

1. The first choice for the Laravel MySQL Vue/React combination in the PHP development question and answer community is the first choice for Laravel MySQL Vue/React combination, due to its maturity in the ecosystem and high development efficiency; 2. High performance requires dependence on cache (Redis), database optimization, CDN and asynchronous queues; 3. Security must be done with input filtering, CSRF protection, HTTPS, password encryption and permission control; 4. Money optional advertising, member subscription, rewards, commissions, knowledge payment and other models, the core is to match community tone and user needs.

Free entrance to Vue finished product resources website. Complete Vue finished product is permanently viewed online Free entrance to Vue finished product resources website. Complete Vue finished product is permanently viewed online Jul 23, 2025 pm 12:39 PM

This article has selected a series of top-level finished product resource websites for Vue developers and learners. Through these platforms, you can browse, learn, and even reuse massive high-quality Vue complete projects online for free, thereby quickly improving your development skills and project practice capabilities.

How to develop AI intelligent form system with PHP PHP intelligent form design and analysis How to develop AI intelligent form system with PHP PHP intelligent form design and analysis Jul 25, 2025 pm 05:54 PM

When choosing a suitable PHP framework, you need to consider comprehensively according to project needs: Laravel is suitable for rapid development and provides EloquentORM and Blade template engines, which are convenient for database operation and dynamic form rendering; Symfony is more flexible and suitable for complex systems; CodeIgniter is lightweight and suitable for simple applications with high performance requirements. 2. To ensure the accuracy of AI models, we need to start with high-quality data training, reasonable selection of evaluation indicators (such as accuracy, recall, F1 value), regular performance evaluation and model tuning, and ensure code quality through unit testing and integration testing, while continuously monitoring the input data to prevent data drift. 3. Many measures are required to protect user privacy: encrypt and store sensitive data (such as AES

How to use PHP to implement AI content recommendation system PHP intelligent content distribution mechanism How to use PHP to implement AI content recommendation system PHP intelligent content distribution mechanism Jul 23, 2025 pm 06:12 PM

1. PHP mainly undertakes data collection, API communication, business rule processing, cache optimization and recommendation display in the AI content recommendation system, rather than directly performing complex model training; 2. The system collects user behavior and content data through PHP, calls back-end AI services (such as Python models) to obtain recommendation results, and uses Redis cache to improve performance; 3. Basic recommendation algorithms such as collaborative filtering or content similarity can implement lightweight logic in PHP, but large-scale computing still depends on professional AI services; 4. Optimization needs to pay attention to real-time, cold start, diversity and feedback closed loop, and challenges include high concurrency performance, model update stability, data compliance and recommendation interpretability. PHP needs to work together to build stable information, database and front-end.

How to build a Vue application for production? How to build a Vue application for production? Jul 09, 2025 am 01:42 AM

Deploying Vue applications to production environments requires optimization of performance, ensuring stability and improving loading speed. 1. Use VueCLI or Vite to build a production version, generate a dist directory and set the correct environment variables; 2. If you use VueRouter's history mode, you need to configure the server to fallback to index.html; 3. Deploy the dist directory to Nginx/Apache, Netlify/Vercel or combine CDN acceleration; 4. Enable Gzip compression and browser caching strategies to optimize loading; 5. Implement lazy loading components, introduce UI libraries on demand, enable HTTPS, prevent XSS attacks, add CSP headers, and restrict third-party SDK domain names to enhance security.

How to use PHP to develop e-commerce backend monetization PHP e-commerce system architecture and profit strategy How to use PHP to develop e-commerce backend monetization PHP e-commerce system architecture and profit strategy Jul 25, 2025 pm 06:33 PM

1. The mainstream frameworks of PHP e-commerce backend include Laravel (fast development, strong ecology), Symfony (enterprise-level, stable structure), Yii (excellent performance, suitable for standardized modules); 2. The technology stack needs to be equipped with MySQL Redis cache, RabbitMQ/Kafka message queue, Nginx PHP-FPM, and front-end separation is considered; 3. High concurrency architecture should be layered and modular, database read and write separation/distributed database, accelerated with cache and CDN, asynchronous processing of tasks, sharing of load balancing and Session, gradually microservice, and establish a monitoring and alarm system; 4. Multiple monetization paths include product price difference or platform commission, site advertising, SaaS subscription, customized development and plug-in market, API connection

PHP creates customer management system monetization PHPCRM system design and application PHP creates customer management system monetization PHPCRM system design and application Jul 25, 2025 pm 06:03 PM

Designing a PHPCRM system that is both practical and monetizable, first of all, we must create an MVP that includes core functions such as customer management, sales tracking, and automation processes, and adopt a modular architecture (such as Laravel) to support subsequent value-added function expansion; 2. Lower the usage threshold through intuitive UX design (such as Vue.js front-end), so that users are willing to pay continuously; 3. Use data analysis reports (such as sales funnels, performance analysis) to help customers improve decision-making efficiency, and free basic functions and advanced reports to achieve monetization; 4. Implement a multi-tenant architecture to ensure data isolation, laying the foundation for the SaaS model, and avoiding later reconstruction affecting commercialization; 5. Monetization not only relies on subscription fees, but also benefits through API openness, customized development, technical support and plug-in market diversified market

See all articles