vue配置多页面的实现方法

关于Vue配置多页面的实现方法,下面是一个完整的攻略。

1. 安装依赖

在开始前,需要安装vue-loadervue-template-compiler这两个依赖。

npm install vue-loader vue-template-compiler --save-dev

2. 配置webpack

在webpack配置文件中,需要做如下修改。

  1. entry属性中配置多个入口文件。
module.exports = {
  // 入口文件
  entry: {
    page1: './src/page1/index.js',
    page2: './src/page2/index.js',
    // ...
  },
  // ...
}
  1. 定义多个HtmlWebpackPlugin实例,每个HtmlWebpackPlugin实例为一个页面生成HTML文件。
// 生成的文件名
const filenames = Object.keys(config.entry);

// 遍历生成HTML的配置列表
const htmlPlugins = filenames.map(name => {
  return new HtmlWebpackPlugin({
    // 文件名
    filename: `${name}.html`,
    // 模板文件
    template: `./src/${name}/index.html`,
    // 入口文件
    chunks: [name],
    // 压缩选项
    minify: isPro ? {...} : false,
    // ...
  })
})

module.exports = {
  // ...
  plugins: [
    // HtmlWebpackPlugin实例
    ...htmlPlugins,
    // ...
  ]
}

3. 编写页面文件

page1为例,页面文件目录结构如下:

src/
└── page1/
    ├── index.js
    ├── index.html
    └── App.vue

其中,index.html文件需要引入page1.js

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Page1</title>
</head>
<body>
  <div id="app"></div>
  <script src="./page1.js"></script>
</body>
</html>

index.js文件中需要导入Vue,以及App.vue组件,并且将App.vue组件挂载到#app元素上。

import Vue from 'vue'
import App from './App.vue'

new Vue({
  el: '#app',
  render: h => h(App)
})

App.vue文件中可以正常写Vue组件内容。

<template>
  <div>Hello, page1!</div>
</template>

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

4. 示例说明

假设现在我们需要开发两个页面,page1页面和page2页面。

示例1:查询页面

page1页面是一个查询页面,包含一个表单和一个查询结果列表。

  1. src/中新建文件夹,命名为page1,并在该文件夹中创建index.jsindex.htmlApp.vue三个文件,具体内容见上述示例。

  2. 新建Form.vueList.vue两个组件文件,在App.vue中引入这两个组件。

<template>
  <div>
    <Form></Form>
    <List></List>
  </div>
</template>

<script>
import Form from './Form.vue'
import List from './List.vue'

export default {
  name: 'App',
  components: { Form, List }
}
</script>
  1. Form.vue中编写表单内容。
<template>
  <form>
    <div>
      <label>日期</label>
      <input type="date" v-model="date">
    </div>
    <div>
      <button type="submit" @click.prevent="handleSubmit">查询</button>
    </div>
  </form>
</template>

<script>
export default {
  name: 'Form',
  data() {
    return {
      date: ''
    }
  },
  methods: {
    handleSubmit() {
      // 处理查询逻辑
    }
  }
}
</script>
  1. List.vue中编写查询结果列表内容。
<template>
  <table>
    <thead>
      <tr>
        <th>日期</th>
        <th>成交量</th>
        <th>价格</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="record in records" :key="record.date">
        <td>{{ record.date }}</td>
        <td>{{ record.volume }}</td>
        <td>{{ record.price }}</td>
      </tr>
    </tbody>
  </table>
</template>

<script>
export default {
  name: 'List',
  data() {
    return {
      records: [
        { date: '2020-01-01', volume: '100', price: '100' },
        { date: '2020-01-02', volume: '200', price: '98' },
        { date: '2020-01-03', volume: '150', price: '102' },
        // ...
      ]
    }
  }
}
</script>
  1. index.html中引入需要的样式文件和JS文件。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Page1</title>
  <link rel="stylesheet" href="./index.css">
</head>
<body>
  <div id="app"></div>
  <script src="./page1.js"></script>
</body>
</html>
  1. webpack.config.js中添加css-loadervue-style-loader配置。
module.exports = {
  module: {
    rules: [
      {
        // 处理CSS文件
        test: /\.css$/,
        use: ['vue-style-loader', 'css-loader']
      },
      // ...
    ]
  },
  // ...
}
  1. 运行npm run dev查看页面效果。

示例2:音乐播放器

page2页面是一个音乐播放器,包含音乐列表和播放控制条。

  1. src/中新建文件夹,命名为page2,并在该文件夹中创建index.jsindex.htmlApp.vue三个文件,具体内容见上述示例。

  2. 新建List.vueControls.vue两个组件文件,在App.vue中引入这两个组件。

<template>
  <div>
    <List></List>
    <Controls></Controls>
  </div>
</template>

<script>
import List from './List.vue'
import Controls from './Controls.vue'

export default {
  name: 'App',
  components: { List, Controls }
}
</script>
  1. List.vue中编写音乐列表内容。
<template>
  <ul>
    <li v-for="song in songs" :key="song.id" @click="handleSelect(song)">
      {{ song.name }}
    </li>
  </ul>
</template>

<script>
export default {
  name: 'List',
  props: { songs: Array },
  methods: {
    handleSelect(song) {
      this.$emit('select', song)
    }
  }
}
</script>
  1. Controls.vue中编写播放控制条内容。
