千家信息网

基于webpack2.x的vue2.x的多页面站点

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,vue的多页面依旧使用vue-cli来初始化我们的项目然后修改主要目录结构如下:├── build│ ├── build.js│ ├── check-versions.js│ ├── de
千家信息网最后更新 2026年10月31日基于webpack2.x的vue2.x的多页面站点

vue的多页面


依旧使用vue-cli来初始化我们的项目

然后修改主要目录结构如下:

├── build│   ├── build.js│   ├── check-versions.js│   ├── dev-client.js│   ├── dev-server.js│   ├── utils.js│   ├── vue-loader.conf.js│   ├── webpack.base.conf.js│   ├── webpack.dev.conf.js│   └── webpack.prod.conf.js├── src│   ├── pages│   │   ├── boys│   │   │   ├── index.html│   │   │   ├── index.js│   │   │   └── index.vue│   │   ├── goods│   │   │   ├── index.html│   │   │   ├── index.js│   │   │   └── index.vue│   │   ├── index│   │   │   ├── index.html│   │   │   ├── index.js│   │   │   └── index.vue│   │   └── sotho│   │       ├── index.html│   │       ├── index.js│   │       └── index.vue

编写每个页面

可以看到这里我们有4个单独的页面,分别是boys,goods,index,sotho

首先看boys文件夹中的代码:

index.html

          vue3        

这个是我们要单独生成的页面,最后也是生成index.html

index.vue

这是我们的vue文件,可以看成一个组件,其实.vue文件你可以看成一个语法糖,最终会被vue-loader编译成js,生成对应的css,js,dom

index.js

import Vue from 'vue'import Index from './index.vue'Vue.config.productionTip = falsenew Vue({  el: '#app',  template: '',  components: { Index }})

这就是主要文件了,这里执行vue的实例化,用法同在浏览器端页面中直接引入vue.js文件一样的含义

其他几个页面一样也是同理,具体可以见:https://git.oschina.net/zqzjszqzjs/vue2-x-multiple

修改webpack.config.js

由于vue中的配置使用了模块化管理,所以我们需要修改下面两个文件:

  • webpack.base.conf.js

我们需要修改webpack.base.conf.js的入口entry,这是配置多入口文件的重点!
如果不懂多入口含义的化,建议去看下webpack的文档。

webpack.base.conf.js

