Vue从入门到精通

1.1Vue:

Vue.js,常简称Vue,是一种专注于用户界面构造的渐进式JavaScript框架。其核心设计哲学围绕着通过一个精炼的API来实现数据的自动响应更新与视图组件的灵活组合,从而极大地提升了开发效率与代码的可维护性。Vue被构想为一个自下而上、层层递进的应用架构体系,这不仅确保了开发者能够平滑地学习曲线并快速上手,同时还赋予了框架足够的深度与弹性,以应对包括高度复杂的单页面应用程序(SPA)在内的广泛应用场景,满足现代前端开发的多元化需求。

核心特点

响应式数据绑定:Vue的核心库只关注视图层,不仅易于上手,而且便于与第三方库或既有项目整合。Vue.js的响应式系统允许数据模型(JavaScript对象)和DOM之间的双向绑定。当数据变化时,视图会自动更新;当视图中的用户输入被修改时,数据也会相应更新。

组件系统:Vue.js鼓励通过可复用的组件来构建用户界面。每个Vue组件都包含了自己的模板、逻辑和样式,它们是Vue应用的基本构建块。

指令(Directives):Vue.js使用特殊的HTML属性(指令)来扩展HTML的功能。例如,v-bind用于响应式地更新HTML属性,v-model用于在表单输入和应用状态之间创建双向数据绑定。

虚拟DOM:Vue.js使用虚拟DOM来优化DOM操作。Vue.js在内存中以JavaScript数据结构的形式维护了一个真实DOM的抽象表示(即虚拟DOM)。只有当它检测到数据变化时,Vue.js才会智能地更新实际DOM,以最小化DOM操作的数量和范围,从而提高性能。

易于学习:Vue.js的设计考虑了易于上手和易用性。即便是初学者也能很快掌握Vue.js的基本概念和构建简单应用的能力。

生态系统:Vue.js拥有一个活跃的社区和丰富的生态系统,包括Vue CLI(官方脚手架工具)、Vue Router(官方路由管理器)、Vuex(状态管理模式库)等,这些工具和库极大地简化了Vue应用的开发和维护。

使用场景

Vue.js非常适合用于构建单页应用(SPA),但也可以轻松整合到现有项目中以增加交互性。由于Vue.js的灵活性和轻量级,它也被广泛用于Web开发的各种场景,包括但不限于:

动态网站和Web应用

渐进式增强现有应用

单页应用(SPA)

复杂的前端项目

总结

Vue.js是一个功能强大、易于上手且灵活的前端框架,它通过简洁的API和强大的生态系统,为开发者提供了构建现代Web应用所需的一切。无论是小型项目还是大型应用,Vue.js都能提供高效、可维护和可扩展的解决方案。

npm install
npm run serve

工程目录:

2.1声明式渲染:
 // template即模版的意思,每一个vue文件里必须要有一个,在这里写HTML代码
    <template>
    <div id="app"></div>
    </template>

    // 在这里写js逻辑相关的代码
    <script>
    export default {
    name: "app"
  };
</script>

  // 这里写样式代码
  <style></style>

Vue由三部分组成:template,script,style:他们分别对应HTML,JS,CSS.

template中通常只有一个块元素,通常情况下都是div.

差值表达式:—》两层大括号

渲染一串文字:

<template>
  <h2>{
  
  {title}}</h2>//tem部分确定插值表达式
</template>

<script>//在script中定义字符串变量
  // export default是固定格式,不需要纠结
  export default {
    // 模块的名字
    name: "app",,
    // 页面中数据存放的地方
    data() {
      return {
        title: "优课达--学的比别人好一点"
      };
    }
  };
</script>

<!-- scope的意思表示这段样式只在本xxx.vue文件中生效,其他xxx.vue文件中不会生效,有锁定的意思 -->
<style scope>
  h2 {
    color: deeppink;
    border: 1px solid #cccccc;
  }
</style>

数组:

HTml代码和之前的写法是一样的,填充数据的时候可以吃用数组下标的形式去取数据。

<h2 class="title">{
  
  {title}}</h2>
<ul class="list">
  <li>{
  
  {todoList[0]}}</li>
  <li>{
  
  {todoList[1]}}</li>
  <li>{
  
  {todoList[2]}}</li>
  <li>{
  
  {todoList[3]}}</li>
  <li>{
  
  {todoList[4]}}</li>
</ul>
//然后在script中定义数组 
  <script>
