zoukankan      html  css  js  c++  java
  • vue 与 vue-router 在 webpack 中的使用

    使用方式

    • 在项目中安装 vue
      npm i vue -S
    • 在 webpack 中推荐我们使用 .vue 组件模板文件定义组件,webpack 不能打包解析这种类型的文件,所以我们要去安装能够解析这种文件的 loader
      npm i vue-loader vue-template-compiler -D
    • 在项目入口文件导入 vue 模块
      import Vue from 'vue'
    • webpack 的配置文件的 module 节点中添加一条规则去处理 .vue 类型的文件,除此之外还要添加一个相关的插件(存在于我们之前下好的 loader 中)
    // 新增 rules
    { test: /.vue$/, use: 'vue-loader'}, // 处理 .vue 文件
    // 导入 plugin
    const VueLoaderPlugin = require('vue-loader/lib/plugin');
    // 在plugins 节点中新加一个插件的实例
     new VueLoaderPlugin(), // 处理 .vue文件 的插件
    
    • 定义一个 .vue文件,格式如下,分为 结构,脚本,样式三块
    <template>
        <div>
            <h1>这是login组件,使用.vue文件定义出来的</h1>
        </div>
    </template>
    
    <script>
        // export default 是 es6 模块中向外暴露成员的语法,只能使用一次,接收时的变量名可以自定义
        // 也可以用 export 暴露成员,不过接收时要用 {变量名(必须与导出时的变量名一致)} 接收,可以使用多次,按需导出,需要哪个变量就接收哪个变量
        export default {
            name: "login"
        }
    </script>
    
    <style scoped lang="less">
    <!--这里 scoped 表示作用域,也就是说样式只作用于当前组件及其子组件,如果不加就会作用于所有组件-->
    <!--lang 表示当前使用的 样式语言类型 有 less scss css-->
    </style>
    
    • 导入 .vue 文件定义的模板组件,在入口文件中新建一个 vue 实例去控制页面上的元素,通过 render 函数去渲染组件内容到页面上,页面上的 div#app就会被替换成模板文件中的结构与样式
    // 1. 导入 .vue 文件定义的模板组件
    import login from './login.vue'
    
    var vm = new Vue({
        el: '#app',
        data: {
            msg: 'zzz'
        },
        // render(createElements){
        //     return createElements(login);
        // },
        // 简写为
        render: c => c(login),
    });
    

    vue-router 在 webpack 中的使用

    • 在项目中下载 vue-router
      cnpm i vue-router -S
    • 新建几个组件app account login register
    • 新建一个 router.js 文件编写路由信息
    // 路由文件
    // 导入 vue
    import Vue from 'vue'
    // 导入 vue-router包
    import VueRouter from 'vue-router'
    // 手动安装 vue-router
    Vue.use(VueRouter)
    
    //导入 account 和 goodslist 组件
    import  account from './main/account.vue'
    import  goodslist from './main/goodslist.vue'
    import  login from './main/login.vue'
    import  register from './main/register.vue'
    
    // 创建路由对象
    let router = new VueRouter({
        routes: [
            // account goodslist
            {
                path: '/account',
                component: account,
                children: [
                    { path: 'login', component: login },
                    { path: 'register', component: register },
                ]
            },
            { path: '/goodslist', component: goodslist },
        ],
    });
    
    // 导出 router 对象
    export default router;
    
    • 注意我们这里是用 render函数渲染组件,所以我们这里路由的router-linkrouter-view 要写在render函数要渲染的那个页面上,而不是index.html#app中,因为它会被render覆盖。在这里是 app.vue,它的 template这样写
    <template>
        <div>
            <h1>app组件</h1>
    
            <router-link to="/account">account</router-link>
            <router-link to="/goodslist">goodslist</router-link>
            <router-view></router-view>
        </div>
    </template>
    
    • 这里 account组件有两个子组件,login register可以使用嵌套路由来实现,在account的路由规则中定义好子路由规则后,在account组件中写好路由连接和路由出口
    <template>
        <div>
            <h2>这是account组件</h2>
            <router-link to="/account/login">login</router-link>
            <router-link to="/account/register">register</router-link>
            <router-view></router-view>
        </div>
    </template>
    
    • 在入口文件main.jsvue实例中导入router
    // 导入 vue
    import Vue from 'vue'
    
    // 导入路由模块
    import router from './router.js'
    
    // 导入 app 组件
    import app from './app.vue'
    
    var vm = new Vue({
        el: '#app',
        render: c => c(app), // 把路由的 router-link 和 router-view 放在 render 的组件在,因为这里会覆盖 #app 的元素,不能写在 #app里
        router: router,
    });
    
    • 最后项目的文件目录结构大概是这样的


       
      webpack-vue-router.png


    作者:hgzzz
    链接:https://www.jianshu.com/p/c324c09fb0ae
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    ArcEngine中删除地物点(C#)
    Siliverlight常识
    ArcEngine 中打开数据源的连接 AO学习资料笔记
    第一次执行时没有问题,重复执行会出错、GP循环
    理解 ArcObjects 中的游标
    AO 中关于坐标系统的感想 AO学习资料 阅读
    http://www.chinabzw.com/bzlist/7_1.htm
    Delphi 文件操作(4)Reset
    c 语言指针
    Delphi 获取星期几
  • 原文地址:https://www.cnblogs.com/uniapp1/p/13442743.html
Copyright © 2011-2022 走看看