VUE 多页面项目 脚手架3.0

4 篇文章 0 订阅
3 篇文章 0 订阅

VUE脚手架3.0 创建多页面项目

前期准备

1、初始化脚手架项目

vue create pages3.0

2、启动脚手架

$ cd pages3.0 
$ npm run serve

配置多入口

1、新建vue.config.js文件

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

const resolve = dir => {
  return path.join(__dirname, dir)
}

const getEntries = globPath => { // 获取多入口以及路由
  const entries = {}
  glob.sync(globPath).forEach(entry => {
    const basename = path.basename(entry, path.extname(entry), 'router.js')
    entries[basename] = entry
  })
  return entries
}
const pages = getEntries('./src/pages/*/*.js')
const getPages = pages => {  // 获取多页面
  const obj = {}
  for (const key in pages) {
    const page = pages[key]
    const pageName = page.substring(page.lastIndexOf('/') + 1, page.length - 3)
    obj[pageName] = {
      // 出来entry,其他都不是必填
      entry: page, // page 的入口,每个“page”应该有一个对应的 ‘*.js’ 入口文件
      // template: "public/index.html", // 模板来源
      // filename: pageName+".html", // 在 dist/index.html 的输出
      title: pageName // 当使用 title 选项时,在 template 中使用:<title><%= htmlWebpackPlugin.options.title %></title>
      // chunks: ["chunk-vendors", "chunk-common", pageName] // 在这个页面中包含的块,默认情况下会包含,提取出来的通用 chunk 和 vendor chunk
    }
  }
  return obj
}

const port = 8080;
const baseUrl = 'http://localhost:3000'
const contextPath = '/fronted'
const dev = process.env.NODE_ENV === 'development'

module.exports = {
  publicPath: '/', // 静态资源的公开路径,也就是真正的引用路径
  outputDir: 'dist', // 打包的时候生成的一个文件名
  assetsDir: 'static',
  pages: getPages(pages),
  chainWebpack(config) {
    config.module
      .rule('html')
      .test(/\.html$/)
      .use('html-loader')
      .loader('html-loader')
      .end()
  },
  lintOnSave: false,
  devServer: {
    // 环境配置
    host: '0.0.0.0', // 局域网允许访问修改为 host: "0.0.0.0"
    port,
    https: false,
    hotOnly: false,
    open: true, // 配置自动启动浏览器
    headers: {
      'Access-Control-Allow-Origin': '*'
    },
    proxy: {
      // 设置代理
      '/api': {
        target: baseUrl + contextPath,
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  },
  configureWebpack: config => {
    // 去掉console
    // 判断为生产模式下,因为开发模式我们是想保存console的
    if (!dev) {
      config.optimization.minimizer.map((arg) => {
        const option = arg.options.terserOptions.compress
        option.drop_console = true // 打开开关
        return arg
      })
    }
    config.performance = {
      hints: 'warning',
      // 入口起点的最大体积 整数类型(以字节为单位)
      maxEntrypointSize: 50000000,
      // 生成文件的最大体积 整数类型(以字节为单位 300k)
      maxAssetSize: 30000000,
      // 只给出 js 文件的性能提示
      assetFilter(assetFilename) {
        return assetFilename.endsWith('.js')
      }
    }
    config.resolve.alias = {
      '@': resolve('src')
    }
  }
}

2、安装依赖

npm install html-loader@1.1.0 --save

更改文件目录以及页面配置

1、原文件结构
在这里插入图片描述
2、文件结构调整
2.1、src下新建pages文件夹,pages文件夹下再新建index和login文件夹
2.2、main.js、App.vue移至index文件夹
在这里插入图片描述
2.3、login文件夹下新建login.js、login.vue
在这里插入图片描述
2.4、1)调整资源引用路径;2)将main.js文件改名为index.js(以index.js为多页面应用的默认入口=>即http://localhost:8080的默认跳转页)
在这里插入图片描述
2.5、login页面设置
1)login.js

import Vue from 'vue'
import Login from './login.vue'

Vue.config.productionTip = false

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

2)login.vue

<template>
  <div id="app">
    {{ msg }}
  </div>
</template>

<script>

export default {
  name: 'App',
  data () {
      return {
        msg: 'login success'
      }
  }
}
</script>

<style>
</style>

效果预览

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值