zoukankan      html  css  js  c++  java
  • VUE篇 4 脚手架安装 过滤器 moment.js 生命周期 router

    脚手架安装

      1在电脑上安装node 和npm  

        输入 node -v 和 npm -v 确保有版本号输出

      2  安装淘宝镜像源

    npm install -g cnpm --registry=https://registry.npm.taobao.org

    3安装VUE脚手架

    npm install -g @vue/cli

     

    4 拉回2版本

    npm install -g @vue/cli-init

    过滤器 {{  msg| filter }}

        (我想到了angualr的管道了 原来叫过滤器啊) 

    1.局部过滤器 在当前组件内部使用过滤器

      在组件中写入filters键值对 里面写filter的方法  (方法可以传参 也可以不传)

        

    //声明
    filters:{
        '过滤器的名字':function(val,a,b){
            //a 就是alax ,val就是当前的数据
        }
    }
    //使用  管道符
    数据 | 过滤器的名字('zxd''cyy')
       let App = {
            data() {
                return {
                    msg:'xxxx2312'
                };
            },
            template:`
            <div>我是APP   --{{msg | myReverse}}
            <h2>{{time |myTime('YYYY-MM-DD') }}</h2>
            </div>
               `,
            filters:{
                myReverse:function (val){
                        console.log(val);
                        return val.split('').reverse().join('')
                },
                myTime:function (val,formatStr){
                    return moment(val).format(formatStr)
                }
            }
    App组件用的过滤器

    http://momentjs.cn/  这里下载的moment.js 可以很方便的对后端发来的数据做格式化处理!  

    》 moment(new Date()).format('YYYY-MM-DD')
    
    
    "2020-09-24"
    >moment('2018-07-24').fromNow();
    
    "2 years ago"

    2.全局过滤器 只要过滤器一创建,在任何组件中都能使用 *** 

    Vue.filter('过滤器的名字',function(val,a,b){})
    在各个组件中都能使用
    数据 | 过滤器的名字('alex''wusir')

    生命周期的钩子函数

    从生到死

                      ed用的多 

    diff算法

    • beforeCreate

    • created 组件创建 ***

      • 虚拟DOM React

      • 发送ajax 获取数据 实现数据驱动视图

    • beforeMount

    • mounted ***

      • 获取真实DOM

    • beforeUpdate

    • updated                 //跟onchange有点像、、

    • activated

      • 激活当前组件

    • deactivated

      • <keep-alive> Vue提供的内置组件,主要作用,让组件产生缓存

      • 停用当前组件

    • beforeDestroy

    • destroyed

      • 如果开了定时器,一定要关闭定时器

    • beforeCreate(){
      
          // 组件创建之前
      
          console.log(this.msg);
      
      },
      
      created(){
      
          // 组件创建之后
      
          // 使用该组件,就会触发以上的钩子函数,created中可以操作数据,发送ajax,并且可以实现vue==》页面的影响  应用:发送ajax请求
      
          console.log(this.msg);
      
          // this.msg = '嘿嘿黑';
      
      },
      
      beforeMount(){
      
          // 装载数据到DOM之前会调用
      
          console.log(document.getElementById('app'));
      
      },
      
      mounted(){
      
          // 这个地方可以操作DOM
      
          // 装载数据到DOM之后会调用 可以获取到真实存在的DOM元素,vue操作以后的DOM
      
          console.log(document.getElementById('app'));
      
      },
      
      beforeUpdate(){
      
          // 在更新之前,调用此钩子,应用:获取原始的DOM
      
          console.log(document.getElementById('app').innerHTML);
      
      },
      
      updated(){
      
          // 在更新之前,调用此钩子,应用:获取最新的DOM
      
          console.log(document.getElementById('app').innerHTML);
      
      },
      
      beforeDestroy(){
      
          console.log('beforeDestroy');
      
      },
      
      destroyed(){
      
          console.log('destroyed');
      
      },
      
      activated(){
      
          console.log('组件被激活了');
      
      },
      
      deactivated(){
      
          console.log('组件被停用了');
      
      }
    • Vue的全家桶(kfc) vue+vue-router+vuex

      vue+vue-router 主要来做 SPA(Single Page Application) 单页面应用

      vue-router是vue的核心插件

       

      为什么要使用单页面应用?

      传统的路由跳转,如果后端资源过多,会导致页面出现白屏现象,让前端来做路由,在某个生命周期的钩子函数中发送ajax,数据驱动。为了用户体验

    下载vue 路由插件

    https://router.vuejs.org/zh/guide/#html   

    把 https://unpkg.com/vue-router@3.4.5/dist/vue-router.js   下载下来

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="app"></div>
    
    
    
    <script src="vue.js"></script>
    <script src="vue-router.js"></script>
    <script>
        // 如果是模块化编程,Vue.proptotype.$VueRouter = VueRouter
    
        //组件
        const Home = {
            data(){
                return {}
            },
            template:`<div >我是首页下面的页面</div>`
        };
        const Course = {
            data(){
                return {}
            },
            template:`<div >我是课程下面的页面</div>`
        };
    
        // 路由
        const router = new VueRouter({
            mode:'history',
            routes:[
                {path:'/home',component:Home},
                {path:'/',
                redirect:'/home'
                ,component:Home},{path:'/course',component:Course}]
        })
    
    
        let App={
            data(){
                return{
    
                }
            },
            template: `
                <div>
                    <div  class="header">
                     <router-link to = '/'>首页啊</router-link>
                     <router-link to = '/course'>免费课程啊</router-link>
                    </div>
    
    
                    <router-view></router-view>
                </div>
                    `,
        }
    
    
        new Vue({
            el:'#app',
            // router:router,
            router,
            data(){
                return{}
            },
            template:`
            <App />
            `,
            components:{
                App
            }
        })
    
    </script>
    
    </body>
    </html>
    路由demo

    实例化路由
    const router = new VueRouter({})
    路由设置中的写上下面,可以去掉# 
    mode:'history',
    设置路由 列表里面对象的形式
    routes:[
    {path:'/home',component:Home},
    {path:'/',
    redirect:'/home'
    ,component:Home},{path:'/course',component:Course}]



    在Vue 类写上:
    router,  或 router:router,
    
    
    <router-link to = '/'>首页啊</router-link>   这个类似于a标签   to 类似于href 来跳转、
    <router-view></router-view>  这个标签用来显示加载跳转的路由的页面

    命名路由 :
    在路由配置中加上name属性
     {path:'/homesad',component:Home,name:'Home'},

    然后模板这么写

      <router-link :to = '{name:"Home"}'>首页啊</router-link>

    这样 to 和name就绑定了。 当我们改变path的时候,不需要改变to属性的值了

    动态路由匹配

      如何获取url的参数信息呢?

        参数信息有 params   如下:

    http://127.0.0.1:8080/user/1 

        和query      如下:

    http://127.0.0.1:8080/user?user_id =1

    路由配置中:

    这么做:

     path: '/user/:id'  

    在<router-link >标签中再加上params:{id:1}  或query:{id:1}  

    在data中声明一下

      然后用钩子 watch 监听  调用

    to.params.id

    然后用声明的字段赋值

    最后用到模板上就行了啊

    const User = {
            data() {
                return {
                    user_id:null
                }
            },
            template: `<div>我是用户{{ user_id}}</div>`,
            created() {
                console.log(this.$route); //路由信息对象
    //            提醒一下,当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。
            },
            watch: {
                '$route'(to, from) {
                    // 对路由变化作出响应...
                    console.log(to.params.id);
                    console.log(from);
                    this.user_id = to.params.id;
                    //发送ajax
    
                }
            }
        }
    View Code

    编程路由 
     害,就是一个标签写一个方法 比如点击事件,

    <button @click="clickH">首页 </button>

      配置路由照样写哈

     

    然后再methods 写一个对应的方法 这个方法用到了 router.push

            methods:{
                clickH(){
                    this.$router.push({
                        name:'Home'
                    })
                }
            }
  • 相关阅读:
    html5——拖拽
    html5——多媒体(四)
    html5——多媒体(三)
    html5——多媒体(二)
    html5——全屏滚动
    html5——web字体
    html5——伸缩比例案例(携程)
    html5——伸缩比例
    html5——伸缩布局
    html5——多列布局
  • 原文地址:https://www.cnblogs.com/zhuangdd/p/13727276.html
Copyright © 2011-2022 走看看