详解vue-cli多页面工程实践

yizhihongxing

详解vue-cli多页面工程实践

简介

在实际项目中,往往需要构建多页应用来满足不同的功能需求。本文将详细介绍如何使用vue-cli构建多页应用。

准备工作

  • 安装node.js
  • 安装vue-cli

创建工程

打开终端,执行以下命令来创建vue-cli的多页应用工程:

vue init webpack my-project

这里将工程命名为my-project,你可以自定义名称。在这个过程中,有几个需要注意的地方:

  • 是否安装 vue-router:不需要安装,因为多页应用不需要使用vue-router。
  • 是否使用 ESLint:可以选择使用,根据项目需要决定。
  • 是否使用 Karma + Mocha:不需要使用,因为多页应用不需要单元测试。

目录结构

创建工程后,工程结构如下:

my-project
├── build
├── config
├── node_modules
├── src
│   ├── assets
│   ├── components
│   ├── views
│   ├── App.vue
│   └── main.js
├── static
├── .babelrc
├── .editorconfig
├── .gitignore
├── index.html
└── package.json

重要的目录是src目录,它包含了所有的源代码和页面模板。views目录用于存放多个页面,每个页面一个文件夹,文件夹里面至少有一个html和一个js文件。

配置多页应用

多页应用的配置依赖于webpack。打开/config/index.js文件,修改module.exports对象,添加如下代码:

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

function getEntry(globPath) {
  let entries = {}
  glob.sync(globPath).forEach(function(entry) {
    let basename = path.basename(entry, path.extname(entry))
    entries[basename] = entry
  })
  return entries
}

module.exports = {
  // ...
  // 修改这里
  pages: getEntry('./src/views/**/*.js'),
}

这个代码做了什么呢?首先,它使用glob库来匹配src/views目录下的所有js文件,然后将js文件名作为页面名,作为pages的键,将js文件作为pages的值。这样,我们就完成了多个页面的配置。

创建页面模板

多页应用需要为每个页面提供独立的HTML模板,可以在这个模板中引入不同的JS文件。建议将模板以.html或者.ejs文件来保证代码的可维护性。

在/src/views目录中,创建一个名为example的目录,在其中添加一个名为index.html的文件,代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Example</title>
  </head>
  <body>
    <div id="app"></div>
    <script src="./index.js"></script>
  </body>
</html>

这里只需要一个div用于vue的挂载,和一个script标签用于引入入口JS文件。

创建页面脚本

在/src/views/example目录中,创建一个名为index.js的文件,代码如下:

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

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

这里的代码和单页应用是一样的,只不过挂载的位置从#app变成了example.html中的#app。

运行代码

上面的代码已经创建完毕,可以执行下面的命令来运行项目

npm run dev

这个命令会启动一个开发服务器,打开 http://localhost:8080/example.html 即可看到页面效果。

完整示例代码可在GitHub中下载获取。

示例说明1: 添加第二个页面

为了演示如何添加一个新的页面,我们接下来再添加一个名为about的页面。

首先在/src/views目录下,创建一个名为about的目录,在其中添加一个名为index.html的文件。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>About</title>
  </head>
  <body>
    <div id="app"></div>
    <script src="./index.js"></script>
  </body>
</html>

然后在about目录下,再创建一个名为index.js的文件。

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

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

这里的代码也是非常简单,和示例一一样的,只不过添加了一个props来传递组件的信息。

继续执行npm run dev,然后在浏览器中打开http://localhost:8080/about.html,即可看到about页面的效果。这个时候,Vue组件会展示About Page的信息。

示例说明2: 使用CSS模块

在多页应用中,往往需要通过CSS将各个页面的样式区分开来。使用CSS模块可以很好地解决这个问题。

首先,保证我们的项目支持CSS模块,打开/config/index.js文件,找到module.exports对象,添加如下代码:

module: {
  rules: [
    // 添加这一行
    { test: /\.s(c|a)ss$/, use: ['vue-style-loader', 'css-loader', 'sass-loader'] },
  ]
},

这里添加了一个Sass Loader,用于处理.scss文件。

然后,在/src/views/example目录中,创建一个名为index.scss的文件,代码如下:

.hello {
  font-size: 40px;
}

这里的样式非常简单,只是将字体设置为了40px来区分其他页面。

接着,修改/src/components/HelloWorld.vue文件,如下:

<template>
  <div class="hello">
    {{ msg }}
  </div>
</template>

<!-- 添加这一行 -->
<style lang="scss">
@import "@/views/example/index.scss";
</style>

<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  }
}
</script>

