SSR:集成vue-router4、axios

发布一下 0 0

vue-router

安装vue-router4

npm install vue-router@4

添加页面 home article

views/home/homeIndex.vueviews/article/articleIndex.vue

路由配置

import { createRouter, createMemoryHistory, createWebHistory } from 'vue-router'const Home = () => import('@/views/home/homeIndex.vue')const Article = () => import('@/views/article/articleIndex.vue')const routes = [  {    path: '/',    name: 'home',    component: Home,    meta: {      title: '',      keywords: '',      description: '',      keepAlive: false    }  },  {    path: '/article',    name: 'article',    component: Article,    meta: {      title: '',      keywords: '',      description: '',      keepAlive: false    }  }]const router = createRouter({  history: import.meta.env.SSR ? createMemoryHistory() : createWebHistory(),  routes})export default router

C++音视频开发学习资料点击莬费领取→音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

入口文件

main.js

import { createSSRApp } from 'vue'import App from './App.vue'import router from './router'import 'normalize.css'export const createApp = () => {  const app = createSSRApp(App)  app.use(router)  return { app, router }}

entry-client.js

import { createApp } from "./main";const { app, router } = createApp()router.isReady().then(() => {  app.mount('#app')})

entry-server.js

import { createApp } from "./main"import { renderToString } from 'vue/server-renderer'export async function render(url) {  const { app, router } = createApp()  await router.push(url)  await router.isReady()  const html = renderToString(app)  return html}

App.vue 路由跳转

<template>  <button @click="router.push('/')">home</button> | <button @click="router.push('/article')">article</button>  <router-view></router-view></template><script setup>import { useRouter } from "vue-router";const router = useRouter()</script><style lang="scss" scoped></style>

axios

安装axios

npm install axios -S

简单封装axios

import axios from 'axios';import qs from 'qs';export class Axios {  constructor() {    this.axios = axios;    this.axios.defaults.baseURL = 'http://localhost:3001/vite-ssr/';    this.axios.defaults.validateStatus = function (status) {      return status >= 200 && status < 600; // default    };    //默认10s的超时时间    this.axios.defaults.timeout = 10000;  }  /**   * axios请求方法   */  apiPost(config) {    let requestOption = this._requestInterceptor(config);    return new Promise((resolve, reject) => {      this.axios.request(requestOption).then(        async res => {          let defData = res.data;          let { data, result, message, msg, code } = defData;          resolve(defData);        },        error => {          console.log('server error')          reject(error);        }      );    });  }  _requestInterceptor(config) {    if (config.method === 'post' || config.method === 'put') {      config.data = qs.stringify(config.params);    }    config.params = config.method === 'get' ? config.params : '';    return config;  }}

C++音视频开发学习资料点击莬费领取→音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

接口引入&使用

api/index.js

export { default as ArticleApi } from './article';

api/article.js

import { Axios } from '@/utils/axios';class ArticleApi extends Axios {  getArticleList(params) {    return this.apiPost({      url: 'articles/list',      method: 'get',      params    });  }}export default new ArticleApi();

使用

import { ArticleApi } from "@/api";import { onMounted, ref } from "vue";const imgList = ref([]);onMounted(() => {  getArticles();});const getArticles = async () => {  let res = await ArticleApi.getArticleList();  imgList.value = res.data;};

效果预览,使用mockjs模拟数据

SSR:集成vue-router4、axios

如果你对音视频开发感兴趣,或者对本文的一些阐述有自己的看法,可以在下方的留言框,一起探讨。

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/167420.html