0

我的项目中有src/route/router.js

const Reservation = () => import("../components/Reservation.vue");
const Scheduler = () => import("../components/Scheduler.vue");

const routes = [
  {
    path: "/index.html#reservation",
    name: 'reservation',
    component: Reservation,
  },{
    path: "/index.html#scheduler",
    name: 'scheduler',
    component: Scheduler,
  }
];

export default routes;

我可以在我的代码中放置一个断点,它会在页面加载时触发它。

App.vue中,我渲染了Header.vue组件:

<template>
  <Header></Header>
</template>

<script>
import Header from './components/Header.vue';

export default {
  name: 'App',
  components: {
    Header
  }
}
</script>

header 组件链接到其他非 vue 页面,但在标记为 useRouter 的元素上,它呈现如下链接:

<li v-for='child in topLevel.children' :key='child.text'>
  <span v-if="child.useRouter"><router-link :to="child.link">{{ child.text }}</router-link></span>
  <span v-if="!child.useRouter"><a :href="child.link">{{ child.text }}</a></span>
</li>

在同一个 Header.vue 中包含在其模板中:

  ...
  </div>
     <router-view></router-view>
  </div>
</template>

我在Header.vue文件中有以下导入:

import { ref } from 'vue';
import axios from 'axios';

单击链接时,两个组件都不会加载到路由器中。单击时,该 url 不会随哈希标签而变化。但即使手动编辑 url 以匹配路由也不起作用。

当它们直接加载到页面上时,这两个组件都可以工作。即使单击应路由的元素,页面上也不会出现 JavaScript 错误。

4

1 回答 1

0

除了#urls 之外,此处发布的代码几乎是正确的。它只是不适用于托管在根以外的 URL 上的编译代码。

import { createWebHistory, createRouter } from "vue-router";
import Reservation from "../components/Reservation.vue";
import Scheduler from "../components/Scheduler.vue";

const routes = [
  {
    path: "/reservation",
    name: 'reservation',
    component: Reservation,
  },{
    path: "/scheduler",
    name: 'scheduler',
    component: Scheduler,
  }
];

const router = createRouter({
    history: createWebHistory(),
    routes
})

export default router;

因此,如果我使用 vue.config.js 执行以下操作,这实际上是有效的:

const path = require("path");

module.exports = {
  publicPath: '/vue/dist/index.html',
  css: {
    loaderOptions: {
      sass: {
        data: '@import "@../styles/_colors.scss";'
      }
    }
  },
  devServer: {
    proxy: "http://192.168.0.44",
  },
  configureWebpack: {
    module: {
      rules: [{
        test: /\.s(c|a)ss$/,
        use: [
          'vue-style-loader',
          'css-loader',
          {
            loader: 'sass-loader',
            // Requires sass-loader@^7.0.0
            options: {
              implementation: require('sass'),
              fiber: require('fibers')
            },
          },
        ],
      }, ],
    },
  }
};

当您单击在已编译代码上运行的路由器链接时,它会正确呈现,并且 url 设置正确,但您无法以这种方式浏览,因为生成的路径未在服务器上正确设置。但这是一种改进。

在 localhost:1081 开发服务器上,它运行正常,但我还没有弄清楚如何设置代理以使 ajax 工作。

于 2021-04-21T05:12:42.117 回答