vue-多页面

1. vue create xx
2. 修改目录结构

		public
			|- index.html
			|- page1.html
			|- pageN.html
		src
			pages
				page1
				 	|- page1.js    ~~ main.js
				 	|- page1.vue   ~~ app.vue
				pageN
					|-.....
					|-.....
			assets
				多页公共资源
			components
				page1-N  页面会用到的通用组件

vue create后,创建pages文件夹,把main.js和app.vue分别改名为index.js和index.vue

在改名后的index.js内
import Vue from 'vue'
import Index from './Index.vue'

Vue.config.productionTip = false

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

在改名后的index.vue内
<template>
  <div id="Index">
    <AppHeader>首页内容</AppHeader>
      <img alt="Vue logo" src="../../assets/logo.png">
      <h3>index内容</h3>
      <div class="bg">index内容</div>
    <AppFooter>首页内容</AppFooter>
  </div>
</template>

<script>
import AppHeader from '../../components/AppHeader'
import AppFooter from '../../components/AppFooter'

export default {
  name: 'Index',
  components: {
    AppHeader,AppFooter
  }
}
</script>

<style>
.bg{background: forestgreen }
</style>

此时如果想新建一个并且搭建一个新的page2页面,在pages文件夹内新建js和vue文件

在page2.js内
import Vue from 'vue'
import Page2 from './Page2.vue'
import router from './router'
Vue.config.productionTip = false

new Vue({
    router,
    render: h => h(Page2)
}).$mount('#page2')

在page.vue文件内

<template>
    <div class="page2">
        <AppHeader></AppHeader>
        page2内容
        <app-footer></app-footer>
        <nav>
            <router-link to="/login">登录</router-link>
        </nav>
        <router-view></router-view>
    </div>
</template>

<script>
import AppHeader from '../../components/AppHeader' 
import AppFooter from '../../components/AppFooter' 
export default {
    name:"page2",
    components:{
        AppHeader,AppFooter
    }
}
</script>

此时如果想page2搭建一个路由

然后在page2文件夹内新建router.js内
import Vue from 'vue'
import VueRouter from 'vue-router'
 //import router from './router';//page2 页面内部路由
Vue.use(require('vue-wechat-title'));//单页插件 覆盖html/htmlWebpackPlugin.options.title配置,需要在template根元素下设置v-wechat-title="$route.meta.title"

Vue.use(VueRouter)

const routes = [
    { path: '/login', name: 'login', component: r => { require(['./login/Login'], r) }, meta: { title: 'page2 登录' } }
]

export default new VueRouter({
    routes: routes,
    mode:'history'
})

公共组件放在compents内

还要新建一个vue.config.js内

module.exports = {
    pages: {
        index: {
            // 应用入口配置,相当于单页面应用的main.js,必需项
            entry: 'src/pages/index/index.js',

            // 应用的模版,相当于单页面应用的public/index.html,可选项,省略时默认与模块名一致
            template: 'public/index.html',

            // npm run build 编译后在dist目录的输出文件名,可选项,省略时默认与模块名一致
            filename: 'index.html',

            // 标题,可选项,一般情况不使用,通常是在路由切换时设置title
            // 需要注意的是使用title属性html文件 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
            title: 'index page config',

            // 包含的模块,可选项
            // chunks: ['index']
        },
        // 只有entry属性时,直接用字符串表示模块入口
        page1: {entry:'src/pages/page1/page1.js',title:'page1 config'},
        page2: {entry:'src/pages/page2/page2.js',title:'page2 config'},
        // page3: 'src/pages/page3/page3.js',
    }
}
原文地址:https://www.cnblogs.com/sansancn/p/11149471.html