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 动画效果、过渡效果的示例代码

    下面是详细讲解Vue动画效果、过渡效果的示例代码的攻略。 准备工作 在开始讲解之前,需要保证已经安装好Vue.js框架。另外,为了方便案例演示,我们需要借助Vue的官方库vue-router完成路由跳转。 首先,我们需要创建Vue项目,在项目中安装vue-router: // 创建Vue项目 vue create my-project // 安装vue-ro…

    Vue 2023年5月27日
    00
  • 解决vuejs 使用value in list 循环遍历数组出现警告的问题

    首先,我们需要了解这个警告的产生原因。在 Vue.js 中,当在组件中使用 v-for 循环遍历数组时,我们需要为每一个被遍历的元素指定一个唯一的 key 值,这样才能保证 DOM 元素更新时的高效性。 然而,在使用 v-model 绑定数据时,我们通常会使用 value 属性来表示选项的值,例如: <input type="checkbox…

    Vue 2023年5月29日
    00
  • Vue编程三部曲之将template编译成AST示例详解

    下面我将详细讲解“Vue编程三部曲之将template编译成AST示例详解”的完整攻略。 1. 什么是AST AST(Abstract Syntax Tree),即抽象语法树,是一种计算机科学中的树状数据结构。在编译原理中,AST是源代码的抽象语法结构的树状表现形式。它生成于解析阶段,通常由解析器创建,并被用作后续编译的基础。 2. 将template编译成…

    Vue 2023年5月27日
    00
  • vue函数@click.prevent的使用解析

    当我们使用Vue.js开发前端应用时,经常会在模版中使用@click指令来响应用户的点击事件,在一般情况下,点击事件会导致页面的跳转或刷新等行为,但是有时候我们需要控制点击事件的默认行为,这时候就需要使用@click.prevent修饰符。 @click.prevent能够阻止点击事件的默认行为,例如在表单的提交按钮中使用@click.prevent可以阻止…

    Vue 2023年5月28日
    00
  • vue 中简单使用mock的示例代码详解

    下面是“vue 中简单使用mock的示例代码详解”的完整攻略。 1、什么是Mock? Mock是一种基于规则自动生成数据模拟的工具,常用于代码调试以及前后端分离开发环境中数据接口的测试。Mock通过配置生成模拟数据,并可以实现前后端分离开发流程中前端提前获取数据模型,更好地完成页面的实现。 2、Mock.js介绍 Mock.js是一款前后端分离开发中常用的模…

    Vue 2023年5月28日
    00
  • vue3.0中setup使用(两种用法)

    下面是Vue 3.0中setup使用的完整攻略。 什么是setup setup是Vue 3.0中新引入的API,是Vue3.0新的组件选项。setup函数是在beforeCreate和created之间执行的,用于组件的初始化状态。它是一个接收props和context两个参数的函数,返回一个渲染函数可用的数据。通过setup函数,我们可以更好的组织代码,实…

    Vue 2023年5月28日
    00
  • 对vue生命周期的深入理解

    针对“对vue生命周期的深入理解”的完整攻略,我会进行以下方面的详细讲解: vue生命周期的概述 vue生命周期各个阶段的实现细节 vue生命周期使用的场景和注意点 示例一:使用beforeCreate钩子实现用户登录状态判断 示例二:使用组件销毁前的beforeDestroy钩子解除事件监听 1. vue生命周期的概述 Vue.js是一款轻量级MVVM框架…

    Vue 2023年5月28日
    00
  • 编写Vue项目,如何给数组的第一位添加对象数据

    要在Vue项目中给数组的第一位添加对象数据,可以使用以下步骤: 获取数组 在Vue项目中,可以通过引入Vue库的方式来获取数组。假设需要操作的数组名为arr,可以使用以下方式获取: let arr = this.arr; 构造对象数据 假设需要添加的对象数据为obj,可以使用以下方式进行构造: let obj = { name: "张三"…

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