广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Vue-cli如何创建项目从单页面到多页面
  • 814
分享到

Vue-cli如何创建项目从单页面到多页面

2024-04-02 19:04:59 814人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关Vue-cli如何创建项目从单页面到多页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。对于某些项目来说,单页面不能很好的满足需求,所以需要将vue-c

这篇文章给大家分享的是有关Vue-cli如何创建项目从单页面到多页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

对于某些项目来说,单页面不能很好的满足需求,所以需要将vue-cli创建的单页面项目改为多页面项目。

需要修改以下几个文件:

1、下载依赖glob

$npm install glob --save-dev

2、修改build下的文件

(1)修改webpack.base.conf.js

添加以下代码:

var glob = require('glob');
var entries = getEntry('./src/pages*.js')

将module.exports中的

entry: {
   app: './src/main.js'
  },

注释掉,然后添加这一行代码:

 entry: entries,

至于entries是什么,别急呀,看下面:

添加一个方法:

//获取入口js文件
function getEntry(globPath) {
 var entries = {},
  basename, tmp, pathname;

 glob.sync(globPath).forEach(function (entry) {
  basename = path.basename(entry, path.extname(entry));
  pathname = basename.split("_")[0]; //index_main.js得到index
  entries[pathname] = entry;
 });
 return entries;
}

这个文件修改成这样子就可以了。

(2)修改webpack.dev.conf.js

添加以下代码:

//引入
var glob = require('glob')
var path = require('path')

将module.exports中的plugins里的

new htmlwebpackPlugin({
  filename: 'index.html',
  template: 'index.html',
  inject: true
}),

注释掉,然后添加以下代码:

