zoukankan      html  css  js  c++  java
  • vue 2.0多页面开发

    1、为项目添加多个入口

    找到uildwebpack.base.conf.js文件:

    1 module.exports = {
    2   //...,
    3   //vue的多页面开发:应用程序可以存在多个入口
    4   entry: {
    5     app: './src/main.js',
    6     product: './src/product.js'
    7   },
    8   //...
    9 }

    2、为开发环境和生产环境配置入口对应的配置项

    打开:uildwebpack.dev.conf.js

     1 const devWebpackConfig = merge(baseWebpackConfig, {
     2   //...
     3   plugins: [
     4     new webpack.DefinePlugin({
     5       'process.env': require('../config/dev.env')
     6     }),
     7     new webpack.HotModuleReplacementPlugin(),
     8     new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
     9     new webpack.NoEmitOnErrorsPlugin(),
    10     // https://github.com/ampedandwired/html-webpack-plugin
    11     new HtmlWebpackPlugin({
    12       filename: 'index.html',
    13       template: 'index.html',
    14       inject: true,
    15       chunks:['app']
    16     }),
    17     new HtmlWebpackPlugin({
    18       filename: 'product.html',
    19       template: 'product.html',
    20       inject: true,
    21       chunks:['product']
    22     }),
    23   //...
    24   ]
    25 })

    打开:uildwebpack.prod.conf.js,plugins节点下面加:

     1 //...
     2 new HtmlWebpackPlugin({
     3       filename: process.env.NODE_ENV === 'testing'
     4         ? 'index.html'
     5         : config.build.index,
     6       template: 'index.html',
     7       inject: true,
     8       minify: {
     9         removeComments: true,
    10         collapseWhitespace: true,
    11         removeAttributeQuotes: true
    12         // more options:
    13         // https://github.com/kangax/html-minifier#options-quick-reference
    14       },
    15       // necessary to consistently work with multiple chunks via CommonsChunkPlugin
    16       chunksSortMode: 'dependency',
    17       chunks: ['manifest', 'vendor', 'app']
    18     }),
    19     new HtmlWebpackPlugin({
    20       filename: process.env.NODE_ENV === 'testing'
    21         ? 'product.html'
    22         : config.build.product,
    23       template: 'product.html',
    24       inject: true,
    25       minify: {
    26         removeComments: true,
    27         collapseWhitespace: true,
    28         removeAttributeQuotes: true
    29         // more options:
    30         // https://github.com/kangax/html-minifier#options-quick-reference
    31       },
    32       // necessary to consistently work with multiple chunks via CommonsChunkPlugin
    33       chunksSortMode: 'dependency',
    34       chunks: ['manifest', 'vendor', 'product']
    35     }),
    36 //...

    3、配置编译环境

    1 build: {
    2     // Template for index.html
    3     index: path.resolve(__dirname, '../dist/index.html'),
    4     product: path.resolve(__dirname, '../dist/product.html'),
    5     //...
    6 }

    4、根目录添加product.html

    后面product关联的页面入口都是这个页面。

    5、src目录添加product.js和product.vue

    product.js类似于单页面的main.js的作用

    import Vue from 'vue'
    import product from './product.vue'
    
    Vue.config.productionTip = false
    
    /* eslint-disable no-new */
    new Vue({
      el: '#product',
      render: h => h(product)
    })

    product.vue类似于单页面的App.vue的作用

     1 <template>
     2   <div id="prodcut">
     3     {{msg}}
     4   </div>
     5 </template>
     6 
     7 <script>
     8 export default {
     9   name: 'prodcut',
    10   data () {
    11     return {
    12       msg: 'I am prodcut'
    13     }
    14   }
    15 }
    16 </script>

    6、添加测试链接

    App.vue添加produt.html链接

     1 <template>
     2   <div id="app">
     3     <img src="./assets/logo.png">
     4     <a href="product.html">product</a><br>
     5     <router-view/>
     6   </div>
     7 </template>
     8 
     9 <script>
    10 export default {
    11   name: 'App'
    12 }
    13 </script>
    14 
    15 <style>
    16 #app {
    17   font-family: 'Avenir', Helvetica, Arial, sans-serif;
    18   -webkit-font-smoothing: antialiased;
    19   -moz-osx-font-smoothing: grayscale;
    20   text-align: center;
    21   color: #2c3e50;
    22   margin-top: 60px;
    23 }
    24 </style>

     7、测试

    可以看到编译后的文件index.html和product.html已经分别编译了,各自作为单页面的入口:

    编译后的js也是各自的:

    下面是演示效果:

     

    8、源码

    https://github.com/iprometheus/vue-multipage

    9、参考文档

    http://blog.csdn.net/Tank_in_the_street/article/details/73732801

  • 相关阅读:
    Kotlin入门(20)几种常见的对话框
    Kotlin入门(19)Android的基础布局
    Kotlin入门(18)利用单例对象获取时间
    Kotlin入门(17)等式判断的情况
    Kotlin入门(16)容器的遍历方式
    Kotlin入门(15)独门秘笈之特殊类
    Android Studio Gradle被墙bug总结
    unity常用的坐标系转换
    欧拉角与万向节死锁
    Unity导出Gradle工程给Android Studio使用
  • 原文地址:https://www.cnblogs.com/gudi/p/8426206.html
Copyright © 2011-2022 走看看