vue2.0之多页面的开发

-----------------------------------------------------------------------------------------------------------------

写在最前面:这段分割线的内容是2018年4月3日写的,我2017年6月写了这篇文章,在这快一年的时间里,有人按照我的方法成功的实现多页面的开发,有人因为对webpack的配置不熟导致走了很多弯路。我本人一直想写一篇这篇文章的姐妹版来对这些内容进行更加详细的补充,但是时间和精力都不够。偶尔上网发现了这个链接,我觉得他讲的挺好的,如果想要了解更多的话请看这篇《webpack多页应用架构系列》整理成书了  。下面我写的这篇文章是我在大三的时候写的,那时候技术尚浅,可能对某些内容的理解有错误,请各位看官看的时候辩证的看。

-----------------------------------------------------------------------------------------------------------------


我们平常用vue开发的时候总觉得vue好像就是专门为了单页面应用而诞生的,其实不是。因为vue在工程化开发的时候很依赖webpack,而webpack是将所有的资源整合到一块,弄成一个单页面。但是vue不止可以做单页面,它还可以做多页面,如果要做多页面的话需要对他的依赖,也就是webpack就是重新配置才可以。本文将详细讲webpack的配置。

vue的开发有两种,一种是直接的在script标签里引入vue.js文件即可,这样子引入的话个人感觉做小型的多页面会比较舒坦,一旦做大型一点的项目,还是离不开webpack。所以另一种方法也就是基于webpack和vue-cli的工程化开发。下面详解步骤。

先声明,如果用vue进行工程化开发,首先要有node.js,然后再下一个npm,不过一般新版的node都会有npm所以可以不用弄。指令是在命令行里输入。首先第一步就是生成一个vue项目,用指令:

vue init webpack test
博主本人声明的文件名为test,下载好后一路enter,之后便生成了一个vue项目,但是这个vue项目还没有一些相关的依赖,这个时候需要进入到该文件夹里面,输入指令:

npm install
如果网速不好,则用cnpm install,效果一样。略等几分钟后整个依赖便已经下完,之后输入指令:

npm run dev
则会自动打开一个界面,如果报错不能打开网页的话只有一种原因,那就端口占用,这个时候需要到/config/index.js目录下改端口就行。

当一个vue项目完成好所有的配置后,接下来就是我们的重点了,首先我们新新建几个html文件,博主我新建了一个one.html和two.html,及其与之对应的vue文件和js文件,文件目录如下:


弄好之后我们进入\build\webpack.base.conf.js目录下,在module.exports的域里,找到entry,在那里配置添加多个入口:

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

注意,紫色部分的变量名要起好,因为后面要用到,以防忘记。

接下来就是对开发环境run dev里进行修改,打开\build\webpack.dev.conf.js文件,在module.exports那里找到plugins,下面写法如下:

plugins: [
  new webpack.DefinePlugin({
    'process.env': config.dev.env
  }),
  // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
  new webpack.HotModuleReplacementPlugin(),
  new webpack.NoEmitOnErrorsPlugin(),
  // https://github.com/ampedandwired/html-webpack-plugin
  new HtmlWebpackPlugin({
    filename: 'index.html',
    template: 'index.html',
    inject: true,
    chunks: ['app']
  }),
  new HtmlWebpackPlugin({
    filename: 'one.html',
    template: 'one.html',
    inject: true,
    chunks: ['one']
  }),
  new HtmlWebpackPlugin({
    filename: 'two.html',
    template: 'two.html',
    inject: true,
    chunks: ['two']
  }),
  new FriendlyErrorsPlugin()
]
在chunks那里的app指的是webpack.base.conf.js的entry那里与之对应的变量名。chunks的作用是每次编译、运行时每一个入口都会对应一个entry,如果没写则引入所有页面的资源。

之后就对run build也就是编译环境进行配置。首先打开\config\index.js文件,在build里加入这个:

index: path.resolve(__dirname, '../dist/index.html'),
one: path.resolve(__dirname, '../dist/one.html'),
two: path.resolve(__dirname, '../dist/two.html'),
然后打开/build/webpack.prod/conf.js文件,在plugins那里找到HTMLWebpackPlugin,然后添加如下代码:

new HtmlWebpackPlugin({
  filename: process.env.NODE_ENV === 'testing'
    ? 'index.html'
    : config.build.index,
  template: 'index.html',
  inject: true,
  minify: {
    removeComments: true,
    collapseWhitespace: true,
    removeAttributeQuotes: true
    // more options:
    // https://github.com/kangax/html-minifier#options-quick-reference
  },
  // necessary to consistently work with multiple chunks via CommonsChunkPlugin
  chunksSortMode: 'dependency',
  chunks: ['manifest', 'vendor', 'app']
}),
new HtmlWebpackPlugin({
  filename: config.build.one,
  template: 'one.html',
  inject: true,
  minify: {
    removeComments: true,
    collapseWhitespace: true,
    removeAttributeQuotes: true
  },
  chunksSortMode: 'dependency',
  chunks: ['manifest', 'vendor', 'one']
}),
  new HtmlWebpackPlugin({
      filename: config.build.two,
      template: 'two.html',
      inject: true,
      minify: {
          removeComments: true,
          collapseWhitespace: true,
          removeAttributeQuotes: true
      },
      chunksSortMode: 'dependency',
      chunks: ['manifest', 'vendor', 'two']
  }),
其中filename引用的是\config\index.js里的build,每个页面都要配置一个chunks,不然会加载所有页面的资源。

然后one.js文件可以这样写:

import Vue from 'vue'
import one from './one.vue'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#one',
  render: h => h(one)
})
one.vue写法如下:

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

<script>
export default {
  name: 'one',
  data () {
    return {
      msg: 'I am one'
    }
  }
}
</script>
two的写法与之类似,所以不写下来了,

然后App.vue里通过这样写:

<template>
  <div id="app">
    <a href="one.html">one</a><br>
    <a href="two.html">two</a><br>
    {{msg}}
  </div>