<template>
  <div>
    <button @click="handlePrev">上一曲</button>
    <button @click="handlePlay">{{ isPlaying ? '暂停' : '播放' }}</button>
    <button @click="handleNext">下一曲</button>
  </div>
</template>

<script>
export default {
  name: 'Controls',
  props: { isPlaying: Boolean },
  methods: {
    handlePrev() {
      this.$emit('prev')
    },
    handlePlay() {
      this.$emit('play')
    },
    handleNext() {
      this.$emit('next')
    }
  }
}
</script>
  1. index.html中引入需要的样式文件和JS文件。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Page2</title>
  <link rel="stylesheet" href="./index.css">
</head>
<body>
  <div id="app"></div>
  <script src="./page2.js"></script>
</body>
</html>
  1. webpack.config.js中添加css-loadervue-style-loader配置。
module.exports = {
  module: {
    rules: [
      {
        // 处理CSS文件
        test: /\.css$/,
        use: ['vue-style-loader', 'css-loader']
      },
      // ...
    ]
  },
  // ...
}
  1. 运行npm run dev查看页面效果。

至此,关于Vue配置多页面的实现方法的攻略介绍完毕。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue配置多页面的实现方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Vue中实现v-for循环遍历图片的方法

    下面是如何使用Vue实现v-for循环遍历图片的完整攻略。 准备工作 首先需要准备好需要遍历显示的图片数组数据,每个数组元素包含图片的URL、标题等信息。例如: data() { return { images: [ { url: ‘https://example.com/image1.jpg’, title: ‘Image 1’ }, { url: ‘ht…

    Vue 2023年5月27日
    00
  • Vuex 入门教程

    Vuex 入门教程 什么是 Vuex? Vuex 是一个专为 Vue.js 设计的状态管理库。它能以一种可预测的方式管理应用的状态,并使得视图和状态之间的关系更加简单明了。 Vuex 核心概念 State Vuex 使用单一状态树,即用一个对象包含了全部的应用层级状态。 一个简单的例子: const store = new Vuex.Store({ stat…

    Vue 2023年5月27日
    00
  • vue-resource:jsonp请求百度搜索的接口示例

    关于“vue-resource:jsonp请求百度搜索的接口示例”的完整攻略,主要分为以下四步: 1.引入vue-resource库通过npm或者CDN的方式引入vue-resource库,使其可以在项目中被使用。具体代码为: <!– 使用CDN引入vue-resource –> <script src="https://cd…

    Vue 2023年5月28日
    00
  • vue数组对象排序的实现代码

    让我们进入正题——“Vue数组对象排序的实现代码的攻略”。 一、需求分析 排序是一种很常见的操作,对于Vue框架来说,数组排序操作也是十分常用的,因此,我们需要完成对Vue数组对象排序的实现代码攻略。 这里的实现代码需要包含以下三个方面的需求: 按照某一属性升序排序; 按照某一属性降序排序; 支持多个属性排序,即先按照第一个属性排序,如果第一个属性相等,则按…

    Vue 2023年5月28日
    00
  • Angular中的interceptors拦截器

    Angular是一个流行的JavaScript框架,该框架为Web应用程序提供了一个良好的基础。Interceptors 是 Angular 提供的拦截器机制。这个机制允许你拦截 HTTP 请求和响应,做一些访问控制和业务逻辑的处理并将它们传递到下一个拦截器或请求中,提供了一种简单但强大的方式来创建一个可重用的 HTTP 拦截器。 拦截器的基本结构和用法 拦…

    Vue 2023年5月28日
    00
  • 详解VUE项目中安装和使用vant组件

    好的!关于“详解VUE项目中安装和使用vant组件”的完整攻略,下面提供如下步骤和示例: 步骤1:安装vant 你可以通过npm或yarn安装vant,这里以npm为例,输入以下命令: npm install vant -S 步骤2:在VUE项目中使用vant 方法1:按需引入 由于vant的体积较大,我们可以只引入需要的组件,从而减小体积。在使用前,我们首…

    Vue 2023年5月28日
    00
  • Vue中直接操作数组索引不奏效的问题解读

    问题描述: 在Vue框架中,当我们直接操作数组中的索引时,界面上并没有实时渲染出对应的变化,而且在控制台上打印数组时,也并没有看到数组数据的变化。 原因分析: Vue框架的响应式数据更新机制,会在数据被Vue所观察时,在其内部维护一张映射表,用来记录数据和依赖该数据的组件。而这种索引方式不仅没有触发Vue的数据响应机制,也没有在原数组中新增更新记录,导致界面…

    Vue 2023年5月27日
    00
  • 详解Vue之事件处理

    详解Vue之事件处理 Vue.js 是一款流行的前端框架,它的事件处理能力非常强大。本文将详细讲解 Vue.js 中的事件处理,包括如何使用 v-on 指令绑定事件、如何传递参数和修饰符、以及如何使用自定义事件等。 绑定事件 在 Vue.js 中,我们可以使用 v-on 指令来绑定事件。省略了 v-on 直接写 @ 符号,作用相同,下面的几个示例中直接使用 …

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部