基于vue cli重构多页面脚手架过程详解

yizhihongxing

下面我将为你详细讲解“基于vue-cli重构多页面脚手架过程详解”的完整攻略。

一、背景和意义

在日常开发中,使用多页面开发的情况比较常见,但是现有的脚手架不一定完全支持多页面开发。因此,我们需要对现有的多页面脚手架进行重构,以适应开发需求。本攻略就是基于Vue CLI对多页面脚手架进行重构的具体过程。

二、多页面脚手架原理

多页面脚手架就是将每个页面都单独打包成一个HTML文件的项目。这样可以避免不必要的代码冗余,并且可以方便快速地进行页面的增删改。

具体实现原理是通过html-webpack-plugin插件,在Webpack打包时向模板中注入生成的JS、CSS等文件,并输出HTML文件。

三、基于vue-cli搭建多页面脚手架

  1. 安装Vue CLI

首先,我们需要安装Vue CLI,用于创建Vue项目和管理依赖。具体命令如下:

npm install -g @vue/cli
  1. 创建Vue项目

创建Vue项目时,需要选择多页面模式。输入以下命令:

vue create my-project

在命令行交互界面中,选择 Manually select features,然后选择 BabelRouter,最后选择 Vue version 2.x

接着,根据提示选择 In dedicated config files,并选择 Yes

最后,选择 Pick a CSS pre-processor (LessSassStylus),并根据自己的喜好选择一种CSS预处理器即可。

  1. 配置页面入口

src 目录下新建一个 pages 文件夹,用于保存页面文件。每个页面都需要一个 .js.html 文件。以 index 页面为例,文件结构如下:

- src
    - pages
        - index
            - index.js
            - index.html

index.js 文件中写入以下代码:

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

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

index.html 文件中写入以下代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Index Page</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

注意,在 index.html 文件中需要有一个 idapp 的 div 标签。

  1. 配置Webpack

在Vue CLI中,Webpack的配置文件隐藏在node_modules中,我们需要使用 vue.config.js 文件进行自定义配置。

在项目根目录下创建一个 vue.config.js 文件,写入以下代码:

const path = require('path')
const glob = require('glob')

function resolve (dir) {
  return path.join(__dirname, dir)
}

function getEntry () {
  const entry = {}
  glob.sync('./src/pages/**/index.js').forEach(path => {
    const chunk = path.split('./src/pages/')[1].split('/index.js')[0]
    entry[chunk] = path
  })
  return entry
}

const pages = getEntry()

module.exports = {
  pages,
  chainWebpack: config => {
    Object.keys(pages).forEach(entryName => {
      config.plugins.delete(`html-${entryName}`)
      config.plugins.delete(`preload-${entryName}`)
      config.plugins.delete(`prefetch-${entryName}`)

      config.entry(entryName).add(pages[entryName]).end()

      config.plugin(`html-${entryName}`).use(HtmlWebpackPlugin, [{
        title: entryName,
        filename: `${entryName}.html`,
        template: `./src/pages/${entryName}/index.html`,
        chunks: ['chunk-vendors', 'chunk-common', entryName]
      }])
    })
  },
  configureWebpack: {
    resolve: {
      alias: {
        '@': resolve('src')
      }
    }
  }
}

以上代码的作用是:

  • 获取 src/pages 目录下所有的 index.js 入口文件;
  • 配置Webpack的 entry 和 output,每个页面对应的JS和HTML文件会生成在相应的目录下;
  • 配置 html-webpack-plugin 插件,自动生成HTML文件,并将生成的JS等文件自动注入HTML中。

  • 启动开发服务器

在命令行中输入以下命令启动开发服务器:

npm run serve

在浏览器中输入 http://localhost:8080/index.html 即可查看页面。

四、示例说明

这里提供两个示例,一个是简单的多页面脚手架,一个是基于ElementUI的多页面脚手架。

  1. 简单的多页面脚手架

代码示例:https://github.com/ruby215/vue-multiple-pages-starter

该示例基于Vue CLI 3.X重构了一个多页面脚手架,包括两个页面:首页和登录页。并且使用了Less作为CSS预处理器。

该示例的配置十分简单明了,容易上手。

  1. 基于ElementUI的多页面脚手架

代码示例:https://github.com/ruby215/element-ui-multiple-pages-starter