export default {
  name: "app",
  data() {
    return {
      title: "今日待完成事项",
      todoList: [
        "完成HTML标签学习",
        "完成CSS文字样式学习",
        "完成CSS盒模型学习",
        "完成Flex布局学习",
        "完成JavaScript入门学习"
      ]
    };
  }
};
</script>
  //修改一下样式CSS
<style lang="scss" scope>
  .title {
    box-sizing: border-box;
    width: 300px;
    height: 30px;
    margin: 0;
    padding: 0 20px;
    font-size: 18px;
    font-weight: 700;
    line-height: 30px;
    color: white;
    background: #fd6821;
    border-radius: 6px;
  }
  .list {
    list-style: none;
    margin: 0;
    padding: 0;
    margin-top: 15px;
    li {
      box-sizing: border-box;
      width: 300px;
      height: 30px;
      padding: 0 20px;
      margin-bottom: 8px;
      font-size: 14px;
      line-height: 30px;
      background: #8d999d;
      color: white;
      border-radius: 5px;
    }
  }
</style>

注意:data,scope:

data:方法里面是用来存放数据或者全局变量

scope:将css代码锁定在本文件中,只能在本文件中有用。


差值表达式-对象

渲染一个班级名单列表:

<script>
export default {
  name: "app",
  data(){
      return {
          list:[
              {
                  name:"张三",
                  grade:"三年级二班",
                  mark:290
              },
              {
                  name:"李四",
                  grade:"三年级二班",
                  mark:270
              },
              {
                  name:"王五",
                  grade:"三年级二班",
                  mark:270
              }
          ]
      }
  }
};
</script>
2.2处理用户输入

v-model(双向绑定)–input

双向绑定:两个输入框

上面的框的内容改变的时候下面的框的内容跟随改变。

用法:

<template>
  <p class="page">{
  
  {message}}</p>
  <input type="text" v-model="message" placeholder="请输入你想输入的内容" />
</template>
<script>
export default {
    name: "app",
    data() {
        return {
            message: ""
        };
    }
};
</script>
<textarea v-model="message" placeholder="请在输入框内输入...">

双向绑定+复选框:

示例:

<div class="food">
  <div class="check-box">
    <input type="checkbox" value="新奥尔良鸡腿堡" v-model="checkedGoods" />
  </div>
  <div class="food-name">新奥尔良鸡腿堡</div>
  <div class="food-price">¥24</div>
</div>
<script>
  
export default {
    name: "app",
    data() {
        return {
            checkedGoods: []
        };
    }
};
</script>
2.3处理用户事件
  1. v-on事件绑定:

第一步:给元素添加点击事件

<button v-on:click="add">按钮</button>
//这样就给按钮注册了一个点击的事件
当点击该按钮的时候就会驱动add方法

简写:Vue为了方便用户开发,每个指令都有一个简写的模式

v-on的简写就是@符号

<button @click="add">按钮</button>
  1. methods(方法)

第二步:给点击事件添加方法

  1. 抽离方法

将js代码中的方法写在vue中的规定位置

let alertFn = function () {
  alert("Hello World");
};

document.getElementById("btn").addEventListener("click", alertFn);
  1. 认识方法的书写位置
<script>
export default{
    name:"app",
    methods:{
        // 在这里存放方法
    }
}
</script>
  1. 将抽离的方法放在对应的位置

存放方法的形式的键值对key:value的形式key就是方法名。

value就是方法体

<script>
export default{
    name:"app",
    methods:{
        alertFn:function(){
            alert("Hello World");
        }
    }
}
</script>

案例:

点击按钮数字+1;

<template>
  <p>{
  
  { counter }}</p>
  <button @click="add">点击</button>
</template>
<script>
export default {
     
     
    name: "app",
    data() {
     
     
        return {
     
     
            // 初始次数
            counter:0
        };
    },
    methods:{
     
     
        add:function(){
     
     
            // 这里的this指向当前的vue实例
            this.counter++
        }
    }
};
</script>
//this纸箱的是当前vue的实例,用在data定义的变量就必须在变量面前加this

<button @click="add">点击</button>
<!-- 等同于 -->
<button @click="add()">点击</button>

<!-- 当你的方法需要接收参数的时候,你可以将参数写在这个括号内 -->
<button @click="add(number)">点击</button

事件修饰符:

  1. 阻止冒泡事件
<div @click.stop="fn2"></div>
  1. 捕获事件
<div class="div2" @click.capture="fn2"></div>
  1. 阻止默认事件
<div class="div2" @click.prevent="fn2"></div
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值