function getEntry(globPath) {
 
 var entries = {},basename;

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

var pages = getEntry('src/pages*.html');

for (var pathname in pages) {
 // 配置生成的html文件,定义路径等
 var conf = {
  filename: pathname + '.html',
  template: pages[pathname],  // 模板路径
  inject: true,       // js插入位置
  chunks:[pathname]
 };
 module.exports.plugins.push(new HtmlWEBpackPlugin(conf));
}

这个文件修改到此就可以了。

(3)webpack.prod.conf.js

这个文件修改的套路与上一个文件类似
 添加以下代码: var glob = require('glob') 因为项目在创建时,生成项目的时候是直接将可选的所有依赖都选择了yes,所以项目中的env的声明定义如下:

复制代码 代码如下:


var env = process.env.node_ENV === 'testing ? require('../config/test.env') : config.build.env ;

但是由于webpack.test.conf.js文件目前还没有进行修改,所以需要把这行声明换成下面这行:

var env = config.build.env

将webpackConfig中的plugins里的

new HtmlWebpackPlugin({
  filename: config.build.index,
  template: 'index.html',
  inject: true,
  minify: {
   removeComments: true,
   collapseWhitespace: true,
   removeAttributeQuotes: true
  },
  chunksSortMode: 'dependency'
}),

注释掉,在声明定义webpackConfig的后面添加以下代码:

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

var pages = getEntry('src/pages*.html');

for (var pathname in pages) {
 var conf = {
   filename: process.env.NODE_ENV === 'testing'
    ? pathname + '.html'
    : config.build[pathname],
   template: pages[pathname],
   inject: true,
   minify: {
    removeComments: true,
    collapseWhitespace: true,
    removeAttributeQuotes: true
   },
   chunks:[pathname]
  }
 webpackConfig.plugins.push(new HtmlWebpackPlugin(conf));
}

此时,这个文件也修改好了。

3、修改config下的文件

这个文件夹下,只需要修改一个文件:index.js 这个文件的作用是,寻找文件路径,然后根据这个文件设置的目录层级,生成打包后的文件以及相应的层级文件结构。 添加以下代码:

var build = {
 env: require('./prod.env'),
 assetsRoot: path.resolve(__dirname, '../dist'),
 assetsSubDirectory: 'static',
 assetsPublicPath: '/',
 productionSourceMap: true,
 productionGzip: false,
 productionGzipExtensions: ['js', 'CSS']
}

function getEntry(globPath) {
 var entries = {},basename;

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

var pages = getEntry('src/pages*.html');
 
//入口 index: path.resolve(__dirname, '../dist/index.html')
for (var pathname in pages) {
 build[pathname] = path.resolve(__dirname, '../dist/' + pathname + '.html')
}

然后将module.exports中的build的值换成我们刚刚添加声明的变量build。 如果希望修改打包后的目层级结构,可以在build中修改;还可以在build中增加我们需要定义的变量,比如我们需要将fabfile.py和favicon.ico拷贝到dist目录下的a目录下,就可以在build中定义一个属性,

distA:path.resolve(__dirname, '../dist/a),

然后因为在webpack.prod.conf.js中已经引入了'copy-webpack-plugin'(var CopyWebpackPlugin = require('copy-webpack-plugin')),我们就可以在 webpackConfig.plugins下添加如下代码:

new CopyWebpackPlugin([
  {
   from: path.resolve(__dirname, '../fabfile.py'),
   to: config.build.distA,
   template: 'fabfile.py'
  }
 ])
new CopyWebpackPlugin([
  {
   from: path.resolve(__dirname, '../favicon.ico'),
   to: config.build.distA,
   template: 'favicon.ico'
  }
 ])

在src目录下添加pages文件夹

目录的层级结构安排成类似于这种形式:

Vue-cli如何创建项目从单页面到多页面

5、打包

做完以上修改,虽然本地运行没有问题,但是打包后,还是会有问题,会出现报错:webpackJSONp is not defined
解决方式如下: 在webpack.prod.conf.js文件下的for (var pathname in pages)循环中定义的conf里,添加两行代码:

chunksSortMode: 'dependency', // dependency 页面中引入的js按照依赖关系排序;manual 页面中引入的js按照下面的chunks的数组中的顺序排序;

chunks: ['manifest', 'vender', pathname] // 生成的页面中引入的js,'manifest', 'vender'这两个js是webpack在打包过程中抽取出的一些公共方法依赖,其中,'manifest'又是从'vender'中抽取得到的,所以这三个js文件的依赖关系是 pathname依赖 'vender','vender'依赖'manifest'.

综上,就是本次项目从单页面到多页面项目的转变历程,关于webpack.test.conf.js文件的修改,后续修改成功后,会继续补充添加。

感谢各位的阅读!关于“Vue-cli如何创建项目从单页面到多页面”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Vue-cli如何创建项目从单页面到多页面

本文链接: https://www.lsjlt.com/news/72772.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue-cli如何创建项目从单页面到多页面
    这篇文章给大家分享的是有关Vue-cli如何创建项目从单页面到多页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。对于某些项目来说,单页面不能很好的满足需求,所以需要将vue-c...
    99+
    2022-10-19
  • vue、react等单页面项目如何部署到服务器
    这篇文章主要介绍vue、react等单页面项目如何部署到服务器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用vue做的项目本地是可以的,但部署到服务器遇到好多问题:资源找不到,直接...
    99+
    2022-10-19
  • vue-cli多页面应用实践之实现组件预览项目
    目录vue-cli 多页面应用实现组件预览项目多页面应用配置页面布局左侧菜单栏中间区域右侧手机页功能扩展建议仓库源码总结vue-cli 多页面应用 vue技术栈的同学,大多是用vue...
    99+
    2022-11-13
  • webpack4如何打包vue前端多页面项目
    这篇文章主要介绍webpack4如何打包vue前端多页面项目,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.用法项目结构如下:project  |- bulid...
    99+
    2022-10-19
  • vue如何构建单页面应用
    这篇文章将为大家详细讲解有关vue如何构建单页面应用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 为什么要 SPA?SPA: 就是俗称的单页应用(Single Pa...
    99+
    2022-10-19
  • vue-cli+webpack如何优化多页面实例配置
    这篇文章主要介绍了vue-cli+webpack如何优化多页面实例配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vue+webpack是...
    99+
    2022-10-19
  • Vue-cli中如何为单独页面设置背景色
    这篇文章主要介绍Vue-cli中如何为单独页面设置背景色,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!例子:<template>  <div c...
    99+
    2022-10-19
  • vue多页面项目中路由如何使用history模式
    这篇文章给大家分享的是有关vue多页面项目中路由如何使用history模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如何解决有一天看webpack文档的时候,突然看到了his...
    99+
    2022-10-19
  • Vue项目如何创建首页发送axios请求
    这篇文章主要介绍了Vue项目如何创建首页发送axios请求的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue项目如何创建首页发送axios请求文章都会有所收获,下面我们一起来看看吧。这是个全新的Vue项目,引...
    99+
    2023-07-05
  • vue如何实现本项目页面之间跳转
    目录本项目页面之间跳转方式在template模板中添加在methods中写入路径修改路由文件vue解决页面跳转问题解决办法本项目页面之间跳转方式 在template模板中添加 but...
    99+
    2022-11-13
  • Vue项目如何改变屏幕尺寸重新刷新页面-计算页面尺寸
    目录改变屏幕尺寸重新刷新页面-计算页面尺寸方式一方式二尺寸的自适应 大屏自适应通过 postcss-px2rem 插件,实现项目的自适应通过transform,可用于echarts的...
    99+
    2022-11-13
  • 如何解决vue项目动态设置页面title及是否缓存页面的问题
    小编给大家分享一下如何解决vue项目动态设置页面title及是否缓存页面的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!跟传...
    99+
    2022-10-19
  • vue项目如何通过url链接引入其他系统页面
    目录vue通过url链接引入其他系统页面1.正常配置菜单2.加载引入系统可能会出现拦截3.引入项目的后台拦截代码vue页面嵌套外部url总结vue通过url链接引入其他系统页面 1....
    99+
    2023-03-10
    vue url引入系统页面 vue url链接 vue 链接
  • 微信小程序如何从列表item项跳转到下一个页面
    这篇文章主要为大家展示了“微信小程序如何从列表item项跳转到下一个页面”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序如何从列表item项跳转到下一个...
    99+
    2022-10-19
  • 如何解决Vue 2.0在IE11中打开项目页面空白的问题
    这篇文章主要介绍如何解决Vue 2.0在IE11中打开项目页面空白的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言因为工作的需要,学习Vue2.0也有一段时间,最近在用Vue...
    99+
    2022-10-19
  • vue移动端项目中如何实现页面缓存的示例代码
    背景 在移动端中,页面跳转之间的缓存是必备的一个需求。 例如:首页=>列表页=>详情页。 从首页进入列表页,列表页需要刷新,而从详情页返回列表页,列表页则需要保持页面缓...
    99+
    2022-11-12
  • 如何创建动态菜单在ASP。 净核心剃刀页面与Web Api
    我得到一个错误当我添加一个MenuList进入菜单。 计算机科学,因为我的MySql表中没有MenuList那里。 但我无法添加MenuList菜单。 cs,这意味着我不能创建一个动态菜单,任何人在这种...
    99+
    2022-10-18
  • 如何解决IE11 vue+webpack项目中数据更新后页面没有刷新的问题
    这篇文章主要介绍如何解决IE11 vue+webpack项目中数据更新后页面没有刷新的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue +webpack 项目中数据更新后页面...
    99+
    2022-10-19
  • Vue项目如何保持用户登录状态(localStorage+vuex刷新页面后状态依然保持)
    目录前言一、实现效果二、实现步骤及涉及要点三、涉及代码总结前言 在前端项目开发中,实现用户的登陆注册功能时常常会有一个问题,那就是我们设置的登录状态,在浏览器页面刷新后就消失了,这其...
    99+
    2022-11-13
  • 服务器部署—若依【vue】如何部署到nginx里面?nginx刷新页面404怎么办?【完美解决建议收藏】
    服务器部署项目我们大家都会遇到,但是有些铁子会遇到很多的问题,比如前端部署nginx如何操作? 前端有单纯的静态页面、还有前后端分离的项目;这里博主直接分享最牛最到位的前后端分离项目的前端部署到nginx上面,以若依项目【springb...
    99+
    2023-09-10
    vue.js 服务器 nginx
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作