zoukankan      html  css  js  c++  java
  • day-79vue

    vue组件的生命周期钩子

      一个vue组件从创建到销毁整个生命周期过程中一些时间节点回调的方法

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>vue组件的生命周期钩子</title>
    </head>
    <body>
        <div id="app">
            <h1>一个vue组件从创建到销毁整个生命周期过程中一些时间节点回调的方法</h1>
            <local-tag></local-tag>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        let localTag = {
            template: `
            <div>
                <h2 @click="btnClick">{{ msg }}</h2>
            </div>
            `,
            data () {
                return {
                    msg: '局部组件',
                    x: 'x',
                    y: 'y'
                }
            },
            methods: {
                btnClick () {
                    console.log(this.msg)
                },
                zzz() {}
            },
            beforeCreate () {
                console.log('组件开始创建,数据和事件都未创建');
                console.log(this.msg);
                console.log(this.btnClick);
                console.log(this.$data);                                    
            },
           
            created () {
                console.log('组件已经创建完毕,数据与事件都准备就绪');              <!--虚拟DOM准备完毕,真实DOM还没渲染,通常用在原始数据在加载前改成动态数据-->
                console.log(this.msg);
                console.log(this.btnClick);
                console.log(this.$data);                                          <!--访问整个data数据-->
                console.log(this.$options.methods);                   <!--访问整个methods数据-->
                console.log(this.$options.pppp);                     <!--访问整个自定义数据-->
            },
        };                    
    
    
            mounted    (){                                                        <!--通过挂载点,真实DOM已把虚拟DOM替换完毕-->
                console.log();
                console.log(this.msg);
            }
        
        
        
        new Vue({
            el: '#app',
            components: {
                localTag,
            }
        })
    </script>
    </html>

     Vue项目开发

    1.安装node与npm
    2.安装cnpm
    3.安装脚手架
    4.创建项目
    5.ychram打开项目配置npm服务

    项目目录介绍

    node_modules:项目依赖
    
    public:公用文件
        favicon.ico:页面标签图标
        index.html:项目的唯一页面(单页面)                #href="<%= BASE_URL %>favicon.ico" BASE_URL是绝对定位到public文件夹
        
    src:项目开发文件目录
        assets:静态资源
            css|js|img
        components:小组件
            *.vue
        views:视图组件
            *.vue
        App.vue:根组件
        main.js:主脚本文件
        router.js:路由脚本文件 - vue-router
        store.js:仓库脚本文件 - vuex
        
    *.xml|json|js:一系列配置文件
    README.md:使用说明

    main.js文件

     在main中配置的信息就是给整个项目配置
         已配置 vue | 根组件App | 路由 | 仓库
         以后还可以配置 cookie | ajax(axios) | element-ui

    import Vue from 'vue'                          // node_modules下的依赖直接写名字
    import App from './App.vue'                   // ./代表相对路径的当前目录,文件后缀军可以省略
    import router from '@/router.js'               // @ 代表src的绝对路径
    import store from './store'
    
    
    Vue.config.productionTip = false;              // Tip小提示
    
    
    import '@/assets/css/reset.css'                // 配置自定义reset.css
    
    // new Vue({
    //   router,
    //   store,
    //   render: h => h(App)
    // }).$mount('#app')
    
    new Vue({
        el: '#app',
        router: router,
        store,
        
        //推导过程 render: function (fn) {
        //                 return fn(App)
        //             }
        //             function (h) {return 1} | (h) => {return 1} | h => 1
        
        
        render: readTemplateFn => readTemplateFn(App)
    });

     vue组件

    基本模板

    <template>
        <div class="owen">                                <!--html代码:有且只有一个根标签-->
    
        </div>
    </template>
        
    <script>
        export default {                    <--!内部导出,外部导入-->
                                                         <!--js代码:在export default {} 的括号内完成组件的各项成员:data|methods|... -->    
        }
    </script>
    
    <style scoped>                                        <!--css代码:scoped样式组件化 - 样式只在该组件内部起作用,如果跟组件不加,是全局控制 -->
    
    </style>

    自定义组件与使用

    <!-- components/OwenComponent.vue -->
    
    <template>
        <div class="owen">
            <h1 :class="{active: is_active}" @click="btnClick">owen组件</h1>
        </div>
    </template>
    
    <script>
        export default {
            data () {
                return {
                    is_active: false
                }
            },
            
            methods: {
                btnClick() {
                    this.is_active = !this.is_active;
                }
            }
        }
    </script>
    
    <style scoped>
        .active {
            color: red;
        }
    </style>
    
    
    
    <!-- views/About.vue -->
    
    <template>
        <div class="about">
            <h1>This is an about page</h1>
            <h2></h2>
            
            
            <owen-comp></owen-comp>                                <!-- 使用组件 -->
            <OwenComp></OwenComp>
        </div>
    </template>
    <script>
     
        import OwenComp from '@/components/OwenComponent'          <--!导入组件,组件名随意-->
        export default {
            components: {
                OwenComp,  /                                    <--!注册组件-->
            }
        }
    </script>

    vue路由

    视图组件

    <template>
        <div class="home">
            <Header></Header>
            <div class="wrap">
                <h1>Home页面</h1>
            </div>
        </div>
        
    </template>
    <script>
       
        export default {
            components: 
            }
        }
    </script>
    
    <style scoped>
      
    </style>

    路由注册

    import Vue from 'vue'
    import Router from 'vue-router'
    
    import Home from './views/Home.vue'                        <!--导入视图组件-->
    import User from './views/User'
    
    Vue.use(Router);
    
    export default new Router({
        mode: 'history',
        base: process.env.BASE_URL,
        routes: [                            
            {
                path: '/',
                name: 'home',                            <!--名字可有可无-->
                component: Home                            <!--关联的视图组件-->
            },
            {
                path: '/user',
                name: 'user',
                component: User
            }
        ]
        // routes: [
        //     {
        //         path: '/',
        //         name: 'home',
        //         component: Home
        //     },
        //     {
        //         path: '/about',
        //         name: 'about',
        //         // route level code-splitting
        //         // this generates a separate chunk (about.[hash].js) for this route
        //         // which is lazy-loaded when the route is visited.
        //         component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
        //     }
        // ]
    })

    根组件

    <template>
      <div id="app">
        <div id="nav">
          <router-link to="/">Home</router-link> |                        <!--系统组件,浏览器解析为a标签,完成跳转-->
          <router-link to="/about">About</router-link>                    
        </div>
        <router-view/>                                                    <!--系统组件,要显示哪个视图组件-->
      </div>
    </template>
    
    <style>
    
    #app {
      font-family: 'Avenir', Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-align: center;
      color: #2c3e50;
    }
    #nav {
      padding: 30px;
    }
    
    #nav a {
      font-weight: bold;
      color: #2c3e50;
    }
    
    #nav a.router-link-exact-active {
      color: #42b983;
    }
    </style>
  • 相关阅读:
    pbfunc外部函数扩展应用-直接在Datawindow中生成QR二维码,非图片方式
    一、PBNI环境搭建及初步使用
    Powerbuilder编写身份证校验码
    Maven本地安装JAR包组件
    使用SSH通过秘钥登录Linux
    Intellij IDEA下载
    ubuntu使用root用户登录桌面
    Ubuntu安装JDK1.8与配置环境变量
    Ubuntu 安装 JDK 7 / JDK8 的两种方式
    CentOS 7.0关闭默认防火墙启用iptables防火墙
  • 原文地址:https://www.cnblogs.com/klw1/p/11332000.html
Copyright © 2011-2022 走看看