该示例基于Vue CLI 4.X重构了一个基于ElementUI的多页面脚手架,包括两个页面:首页和登录页。这里使用了ElementUI组件库,并使用了Sass作为CSS预处理器。

该示例的目录结构和上面的示例类似,但是在 vue.config.js 文件中需要添加ElementUI的按需加载代码,具体可以查看源码。

五、总结

以上就是基于Vue CLI重构多页面脚手架的全过程以及两个示例的介绍。多页面脚手架的使用可以更好地满足项目对于多页面的需求,并且可以提供更好的性能和体验。但是建议根据实际项目需求进行调整和优化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于vue cli重构多页面脚手架过程详解 - Python技术站

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

相关文章

  • vue – props 声明数组和对象操作

    当我们通过props传递数组或对象数据时,需要注意以下几点: 父组件向子组件传递数组或对象数据时,需要使用v-bind绑定数据,子组件中需要使用props接收数据。 子组件可以直接使用props接收到的数组或对象数据,也可以对其进行修改操作。但需要注意:Vue不建议直接修改props中的数据,否则可能会导致数据流不清晰,难以维护。 如果子组件需要修改prop…

    Vue 2023年5月28日
    00
  • vsCode中vue文件无法提示html标签的操作方法

    针对vsCode中vue文件无法提示html标签的情况,可以按照以下步骤进行操作: 安装Vetur插件 Vetur是一款vsCode的插件,主要提供语法高亮、格式化、代码片段和错误提示等功能,适用于Vue.js开发。因此,在使用vsCode编辑Vue文件时,我们需要安装并启用Vetur插件,这样就能够解决无法提示html标签的问题。 具体操作如下: 在vsC…

    Vue 2023年5月28日
    00
  • vue页面加载时的进度条功能(实例代码)

    为了实现页面加载时的进度条功能,我们可以利用vue-router路由导航守卫的特性,监听路由跳转前后的事件,来实现页面加载状态的追踪和展示。下面是具体实现的步骤: 1.在项目中安装nprogress插件 npm install –save nprogress 2.在路由配置文件中引入nprogress import Nprogress from ‘npro…

    Vue 2023年5月27日
    00
  • 轻量级富文本编辑器wangEditor结合vue使用方法示例

    下面是关于“轻量级富文本编辑器wangEditor结合vue使用方法示例”的完整攻略: 简介 wangEditor 是一个轻量级的基于javascript开发的富文本编辑器,使用方便、功能强大,适合于各种类型的Web项目。本文将讲解如何在vue项目中使用wangEditor. 安装 wangEditor 和 vue 首先需要在项目中安装wangEditor和…

    Vue 2023年5月27日
    00
  • vue如何动态设置class、动态设置style

    我很乐意为您介绍如何在Vue中动态设置class和style。 动态设置class 在Vue中,我们可以使用v-bind指令来动态绑定class。方式是将要绑定的class名以一个对象的形式传入。 例如,我们有一个布尔值isRed,当isRed为true时,我们需要给一个元素添加red这个class名。实现方式如下: <template> &lt…

    Vue 2023年5月28日
    00
  • vue ssr 指南详读

    Vue SSR指南详读攻略 什么是Vue SSR? Vue SSR是指Vue.js在服务端渲染(Server Side Rendering)时所使用的技术。服务端渲染是一种将Vue实例渲染成HTML字符串最后将其发到客户端的技术,这意味着在客户端浏览器解析JavaScript之前,网页的主要内容已经准备好了并呈现出来。通过服务端渲染,可以提升网页的首屏加载速…

    Vue 2023年5月28日
    00
  • axios向后台传递数组作为参数的方法

    当使用 axios 向后台传递数组作为参数时,可以通过两种方法来实现。 方法一:使用 URLSearchParams 对象 在前端将数组转换为 URLSearchParams 对象,再通过 axios 发送请求。具体代码如下: import axios from ‘axios’; const params = new URLSearchParams(); c…

    Vue 2023年5月29日
    00
  • 详解vue中v-model和v-bind绑定数据的异同

    详解Vue中v-model和v-bind绑定数据的异同: 1.什么是 v-model 和 v-bind v-model 和 v-bind 是 Vue 常用的两个指令,它们都用于进行数据绑定。其中: v-model 用于实现表单控件的双向绑定。 v-bind 用于单向绑定,可动态绑定 HTML 属性。 2.v-model 与 v-bind 的区别 2.1 数据…

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