vue.js之使用Vue CLI3开发多页面应用-路由理解

Posted 天妖姥爷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue.js之使用Vue CLI3开发多页面应用-路由理解相关的知识,希望对你有一定的参考价值。

测试项目有3块路由,如下图

 

 

 在src目录下的router.js

import Vue from \'vue\'
import VueRouter from \'vue-router\'

Vue.use(VueRouter)

const routes = [
    {
        path: \'/\', name: \'Login\', component: r => {
            require([\'./components/Login\'], r)
        }, meta: {title: \'Login\'}
    }
    ,{
        path: \'/HelloWorld\', name: \'HelloWorld\', component: r => {
            require([\'./components/HelloWorld\'], r)
        }, meta: {title: \'HelloWorld\'}
    }
]

export default new VueRouter({
    routes: routes
})

src下的main.js

import Vue from \'vue\'
import App from \'./App.vue\'
import router from \'./router\'

Vue.config.productionTip = false

Vue.use(require(\'vue-wechat-title\'))

new Vue({
  router,
  render: h => h(App),
}).$mount(\'#app\')

 src下的App.vue

<template>
  <div id="app"  v-wechat-title="$route.meta.title">
<!--        <HelloWorld msg="Welcome to Your Vue.js App"/>-->
      <router-view></router-view>
      </div>

</template>
<script src="/js/libs/layer/layer.js"></script>

<script>

// import HelloWorld from \'./components/HelloWorld.vue\'
export default {
  name: \'app\',
  components: {
    // HelloWorld
  }
  ,mounted() {
      this.init();
  }
   ,methods:{
        init:function(){
            layui.use(\'upload\', function(){
                var upload = layui.upload;
                //执行实例
                var uploadInst = upload.render({
                    elem: \'#test1\' //绑定元素
                    ,url: \'/upload/\' //上传接口
                    ,done: function(res){
                        //上传完毕回调
                    }
                    ,error: function(){
                        //请求异常回调
                    }
                });
            });
        }
        ,loginV:function () {
            window.location.href="/console.html";
        }
  }
}
</script>
<style>
#app {
  font-family: \'Avenir\', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

 其他两块跟这个类似,关键代码在vue.config.js

module.exports = {
    pages: {
        // console: {
        //     // 应用入口配置,相当于单页面应用的main.js,必需项
        //     entry: \'src/modules/console/console.js\',
        //
        //     // 应用的模版,相当于单页面应用的public/index.html,可选项,省略时默认与模块名一致
        //     template: \'public/console.html\',
        //
        //     // 编译后在dist目录的输出文件名,可选项,省略时默认与模块名一致
        //     filename: \'console.html\',
        //
        //     // 标题,可选项,一般情况不使用,通常是在路由切换时设置title
        //     // 需要注意的是使用title属性template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
        //     // title: \'console page\',
        //
        //     // 包含的模块,可选项
        //     chunks: [\'console\']
        // },
        // 只有entry属性时,直接用字符串表示模块入口
        console: \'src/modules/console/console.js\'
        ,client: \'src/modules/client/client.js\'
        ,index:"src/main.js"
    }
}

如果存在改文件,则访问方式类似   url/client#/Index...,如下图

 

 

 

 

 

 

在页面中,我们的template 里仍然可以用 <router-view></router-view> 标签去获取路由对应的模块

当然vue.config.js 还可以有其他设置,用到了再进行完善吧

以上是关于vue.js之使用Vue CLI3开发多页面应用-路由理解的主要内容,如果未能解决你的问题,请参考以下文章

vue cli3配置多页面入口

vue cli3.0快速搭建项目详解

vue cli3.0快速搭建项目详解

如何阻止 vue cli3 构建将 vue.js.min 包含在我的 chunk-vendors.js 文件中?

Vue CLI3 - jQuery 和 Select2 - 编译错误

vue.js template怎么插入到页面中