Grain Store Learning Diary (24): enrutamiento de puerta de enlace de configuración de clasificación de tres niveles y reescritura de ruta

Configurar gulimall-product en nacos

Primero, la dependencia común se ha agregado a la dependencia pom,
por lo que solo necesita modificar application.yml

spring:
  application:
    name: gulimall-product
  cloud:
    nacos:
      discovery:
        server-addr: 123.57.234.28:8848

Iniciar clase agregar anotación de registro de servicio @EnableDiscoveryClient


@EnableDiscoveryClient
@MapperScan("com.xfwang.gulimall.product.dao")
@SpringBootApplication
public class GulimallProductApplication {
    
    

Solo reinicia

Configurar renren-fast a nacos

Este otro es consistente con el anterior, pero más instrucciones pegan directamente el código
yml

spring:
  application:
    name: renren-fast
  cloud:
    nacos:
      discovery:
        server-addr: 123.57.234.28:8848

pom.xml

<dependency>
			<groupId>com.xfwang.gulimall</groupId>
			<artifactId>gulimall-common</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

Comenzar la clase


@EnableDiscoveryClient
@SpringBootApplication
public class RenrenApplication {
    
    

Agregar menú del sistema de gestión en segundo plano

Configurar menú de fondo

Inicie el proyecto renren-fast-vue, el proyecto renren-fast dependiente ya se está ejecutando en segundo plano

Iniciar sesión, admin / admin

Agregue un catálogo de administración de productos en la administración del sistema.
La URL de configuración del menú de la categoría recientemente agregada mantenimiento es producto / categoría

Componentes de escritura

Escriba el componente de página
src / vistas / módulos /
carpeta de nuevo producto en el proyecto vue
Crear archivo category.vue

Busque el componente del menú de árbol en element-ui y cópielo directamente. Puedes ver los resultados preliminares

category.vue

<!--  -->
<template>
  <el-tree
    :data="data"
    :props="defaultProps"
    @node-click="handleNodeClick"
  ></el-tree>
</template>

<script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';

export default {
    
    
  //import引入的组件需要注入到对象中才能使用
  components: {
    
    },
  data() {
    
    
    return {
    
    
      data: [
        {
    
    
          label: "一级 1",
          children: [
            {
    
    
              label: "二级 1-1",
              children: [
                {
    
    
                  label: "三级 1-1-1",
                },
              ],
            },
          ],
        },
        {
    
    
          label: "一级 2",
          children: [
            {
    
    
              label: "二级 2-1",
              children: [
                {
    
    
                  label: "三级 2-1-1",
                },
              ],
            },
            {
    
    
              label: "二级 2-2",
              children: [
                {
    
    
                  label: "三级 2-2-1",
                },
              ],
            },
          ],
        },
        {
    
    
          label: "一级 3",
          children: [
            {
    
    
              label: "二级 3-1",
              children: [
                {
    
    
                  label: "三级 3-1-1",
                },
              ],
            },
            {
    
    
              label: "二级 3-2",
              children: [
                {
    
    
                  label: "三级 3-2-1",
                },
              ],
            },
          ],
        },
      ],
      defaultProps: {
    
    
        children: "children",
        label: "label",
      },
    };
  },
  methods: {
    
    
    handleNodeClick(data) {
    
    
      console.log(data);
    },
  },
  //监听属性 类似于data概念
  computed: {
    
    },
  //监控data中的数据变化
  watch: {
    
    },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
    
    },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {
    
    },
  beforeCreate() {
    
    }, //生命周期 - 创建之前
  beforeMount() {
    
    }, //生命周期 - 挂载之前
  beforeUpdate() {
    
    }, //生命周期 - 更新之前
  updated() {
    
    }, //生命周期 - 更新之后
  beforeDestroy() {
    
    }, //生命周期 - 销毁之前
  destroyed() {
    
    }, //生命周期 - 销毁完成
  activated() {
    
    }, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style scoped>
</style>

Vuelva a escribir la ruta de acceso y configure el acceso de enrutamiento

Si desea recuperar datos del fondo, no debe escribirlos hasta la muerte

Luego debe reescribir la ruta
category.vue para eliminar datos [] y
agregar una llamada al método de fondo
getDataList ()

export default {
    
    
  //import引入的组件需要注入到对象中才能使用
  components: {
    
    },
  data() {
    
    
    return {
    
    
      data: [ ],
      defaultProps: {
    
    
        children: "children",
        label: "label",
      },
    };
  },
  methods: {
    
    
    handleNodeClick(data) {
    
    
      console.log(data);
    },
    getDataList () {
    
    
        this.dataListLoading = true
        this.$http({
    
    
          url: this.$http.adornUrl('/product/category/list/tree'),
          method: 'get',
        }).then(({
    
    data}) => {
    
    
            console.log(data)
        })
      
  },

Configurar la puerta de enlace de enrutamiento
static / config / index.js

Modifique la ruta de acceso a la puerta de enlace, y la puerta de enlace llamará uniformemente a la
interfaz api para solicitar la dirección

/**
 * 开发环境
 */
;(function () {
    
    
  window.SITE_CONFIG = {
    
    };

  // api接口请求地址
  window.SITE_CONFIG['baseUrl'] = 'http://localhost:8070/api';

  // cdn地址 = 域名 + 版本号
  window.SITE_CONFIG['domain']  = './'; // 域名
  window.SITE_CONFIG['version'] = '';   // 版本号(年月日时分)
  window.SITE_CONFIG['cdnUrl']  = window.SITE_CONFIG.domain + window.SITE_CONFIG.version;
})();

Modificar la puerta de enlace en segundo plano para agregar reglas de enrutamiento

apllication.yml aumentado

        - id: admin_route
          uri: lb://renren-fast # 路由给renren-fast
          predicates:  # 什么情况下路由给它
            - Path=/api/** # 默认前端项目都带上api前缀,就是我们前面题的localhost:88/api
          filters:
            - RewritePath=/api/(?<segment>.*),/renren-fast/$\{
    
    segment}  # 把/api/* 改变成 /renren-fast/*
 # fast找

Reinicie el proyecto vue y podrá ver que la interfaz para acceder al código de verificación se ha convertido

http://localhost:8070/api/captcha.jpg?uuid=0c95e313-f1c3-4a25-867f-fd28f6088f68

El código de verificación se cargó correctamente, pero se informa el error de inicio de sesión. Aquí están involucrados problemas entre dominios, que se resolverán en la siguiente sección.

Supongo que te gusta

Origin blog.csdn.net/menxinziwen/article/details/115189601
Recomendado
Clasificación