Vue基础

Vue基础

Soc原则:关注点分离员职责

Vue的核心库只关注视图层,方便与第三方库或既有项目整合

vue核心:DOM监听和数据绑定

Vue:融合MVVM+虚拟DOM

后台MVC-------->M:model V:view C:controller

前端MVVM----->Data: 数据 View:JSP VM:数据双向绑定

CSS预处理器

一门专门的编程语言,进行Web页面样式设计。

常见的css预处理器:

  1. SASS:基于Rubby,通过服务端处理,需要学习Rubby语言

  2. LESS:基于NodeJS,通过客户端处理,上手简单

创建第一个程序

<body>
    <!--view层  模板-->
    <div id="app">
        {{message}}
    </div>
    <!-- 导入vue -->
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.13/vue.js"></script>
    <script>
        // 创建vue对象,vm:数据双向绑定
        var vm=new Vue({
            el:'#app',  //绑定元素的id是app
            //model层  数据
            data:{
                message:"Hello vue"
            }           //放一个数据
        });
    </script>
</body>

//vm层 双向绑定数据   不用刷新,页面也会改变
>vm.message="你好"
 '你好'

问题:渲染不成功,页面显示{{message}}

解决:1.查看引用的cdn,使用2.x版本以上的

​ 2.var vm=new Vue({}) new Vue中V大写

创建vue程序步骤:

  1. 导入vue
  2. 创建一个vue对象
  3. 绑定一个元素
  4. 放入数据
  5. 从模板中取出

HTML 是我们的入口,但其余都会发生在新创建的 Vue 实例内部。

数据可以绑定在文本上

MVVM

image-20220725111425449

双向绑定:页面不需要刷新,就能实现控制台的变化

优点:

  • 低耦合:view和model分离,当View修改时Model可以不变,当Model修改时View可以不变

基本语法

v-bind绑定元素

<span v-bind:title="message">看看悬浮有什么!

绑定message数据到span上,悬浮显示message内容

前缀 v-表示指令,以表示它们是 Vue 提供的特殊 attribute

数据绑定在行为上

v-if条件判断

<div id="see">
    <span v-if="seen">你能看到我吗</span>
</div>
 var ne=new Vue({
     el:"#see",
     data:{
         seen:false
     }
 });
  • 当seen:false--->span标签不显示

  • 当seen:true---->span标签显示

控制台改变seen的值,文字也会随之发生变化

数据可以绑定在DOM结构上

v-for循环

<!--循环 通过遍历调用数组中的值 -->
<div id="each">
    <ol>
        <li v-for="todo in todos">
            {{todo.text}}
        </li>
    </ol>
</div>
var app4 = new Vue({
    el: '#each',
    data: {
        todos: [
            { text: '学习 JavaScript' },
            { text: '学习 Vue' },
            { text: '整个牛项目' }
        ]
    }
});

在todos数组中,依次取出数组值,形成一个列表

通过绑定数组数据,渲染列表

控制台输入app4.todos.push({text:'新项目'}),可以在列表最后加上一条数据

v-on添加事件监听器

<div id="on">
    <p>{{message}}</p>
    <button v-on:click="reverse">两极反转</button>
</div>
 var on=new Vue({
     el:"#on",
     data:{
         message:"Hello World"
     },
     methods:{
         reverse:function(){
           this.message=this.message.split('').reverse().join('')
         } 
     }
 });

v-on:click 点击按钮触发reverse函数

编写的代码只需要关注逻辑层面即可

v-model

<div id="input">
    <p>{{message}}</p>
    <input v-model="message">
</div>
var a=new Vue({
    el:"#input",
    data:{
        message:"Hello"
    }
});

实现表单输入和应用状态的双向绑定,输入框输入变化后,显示内容也会改变

组件基础

将常用的功能封装抽象成组件,便于重复,独立使用

一个组件本质上是一个拥有预定义选项的一个 Vue 实例

 <div id="app">
     <!-- v-bind 通过遍历绑定到组件的first -->
     <name
           v-for="sub in item"
           v-bind:first="sub"
           ></name>
</div>
//定义组件
//Vue.compotent('组件名',{对象})
Vue.component('name',{
    //props结束传入组件的数据,相当于形参
    props:['first'],
    template:'<li>{{first}}</li>'
})
var a=new Vue({
    el:"#app",
    data:{
        item:["java","python","c++"]
    }
});

//数据传递方向:
a.item->sub->first->在<li>中使用

在一个大型应用中,有必要将整个应用程序划分为组件,提供更为复杂的模板和逻辑,而不会影响到父单元,以使开发更易管理

注意

自定义组件名一定不能有大写,在标签中所有的大写会自动转化为小写

posted @ 2022-07-26 10:27  lerry1342  阅读(42)  评论(0)    收藏  举报