</template>
这样子当你打开页面的时候,点击上面one的链接就会跳转到one.html,点击two就跳转到two.html。这样子就大功告成了。



  • 15
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
### 回答1: 在Vue 2.0中,我们可以通过配置多个入口文件并使用不同的页面模板来实现多页面的分开打包。下面是一个简单的示例: 首先,在项目的根目录下创建一个名为"pages"的文件夹,用于存放多个页面的相关文件。 然后,在项目的根目录下找到"vue.config.js"文件(如果没有则需要手动创建),并添加以下配置: ```javascript module.exports = { pages: { app1: { entry: 'pages/app1/main.js', template: 'pages/app1/index.html', filename: 'app1.html' }, app2: { entry: 'pages/app2/main.js', template: 'pages/app2/index.html', filename: 'app2.html' } } } ``` 在上面的配置中,我们定义了两个页面:app1和app2。每个页面都有对应的入口文件和模板文件。 接下来,我们需要创建对应的入口文件和模板文件。以app1为例,在"pages"文件夹下创建一个名为"app1"的文件夹,并在该文件夹下创建一个名为"main.js"的文件作为入口文件。在"pages/app1"文件夹下还需要创建一个名为"index.html"的文件作为模板文件。 在入口文件"main.js"中,我们需要引入Vue和根组件,并创建一个根实例: ```javascript import Vue from 'vue' import App from './App.vue' new Vue({ render: h => h(App) }).$mount('#app') ``` 在模板文件"index.html"中,我们可以编写对应页面的HTML结构,然后在其中动态引入打包后的脚本文件。 最后,我们可以使用命令行运行以下命令来进行打包: ``` npm run build ``` 执行上述命令后,Vue会自动根据配置将每个页面的入口文件打包成对应的HTML和JS文件。在打包完成后,可以在"dist"文件夹下找到生成的多个页面文件。 通过上述配置和步骤,我们可以实现Vue 2.0的多页面分开打包。 ### 回答2: 在Vue2.0中,如果要进行多页面开发,并且希望进行分开打包,需要进行如下的配置和命令操作: 首先,在项目的根目录下新建一个`pages`文件夹,用于存放多个页面的代码。每个页面都应该有自己独立的目录,并在目录中创建一个`main.js`文件作为入口文件。 接下来,需要修改`webpack.config.js`文件,使其支持多页面打包。具体配置如下: ```javascript const HtmlWebpackPlugin = require('html-webpack-plugin'); const path = require('path'); // 需要打包的页面数组 const pages = [ { name: 'page1', title: '页面1' }, { name: 'page2', title: '页面2' }, // ... ]; module.exports = { // ...其他配置 entry: {}, plugins: [], // ...其他配置 // 添加多页面的入口和插件配置 pages.forEach(page => { module.exports.entry[page.name] = path.resolve(__dirname, `./pages/${page.name}/main.js`); module.exports.plugins.push(new HtmlWebpackPlugin({ filename: `${page.name}.html`, template: path.resolve(__dirname, './index.html'), title: page.title, chunks: [page.name], })); }), }; ``` 上述配置中,我们通过`entry`属性指定了多个入口文件,通过`plugins`属性添加了多个HtmlWebpackPlugin插件,用于生成多个html文件。 然后,需要修改`index.html`文件,将原来的`<script src="/dist/build.js"></script>`替换为`<script src="/dist/[page.name].js"></script>`。 最后,在命令行运行`npm run build`命令进行打包即可。打包完成后,`dist`目录下会生成多个js文件和对应的html文件,每个页面都有独立的打包输出。 总结起来,实现Vue2.0多页面分开打包的命令,主要包括以下几个步骤:新建多个页面目录,修改webpack配置,修改index.html文件,运行打包命令。 ### 回答3: 在Vue 2.0中,如果我们需要进行多页面开发,可以使用webpack的配置来进行分开打包。 第一步,我们需要在webpack中配置多入口。我们可以在webpack的配置文件中的entry中添加多个入口文件,每个入口文件对应一个页面。例如: ``` entry: { page1: './src/page1.js', page2: './src/page2.js', }, ``` 这样就配置了两个页面的入口文件。 第二步,我们需要为每个页面配置独立的模板文件。可以在webpack的配置文件中的plugins中添加多个HtmlWebpackPlugin,同时在每个HtmlWebpackPlugin中指定对应的模板文件和生成的html文件名。例如: ``` plugins: [ new HtmlWebpackPlugin({ template: './src/page1.html', filename: 'page1.html', chunks: ['page1'] }), new HtmlWebpackPlugin({ template: './src/page2.html', filename: 'page2.html', chunks: ['page2'] }), ], ``` 这样就配置了两个页面的模板文件和对应的html文件。 第三步,我们可以通过npm脚本进行打包。在package.json文件中的script中添加多个打包命令,每个命令对应一个页面的打包。例如: ``` "scripts": { "build:page1": "webpack --config webpack.conf.js --progress --colors --mode=production --env.page=page1", "build:page2": "webpack --config webpack.conf.js --progress --colors --mode=production --env.page=page2" } ``` 这样就配置了两个打包命令,分别对应两个页面的打包。 最后,我们可以通过运行对应的打包命令来分别打包每个页面。例如,运行`npm run build:page1`命令可以对第一个页面进行打包,运行`npm run build:page2`命令可以对第二个页面进行打包。打包完成后,每个页面的打包文件会在指定的输出目录中生成。 以上就是Vue 2.0中多页面分开打包的命令配置过程。通过这种方式,我们可以方便地对多个页面进行独立的打包和部署。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值