Vue入门基础

写在前面的话

本文章是个人学习过程的总结,以便日后的回顾和复习记忆。如果有什么地方理解错误,希望大家额可以指出,一起学习共同成长。

1. Vue是什么

1.1 直接引入

<!-- 开发版本,包含完整的警告和调试模式 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

<!-- 生产版本,删除了警告,33.30KB min+gzip -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>

1.2 构造器

每个Vue.js应用都是通过构造函数 Vue 创建一个 Vue 的根实例启动的;在实例化Vue时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项

var app = new Vue({
    el:"#app",    
    data:{
        message: ""
    },
    methods:{
        helloVue:function(){
            console.log("hello vue!")
        }
    }
})
  • [el]
    • 参数el,是element的缩写。el:"#app"表示挂载标签为id为"app"的元素,也可以用el:".app", 表示挂载标签中class为"app"的元素
  • [data]
    • 参数data表示Vue实例的数据对象,在html中用指令v-text关联
  • [methods]
    • 参数methods表示事件处理器

      注意,不应该使用箭头函数来定义 method 函数 (例如 plus: () => this.a++)。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,this.a 将是 undefined。

2. Vue指令

  • v-text(简写为{{}})——其用于连接vue里面的data的属性值
  • v-html——相当于v-text,但可以解析html语言即DOM元素等
  • v-on(简写为@事件名)——用于监听事件,如click、keyup...
  • v-show——用于隐藏组件,原理是改变display属性
  • v-if——用于隐藏组件,原理是直接删除DOM树的元素,故若调用的频次高,则v-if消耗的性能较高
  • v-bind(简写为:属性名)——绑定标签的属性值
  • v-for——用于循环组件,语法为v-for="(item, index in list)"
  • v-model——用于双向绑定,类似全局变量

    部分指令的实例代码

      <div id="app">
      <input type="button" value="添加" @click="addFood" />
      <input type="button" value="删除第一个" @click="removeFirst" />
      <input type="button" value="删除最后一个" @click="removeLast" />
    
      <ul>
          <li v-for="(item, index) in arr">{{ item }}</li>
      </ul>
      <h2 v-for="item in food" :title="item.name">{{ item.num }} : {{ item.name }}</h2>
    
      <input type="button" value="修改message" @click="setM" />
      <input type="text" v-model="message" @keyup.enter="getM" />
      <h2>{{ message }}</h2>
      </div>
    
      <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
      <script>
          var app = new Vue({
              el: "#app",
              data:{
                  arr:[1, 2, 3, 4, 5],
                  food:[
                      {name: "新兰花", num: 1},
                      {name: "西红柿", num: 2}
                  ],
                  message: "双向绑定"
              },
              methods:{
                  addFood: function () {
                      this.food.push({name: "番茄", num: 3});
                  },
                  removeLast:function () {
                      this.food.pop();
                  },
                  removeFirst:function () {
                      this.food.shift();
                  },
                  getM:function () {
                      alert(this.message);
                  },
                  setM:function () {
                      this.message = "我很帅"
                  }
              }
    
          })
      </script>

3. vue+axios网络工具

3.1 get方法

axios.get(url).then(function(response){}),function(err){}

3.2 post方法

axios.post(url, parameter).then(function(response){}),function(err){}

3.3 注意事项

axios属于回调函数,在回调函数then()中,关键字this指代的对象不是原先指代的对象,所以无法获取data中的数据。若需要获取data中的数据,则需要先把this对象存起来,例如:

<!-- axios在线地址 -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

方法A.function(){ //  joke为data中的属性
console.log(this.joke)  //  这里的this和下面的this不同
axios.get("").then(function(){
console.log(this.joke)  //  最终会显示undefined
})

解决方法:var that = this //  在回调函数外面先把对象保存起来

}

猜你喜欢

转载自www.cnblogs.com/zhengzejun666/p/12149601.html
今日推荐