Vue语法

Vue语法

MVVM

1.什么是MVVM

MVVM (Model-View-ViewModel) 是一种软件架构设计模式,由微软WPF (用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Silverlight (类似于Java Applet,简单点说就是在浏览器上运行的WPF)的架构师Ken Cooper和Ted Peters 开发,是一种简化用户界面的事件驱动编程方式。由John Gossman (同样也是WPF和Silverlight的架构师)于2005年在他的博客上发表。

MVVM 源自于经典的MVC (ModI-View-Controller) 模式。MVVM的核心是ViewModel层,负责转换Model中的数据对象来让数据变得更容易管理和使用,其作用如下:

  • 该层向上与视图层进行双向数据绑定
  • 向下与Model层通过接口请求进行数据交互

1

2.MVVM好处

MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处:

  • 低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的
    View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  • 可复用:你可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。
  • 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
  • 可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

Vue.js 就是一个MVVM的实现者,他的核心就是实现了DOM监听数据绑定

第一个Vue程序

1.创建一个空的新文件夹,用idea引入

2**.创建一个新的html页面**

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
</body>
</html>

3.引入Vue.js

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>

4.编写项目

的id为 `vue` ,进行一个el绑定,data中`message`为固定值,在被绑定的div中使用`{{message}}`显示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="vue">
        {{message}}
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script>
        var vm = new Vue({
            el: "#vue",
            data: {
                message: "第一个Vue项目"
            }
        });
    </script>
</body>
</html>

直接默认浏览器打开该静态页面:

2

Vue基本语法

1.v-bind

现在数据和DOM已经被建立了关联,所有的东西都是响应式的。我们在控制台操作对象的属性,界面可以实时更新。

我们可以使用v-bind来绑定元素属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <div id="vue">
        <span v-bind:title="message">停这儿别动,这里有个提示信息!</span>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script>
        var vm = new Vue({
            el: "#vue",
            data: {
                message: "第一个Vue项目"
            }
        });
    </script>
</body>
</html>

3

2. v-if、v-else

message的值为 B ,在 div 中利用 v-if 进行判断 ,

  • 如果为 message==‘A’ 则显示 A;
  • 如果为 message==‘B’ 则显示 B;
  • 如果不是 A 也不是 B ,则显示 C;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="vue">
        <h1 v-if="message=='A'">A</h1>
        <h1 v-else-if="message=='B'">B</h1>
        <h1 v-else>C</h1>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script>
        var vm = new Vue({
            el: "#vue",
            data: {
                message: "B"
            }
        });
    </script>
</body>
</html>

3

3. v-for

data中加入 items 数组信息,然后利用 v-for 进行循环输出

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="vue">
        <li v-for="item in items">
            姓名:{{item.name}},年龄:{{item.age}}
        </li>
    </div>
    </body>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script>
        var vm = new Vue({
            el: "#vue",
            data: {
                items: [
                    {name: "zc", age: 20},
                    {name: "dongdong", age: 10},
                    {name: "lili", age: 16}
                ]
            }
        })
    </script>
</body>
</html>

4

4. v-on 事件绑定

  • data中message信息为boom!!
  • methods对象中绑定方法
  • 被绑定的div中加入button,利用 v-on 调用方法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="vue">
        <button v-on:click="sayHi">Click Me</button>
    </div>
    </body>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script>
        var vm = new Vue({
            el: "#vue",
            data: {
                message: "boom!!!!"
            },
            methods: {
                //方法必须绑定在Vue的Methods对象中,v-on:事件
                sayHi: (function () {
                    alert(this.message)
                })
            }
        })
    </script>
</body>
</html>

5. 双向绑定 v-model

Vue.js 中,如果使用vuex ,实际上数据还是单向的,对于我们处理表单,Vue.js的双向数据绑定用起来就特别舒服了

即两者并不互斥,在全局性数据流使用单项,方便跟踪;局部性数据流使用双向,简单易操作。

你可以用v-model指令在表单 <input><textarea><select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。

注意:v-model会忽略所有元素的value、checked、selected特性的初始值而总是将Vue实例的数据作为数据来源,你应该通过JavaScript在组件的data选项中声明。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="vue">
        输入框:
        <input type="text" value="" v-model="text">
        <p>value:{{text}}</p>
        <br>
        文本域:
        <textarea v-model="textarea"></textarea>
        <p>value:{{textarea}}</p>
        <br>
        单选框:
        <input type="radio" name="sex" value="" v-model="radio"><input type="radio" name="sex" value="" v-model="radio"><p>value:{{radio}}</p>
        <br>
        下拉框:
        <select v-model="selected">
            <option value="" disabled>-请选择-</option>
            <option>A</option>
            <option>B</option>
            <option>C</option>
        </select>
        <p>value:{{selected}}</p>
    </div>
    </body>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script>
        var vm = new Vue({
            el: "#vue",
            data: {
                text: "",
                textarea:"",
                radio: "",
                selected: ""
            }
        })
    </script>
</body>
</html>

5

6.Vue组件

组件是可复用的Vue实例,说白了就是一组可以重复使用的模板,跟JSTL的自定义标签、Thymeleaf的th:fragment 等框架有着异曲同工之妙。通常一个应用会以一棵嵌套的组件树的形式来组织:

6

基础版
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="vue">
        <zc></zc>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script>
        Vue.component("zc",{
            template: '<h1>template</h1>'
        })
        var vm = new Vue({
            el: "#vue"
        })
    </script>
</body>
</html>

7

拓展版
  • 绑定div,data中加入数组信息
  • 添加vue组件 zc
  • 利用 v-for 循环数组, v-bind 绑定数组
  • 在vue组件中用 props 接收,再添加到 template 中
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="vue">
        <zc v-for="item in items" v-bind:zc="item"></zc>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script>
        Vue.component("zc",{
            props: ['zc'],
            template: '<li>{{zc}}</li>'
        })
        var vm = new Vue({
            el: "#vue",
            data: {
                items: ['Java','Python','Php']
            }
        })
    </script>
</body>
</html>

8

个人博客为:
MoYu’s HomePage

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值