vueJs(2.x)+router+vuex简易博客系统<四>

上一遍我们已经编写好了,所需界面,那么现在我们该做的事情就是接入数据了,在接入数据之前,我们所需要做的事件,就是先熟悉下vue这个渐进式框架的基本语法,由于官网的语法已经是写的非常出色了,这里我只写一点平时常用的,如果需要更加深入的vue知识还是建议学习官网

<template>
  <div id="vue">
    <!--DOM绑定数据-->
    <div v-bind:title="msg">{{message}}</div>

    <!--条件判断-->
    <div v-if="seen">我是true所以可以看到</div>
    <div v-else>我是false</div>
    <!--模块条件渲染-->
    <template v-if="seen">
      <h1>该模块显示</h1>
    </template>
    <template v-else>
      <h1>该模块不显示</h1>
    </template>
    <!--v-show只是改变css的display属性-->
    <div v-show="seen">我是show所以可以看到</div>

    <!--循环-->
    <ul>
      <li v-for="(todo,index) in todos" v-bind:key="index" v-bind:title="todo.text">
        {{index}} - {{todo.text}}
      </li>
    </ul>
    <!--遍历json-->
    <div v-for="(value,key,index) in classObject">
      {{index}} - {{key}} -- {{value}}
    </div>
    <!--绑定事件-->
    <div v-on:click="reverseMessage">{{message}}</div>

    <!--v-model实现表单输入和应用状态之间的双向绑定-->
    <input type="text" v-model="message">
    <p>{{message}}</p>

    <!--v-once绑定的数据,不会变化,注意该几点上绑定上的所有属性都不会变化-->
    <p v-once>这个并不会变化{{message}}</p>

    <!--动态渲染HTML,会引起XSS攻击-->
    <div v-html="rawHtml"></div>

    <!--v-bind动态绑定属性值-->
    <p v-bind:id="vId">222</p>

    <!--支持所有js表达式-->
    <ul>
      <li>{{num+1}}</li>
      <li v-bind:id="'list-'+vId">{{bok?'为真显示':'为假显示'}}</li>
    </ul>

    <!--
      模板表达式被放在沙盒中,只能访问全局变量的白名单:Math和Date等,访问不了用户自定义的全局变量
    -->
    <div>时间戳:{{new Date().getTime()}}</div>

    <!--修饰符:特殊方式对待默写指令,这里的 .prevent 是指触发的事件调用event.preventDefault()-->
    <form action="" v-on:submit.prevent="onSubmit"></form>

    <!--vue为最常用的两个指令进行所写v-bind:缩写成:-->
    <a :href="href">链接</a>

    <!--v-on缩写成@-->
    <a href="javascript:;" @click="reverseMessage">{{message}}</a>

    <!--
    绑定class
    下面这个是基础的绑定,然后非常灵活的绑定方式,可以直接绑定一个对象在上面,和绑定计算属性
    通过动态改变class值,可以改变一些不能展示的内容,或者改变运动方式
    -->
    <div v-bind:class="{active:isActive}">是否绑定了class</div>
    <!--绑定一个对象-->
    <div v-bind:class="classObject">绑定class对象</div>
    <!--绑定返回对象的计算属性-->
    <div v-bind:class="classObj">绑定返回对象的计算属性</div>

    <!--绑定style,绑定形式同class相似都是非常灵活-->
    <div v-bind:style="{color:activeColor,fontSize:fontSize}">绑定样式</div>
  </div>
</template>

<script>
  /* eslint-disable */
export default{
  name:"vue",
  //data必须是一个函数,返回组件所需数据
  data(){
    return {
      message:'hello world',
      msg:"页面加载于:"+new Date().toLocaleString(),
      seen:true,
      isActive:true,
      error:false,
      todos:[
        {text:'js',id:1},
        {text:'java',id:2},
        {text:'css',id:3}
      ],
      rawHtml:'<span style="color:red;">1122233344</span>',
      vId:"123",
      num:234,
      bok:false,
      href:"http://www.baidu.com",
      classObject:{
        active:true,
        'text-danger': false
      },
      activeColor:'red',
      fontSize:'30px'
    }
  },
  //方法区:定义一些组件所需方法
  methods:{
      reverseMessage:function(){
          this.message = this.message.split('').reverse().join('');
      }
  },
  //计算属性:对于一些数据进行逻辑运算,避免在模板中写的过于复杂
  computed:{
      classObj(){
        return {
          active: this.isActive && !this.error,
          'text-danger': !this.error
        }
      }
  },
  /**
   * 以下为生命周期,好比动物的一生,什么时期干什么事情
   *
   */
  beforeCreate: function () {
    console.group('beforeCreate 创建前状态===============》');
    console.log("%c%s", "color:red" , "el     : " + this.$el); //undefined
    console.log("%c%s", "color:red","data   : " + this.$data); //undefined
    console.log("%c%s", "color:red","message: " + this.message); //undefined
  },
  created: function () {
    console.group('created 创建完毕状态===============》');
    console.log("%c%s", "color:red","el     : " + this.$el); //undefined
    console.log("%c%s", "color:red","data   : " + this.$data); //已被初始化
    console.log("%c%s", "color:red","message: " + this.message); //已被初始化
  },
  beforeMount: function () {
    console.group('beforeMount 挂载前状态===============》');
    console.log("%c%s", "color:red","el     : " + (this.$el)); //undefined
    console.log("%c%s", "color:red","data   : " + this.$data); //已被初始化
    console.log("%c%s", "color:red","message: " + this.message); //已被初始化
  },
  mounted: function () {
    console.group('mounted 挂载结束状态===============》');
    console.log("%c%s", "color:red","el     : " + this.$el); //已被初始化
    console.log(this.$el);
    console.log("%c%s", "color:red","data   : " + this.$data); //已被初始化
    console.log("%c%s", "color:red","message: " + this.message); //已被初始化
  },
  beforeUpdate: function () {
    console.group('beforeUpdate 更新前状态===============》');
    console.log("%c%s", "color:red","el     : " + this.$el);
    console.log(this.$el);
    console.log("%c%s", "color:red","data   : " + this.$data);
    console.log("%c%s", "color:red","message: " + this.message);
  },
  updated: function () {
    console.group('updated 更新完成状态===============》');
    console.log("%c%s", "color:red","el     : " + this.$el);
    console.log(this.$el);
    console.log("%c%s", "color:red","data   : " + this.$data);
    console.log("%c%s", "color:red","message: " + this.message);
  },
  beforeDestroy: function () {
    console.group('beforeDestroy 销毁前状态===============》');
    console.log("%c%s", "color:red","el     : " + this.$el);
    console.log(this.$el);
    console.log("%c%s", "color:red","data   : " + this.$data);
    console.log("%c%s", "color:red","message: " + this.message);
  },
  destroyed: function () {
    console.group('destroyed 销毁完成状态===============》');
    console.log("%c%s", "color:red","el     : " + this.$el);
    console.log(this.$el);
    console.log("%c%s", "color:red","data   : " + this.$data);
    console.log("%c%s", "color:red","message: " + this.message)
  }
}
</script>

<style>

</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值