在这里,我们将刚才写的index.scss样式引入了进来。

最后,重新运行npm run dev,打开http://localhost:8080/example.html查看页面效果,应该可以看到页面中的Hello World字体已经变成了40px。

总结

通过以上的步骤,我们成功地配置了vue-cli多页应用的环境,并创建了多个页面,在页面之间应用不同的样式和脚本,来满足各种需求。

相关的代码可以在GitHub中下载、查看。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解vue-cli多页面工程实践 - Python技术站

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

相关文章

  • vite + react +typescript 环境搭建小白入门教程

    下面是”vite + react +typescript 环境搭建小白入门教程”的完整攻略: 1. 安装 Node.js Node.js是运行在服务器端的JavaScript运行环境,需要先安装好这个软件才可以进行后续的搭建。在Node.js官方网站下载相应的可执行安装程序,然后按照指引进行安装。 2. 初始化项目 打开一个命令行终端,进入项目所在目录,并执…

    Vue 2023年5月28日
    00
  • 浅谈vuex之mutation和action的基本使用

    概述 Vuex是状态管理库,它可以让我们更好地管理应用程序状态。Vuex提供了许多有用的功能,其中最常使用的功能是mutation和action。mutation负责更改vuex的状态,而action则用于组织和分发mutation。本篇文章将会简单介绍mutation和action的基本使用。 Mutation mutation是用来更改vuex状态的函数…

    Vue 2023年5月28日
    00
  • vue-cli项目使用mock数据的方法(借助express)

    以下是详细讲解“vue-cli项目使用mock数据的方法(借助express)”的完整攻略。 前置知识 在讲解具体的实现方法之前,需要先了解一些前置知识: vue-cli:Vue.js 的官方脚手架,可用于快速搭建 Vue.js 项目 mock.js:一个用于生成随机数据的库,可生成各种类型的数据 express.js:一个用于搭建 web 服务器的库,可用…

    Vue 2023年5月28日
    00
  • vue导出word纯前端的实现方式

    让我为您详细讲解一下“Vue导出Word纯前端的实现方式”的攻略。 1. 前置条件 在开始实现前,我们需要安装一些 npm 包和一些必备的工具,这些工具和包的详情如下: DocxTemplater:一个用于生成 docx 文档的工具 FileSaver.js:一个用于前端文件下载的 JS 库 Blob.js:一个 Blob 对象的 polyfill,用于处理…

    Vue 2023年5月27日
    00
  • 一文快速详解前端框架 Vue 最强大的功能

    一文快速详解前端框架 Vue 最强大的功能 前言 Vue 是一款非常流行的前端框架,它不仅仅是一个库,更是一种思想,它的最大优点就是能够很好的拆分成各个组件来开发,易于维护和扩展。在这篇文章中,我将向大家介绍 Vue 最强大的功能。 Vue 组件化编程 Vue 能够很好的拆分成各个组件来开发,一个组件就相当于一个独立的功能模块。组件化开发能够提高代码的复用性…

    Vue 2023年5月27日
    00
  • vue-router路由懒加载及实现方式

    什么是路由懒加载 路由懒加载也被称为按需加载,是一种优化策略,主要是用来加速大型单页应用程序的加载速度。通常情况下,SPA应用程序由多个页面分别对应不同的路由,这些页面通常会一次性加载进浏览器中,然而这样的一干式加载很容易造成文件过大,页面加载速度缓慢。 利用路由懒加载机制,我们可以延迟加载应用程序的某些组件模块,一旦用户进入相应的路由,才加载这个模块,这样…

    Vue 2023年5月28日
    00
  • 浅谈Vue.nextTick 的实现方法

    当数据发生变化后,Vue 不会立即更新 DOM,而是加入一个更新队列,并在下一次事件循环中更新视图。而 Vue.nextTick 可以在下次 DOM 更新循环结束之后执行回调。这使得我们可以在 DOM 变化后立即操作更新后的 DOM,例如获取更新后的元素宽高等。 一、Vue.nextTick 的调用方式 Vue 提供了两种调用方式: 1.1 全局调用方式 V…

    Vue 2023年5月29日
    00
  • 解决Vue+Electron下Vuex的Dispatch没有效果问题

    解决 Vue+Electron 下 Vuex 的 Dispatch 没有效果问题 问题描述: 在使用 Vue+Electron 构建桌面应用程序时,可能会遇到 Vuex 的 Dispatch 方法无法正常触发 Action 的问题。例如下面的代码: // 在 Vue 组件中的方法里调用 Action,但没有效果 this.$store.dispatch(‘g…

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