...module.exports = {  entry: {    'pages/boys/index': './src/pages/boys/index.js', //配置boys页面入口    'pages/goods/index': './src/pages/goods/index.js', //配置goods页面入口    'pages/index/index': './src/pages/index/index.js', //配置index页面入口    'pages/sotho/index': './src/pages/sotho/index.js', //配置sotho页面入口  },...
  • webpack.dev.conf.js

这里我们需要修改plugins,它是个强大的即插即用的拓展。

我们使用html-webpack-plugin来生成我们的对于的页面。

...var HtmlWebpackPlugin = require('html-webpack-plugin')......module.exports = merge(baseWebpackConfig, {  ...  plugins: [    new webpack.DefinePlugin({      'process.env': config.dev.env    }),     new HtmlWebpackPlugin({      filename:'./pages/boys/index.html', //指定生成的html存放路径      template:'./src/pages/boys/index.html', //指定html模板路径      inject: true, //是否将js等注入页面,以及指定注入的位置'head'或'body'      chunks:['pages/boys/index'] //需要引入的chunk(模块资源),不配置就会引入所有页面的资源(js/css),这是个很重要的属性,你可以不配置试试效果    }),    new HtmlWebpackPlugin({      filename:'./pages/goods/index.html',      template:'./src/pages/goods/index.html',      inject: true,      chunks:['pages/goods/index']    }),    new HtmlWebpackPlugin({      filename:'./pages/index/index.html',       template:'./src/pages/index/index.html',      inject: true,      chunks:['pages/index/index']    }),    new HtmlWebpackPlugin({      filename:'./pages/sotho/index.html',      template:'./src/pages/sotho/index.html',      inject: true,      chunks:['pages/sotho/index']    }),   ...  ]})

以上就是我们进行多页开发的主要配置项。

开发环境访问页面

运行npm run dev,我们看下怎么访问我们的多页vue应用。

  • http://localhost:9090/pages/index/index.html 访问index页面

  • http://localhost:9090/pages/boys/index.html 访问boys页面

  • http://localhost:9090/pages/goods/index.html 访问goods页面

  • http://localhost:9090/pages/sotho/index.html 访问sotho页面

再来看下我们的dom结构是什么样:

页面里的js就是我们通过插件注入的,并且我们是通过指定chunks完成。

build

运行npm run build

  vue2-x-multiple git:(master)  npm run build> vue3@1.0.0 build /study/vue2-x-multiple> node build/build.js building for production...Starting to optimize CSS...Processing static/css/pages/boys/index.19ebbc80a1c187989dbf02d03192e84e.css...Processing static/css/pages/goods/index.fe8f1bc39f33dce4c4d610c2326482c6.css...Processing static/css/pages/index/index.f6340f14071a89cf2b092da280ffaf8c.css...Processing static/css/pages/sotho/index.7415ffd3ef7b9d1a4398cba49927b12b.css...Processed static/css/pages/boys/index.19ebbc80a1c187989dbf02d03192e84e.css, before: 114, after: 44, ratio: 38.6%Processed static/css/pages/goods/index.fe8f1bc39f33dce4c4d610c2326482c6.css, before: 116, after: 46, ratio: 39.66%Processed static/css/pages/index/index.f6340f14071a89cf2b092da280ffaf8c.css, before: 92, after: 22, ratio: 23.91%Processed static/css/pages/sotho/index.7415ffd3ef7b9d1a4398cba49927b12b.css, before: 92, after: 22, ratio: 23.91%Hash: 2467c91090ccf4690865Version: webpack 2.5.1Time: 6319ms                                                                Asset       Size  Chunks             Chunk Namesstatic/css/pages/sotho/index.7415ffd3ef7b9d1a4398cba49927b12b.css.map  312 bytes       1  [emitted]  pages/sotho/index                             static/js/vendor.d7548891d04d4f883b29.js    83.2 kB       0  [emitted]  vendor                  static/js/pages/index/index.b2ce74f4155fb942a064.js  671 bytes       2  [emitted]  pages/index/index                  static/js/pages/goods/index.7d0dda2791db2d3b1500.js  702 bytes       3  [emitted]  pages/goods/index                   static/js/pages/boys/index.2c268b75ba9424211d79.js  699 bytes       4  [emitted]  pages/boys/index                           static/js/manifest.f466ccb58b3271558be5.js    1.57 kB       5  [emitted]  manifest     static/css/pages/boys/index.19ebbc80a1c187989dbf02d03192e84e.css   44 bytes       4  [emitted]  pages/boys/index    static/css/pages/goods/index.fe8f1bc39f33dce4c4d610c2326482c6.css   46 bytes       3  [emitted]  pages/goods/index    static/css/pages/index/index.f6340f14071a89cf2b092da280ffaf8c.css   22 bytes       2  [emitted]  pages/index/index    static/css/pages/sotho/index.7415ffd3ef7b9d1a4398cba49927b12b.css   22 bytes       1  [emitted]  pages/sotho/index                         static/js/vendor.d7548891d04d4f883b29.js.map     687 kB       0  [emitted]  vendor              static/js/pages/sotho/index.e706490d7c42ad8e4f73.js.map    5.55 kB       1  [emitted]  pages/sotho/index                  static/js/pages/sotho/index.e706490d7c42ad8e4f73.js  674 bytes       1  [emitted]  pages/sotho/index              static/js/pages/index/index.b2ce74f4155fb942a064.js.map    5.55 kB       2  [emitted]  pages/index/indexstatic/css/pages/index/index.f6340f14071a89cf2b092da280ffaf8c.css.map  312 bytes       2  [emitted]  pages/index/index              static/js/pages/goods/index.7d0dda2791db2d3b1500.js.map    5.64 kB       3  [emitted]  pages/goods/indexstatic/css/pages/goods/index.fe8f1bc39f33dce4c4d610c2326482c6.css.map  338 bytes       3  [emitted]  pages/goods/index               static/js/pages/boys/index.2c268b75ba9424211d79.js.map    5.62 kB       4  [emitted]  pages/boys/index static/css/pages/boys/index.19ebbc80a1c187989dbf02d03192e84e.css.map  333 bytes       4  [emitted]  pages/boys/index                       static/js/manifest.f466ccb58b3271558be5.js.map    14.6 kB       5  [emitted]  manifest                                              ./pages/boys/index.html  386 bytes          [emitted]                                             ./pages/goods/index.html  389 bytes          [emitted]                                             ./pages/index/index.html  389 bytes          [emitted]                                             ./pages/sotho/index.html  389 bytes          [emitted]  Build complete.  Tip: built files are meant to be served over an HTTP server.  Opening index.html over file:// won't work.

进入dist目录,查看生成的页面

├── pages│   ├── boys│   │   └── index.html│   ├── goods│   │   └── index.html│   ├── index│   │   └── index.html│   └── sotho│       └── index.html└── static    ├── css    │   └── pages    │       ├── boys    │       │   ├── index.19ebbc80a1c187989dbf02d03192e84e.css    │       │   └── index.19ebbc80a1c187989dbf02d03192e84e.css.map    │       ├── goods    │       │   ├── index.fe8f1bc39f33dce4c4d610c2326482c6.css    │       │   └── index.fe8f1bc39f33dce4c4d610c2326482c6.css.map    │       ├── index    │       │   ├── index.f6340f14071a89cf2b092da280ffaf8c.css    │       │   └── index.f6340f14071a89cf2b092da280ffaf8c.css.map    │       └── sotho    │           ├── index.7415ffd3ef7b9d1a4398cba49927b12b.css    │           └── index.7415ffd3ef7b9d1a4398cba49927b12b.css.map    └── js        ├── manifest.f466ccb58b3271558be5.js        ├── manifest.f466ccb58b3271558be5.js.map        ├── pages        │   ├── boys        │   │   ├── index.2c268b75ba9424211d79.js        │   │   └── index.2c268b75ba9424211d79.js.map        │   ├── goods        │   │   ├── index.7d0dda2791db2d3b1500.js        │   │   └── index.7d0dda2791db2d3b1500.js.map        │   ├── index        │   │   ├── index.b2ce74f4155fb942a064.js        │   │   └── index.b2ce74f4155fb942a064.js.map        │   └── sotho        │       ├── index.e706490d7c42ad8e4f73.js        │       └── index.e706490d7c42ad8e4f73.js.map        ├── vendor.d7548891d04d4f883b29.js        └── vendor.d7548891d04d4f883b29.js.map

到此为止,一个简单的基于vue2.x的多页应用完成了。


页面 配置 入口 文件 生成 就是 这是 含义 模块 目录 结构 资源 路径 应用 开发 运行 强大 重要 到此为止 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 西安纸贵互联网科技有限公司 互联网科技巨头监管 互联网和科技创新 科技与互联网发展 互联网科技作文 嘟嘟瓜互联网科技 奇酷互联网科技公司 迪茉互联网科技 北京互联网络科技有限公司 伴你行互联网科技有限公司 玖二柒互联网科技公司待遇 重庆威客帮互联网科技 互联网还是高科技吗 华夏恒生科技与互联网科技 半导体是互联网高科技吗 下一代互联网重大应用科技园 新氧科技和美国互联网有关系吗 昆明中奇联合互联网科技 江苏互联网智能科技产品出厂价 广西泛欧互联网科技有限公司 蓝思科技飞鸽互联网 互联网与科技金融数据 深圳互联网科技公司 现代科技和互联网有关系吗 互联网金融中的现代科技 阿大互联网科技有限公司 广西互联网科技孵化中心 恒生互联网科技业指数调整周期 互联网时代的科技公司 有人说阿里系是互联网科技企业
0