Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Vue之初识Vue

Vue之初识Vue

作者头像
用户1195962
发布于 2018-09-13 08:32:49
发布于 2018-09-13 08:32:49
88700
代码可运行
举报
文章被收录于专栏:LanceToBigDataLanceToBigData
运行总次数:0
代码可运行

前言

如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维, 因为Vue.js是数据驱动的,你无需手动操作DOM。它通过一些特殊的HTML语法,将DOM和 数据绑定起来。一旦你创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相 应地更新。

一、Vue简介

1.1 渐进式框架-Vue

vue官网说:Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。 渐进式我个人理解就是阶梯式向前。vue是轻量级的,它有很多独立的功能或库,我们会根据 我们的项目来选用vue的一些功能。就像我们开发项目时如果只用到vue的声明式渲染,我就 只用vue的声明渲染,而我们要用他的组件系统,我们可以引用它的组件系统。 vue的渐进式表现为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
声明式渲染——组件系统——客户端路由——-大数据状态管理——-构建工具

1.2 Vue两个核心点

1.2.1 响应式数据绑定
  • 当数据发生变化是,vue自动更新视图。
  • 它的原理是利用了 Object.definedProperty 中的setter/getter 代理数据, 监控对数据的操作。(这就是为什么vue不支持ie8 以及更早的ie浏览器的原因) 1.2.2 组合的视图组件
  • ui页面映射为组件书
  • 划分组件可维护、可重用、可测试

1.3 虚拟Dom

js的运行速度已经很快了,然而大量的DOM 操作就会变得很慢,但是前端本身就是要通过 JS处理DOM来更新视图数据的。这样在更新数据后会重新渲染页面,这样就造成在没有 改变数据的地方也重新渲染了DOM节点。这样性能方面就会很受影响。

利用在内存中生成与真实DOM与之对应的数据结构,这个在内存中生成的结构称之为虚拟DOM。 当数据发生变化时,能够智能的计算出重新渲染组件的最小代价并应用到DOM操作上。 vue就是利用了这一点。(vue 渲染组件的步骤图:)

二、MVVM模式

我们可能经常听说的有MVC模式和MVVN模式。 angularJS就是所谓的 MVC 模式的框架,model 、view、controller。 而vue 是 MVVM 模式的框架:

  • M: model (数据层,也就是指数据(前端是js))
  • V:view ( 也就是指DOM层 或用户界面 )
  • VM : view-model (处理数据和界面的中间层,也就是指Vue)

三、第一个Vue程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>
<head>
    <meta charset="utf-8" />
    <script type="text/javascript" src='https://unpkg.com/vue'></script>
</head>
<body>
    <div id="app">
        {{ message }}
    </div>
</body>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            message: 'Hello world!'
        }
    })
</script>
</html>

1)构造器 每个 Vue.js 应用都是通过构造函数 Vue 创建一个Vue的根实例启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var vm = new Vue({
  // 选项
})

2)属性与方法 每个 Vue 实例都会代理其 data 对象里所有的属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var data = { a: 1 }
var vm = new Vue({
  data: data
})
vm.a === data.a // -> true
// 设置属性也会影响到原始数据
vm.a = 2
data.a // -> 2
// ... 反之亦然
data.a = 3
vm.a // -> 3

除了 data 属性, Vue 实例暴露了一些有用的实例属性与方法。 这些属性与方法都有前缀 $,以便与代理的 data 属性区分。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var data = { a: 1 }
var vm = new Vue({
  el: '#example',
  data: data
})
vm.$data === data // -> true
vm.$el === document.getElementById('example') // -> true
// $watch 是一个实例方法
vm.$watch('a', function (newVal, oldVal) {
  // 这个回调将在 `vm.a`  改变后调用
})

3)实例生命周期 每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如,实例需要配置数据 观测(data observer)、编译模版、挂载实例到 DOM ,然后在数据变化时更新 DOM 。 在这个过程中,实例也会调用一些 生命周期钩子 ,这就给我们提供了执行自定义逻辑的 机会。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>

<head>
    <meta charset="utf-8" />
    <script type="text/javascript" src='https://unpkg.com/vue'></script>
</head>

<body>
    <div id="app">
        {{ message }}
    </div>
</body>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            message: 'Hello Vue!'
        },
        beforeCreate: function () {
            console.log("vue beforeCreate......")
        },
        created: function () {
            console.log("vue created......")
        },
        beforeMount: function () {
            console.log("vue beforeMount......")
        },
        mounted: function () {
            console.log("vue mounted......")
        },
        beforeUpdate: function () {
            console.log("vue beforeUpdate......")
        },
        updated: function () {
            console.log("vue updated......")
        },
        beforeDestroy: function () {
            console.log("vue beforeDestroy......")
        },
        destroyed: function () {
            console.log("vue destroyed......")
        }
    })
</script>

</html>

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vue beforeCreate......
vue created......
vue beforeMount......
vue mounted......

谷歌浏览器控制台输入 app.message = 11111
vue beforeUpdate......
vue updated......

app.$destroy()
vue beforeDestroy......
vue destroyed......
undefined
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文读懂 WebSocket 通信过程与实现
WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输。但它跟 HTTP 没什么关系,它是一种基于 TCP 的一种独立实现。
前端教程
2018/07/27
6660
一文读懂 WebSocket 通信过程与实现
Python 实现 WebSocket 通信
WebSocket 协议主要用于解决Web前端与后台数据交互问题,在WebSocket技术没有被定义之前,前台与后端通信需要使用轮询的方式实现,WebSocket则是通过握手机制让客户端与服务端建立全双工通信,从而实现了更多复杂的业务需求。
王瑞MVP
2022/12/28
1.9K0
php实现websocket实时消息推送
软件通信有七层结构,下三层结构偏向与数据通信,上三层更偏向于数据处理,中间的传输层则是连接上三层与下三层之间的桥梁,每一层都做不同的工作,上层协议依赖与下层协议。基于这个通信结构的概念。
OwenZhang
2021/12/08
2.2K0
php实现websocket实时消息推送
再聊一道面试题:Websocket
事情是这样shai儿的,早在很多年前老李曾经到一家公司去面试,面试官和老李之间产生了这样一段对话:
老李秀
2020/04/26
4.8K0
再聊一道面试题:Websocket
WebSocket从入门到精通,半小时就够!
本文原题“WebSocket:5分钟从入门到精通”,作者“程序猿小卡_casper”,原文链接见文末参考资料部分。本次收录时有改动。
JackJiang
2020/10/14
1.8K0
WebSocket从入门到精通,半小时就够!
WebSocket:5分钟从入门到精通
作者:程序猿小卡 https://segmentfault.com/a/1190000012709475 一、内容概览 WebSocket的出现,使得浏览器具备了实时双向通信的能力。本文由浅入深,介绍了WebSocket如何建立连接、交换数据的细节,以及数据帧的格式。此外,还简要介绍了针对WebSocket的安全攻击,以及协议是如何抵御类似攻击的。 二、什么是WebSocket HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。
企鹅号小编
2018/02/07
1.1K0
PHP实现WebSocket实例详解
WebSocket 协议是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
超级小可爱
2023/02/20
1K0
3分钟使用 WebSocket 搭建属于自己的聊天室(WebSocket 原理、应用解析)
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2023/11/22
3.4K1
3分钟使用 WebSocket 搭建属于自己的聊天室(WebSocket 原理、应用解析)
WebSocket相关
原文:http://www.cnblogs.com/jinjiangongzuoshi/p/5062092.html 前言 今天看了一些资料,记录一下心得。 websocket是html5引入的一个新特性,传统的web应用是通过http协议来提供支持,如果要实时同步传输数据,需要轮询,效率低下 websocket是类似socket通信,web端连接服务器后,握手成功,一直保持连接,可以理解为长连接,这时服务器就可以主动给客户端发送数据,实现数据的自动更新。 使用websocket需要注意浏览器和当前的
新人小试
2018/07/05
5410
WebSocket攻防对抗一篇通
在一次做项目的时候本来是想去点击Burpsuite的Proxy界面的HTTP History选项卡来查看HTTP历史请求记录信息并做测试的,但是在查看的时候却下意识的点击到了HTTP Proxy右侧的"WebSockets History"选项卡中,从界面的交互历史中发现网站有使用WebSocket进行通信,虽然之前有对Websocket有一些简单的了解(比如:跨越问题),但是未对此进行深入研究,这让我产生了需要深入研究一下的想法
Al1ex
2024/06/21
3870
WebSocket攻防对抗一篇通
【WebSocket】505- WebSocket 入门到精通
WebSocket的出现,使得浏览器具备了实时双向通信的能力。本文由浅入深,介绍了WebSocket如何建立连接、交换数据的细节,以及数据帧的格式。此外,还简要介绍了针对WebSocket的安全攻击,以及协议是如何抵御类似攻击的。
pingan8787
2020/03/02
1.9K0
什么是WebSocket协议?
WebSocket的出现,使得浏览器具备了实时双向通信的能力。本文由浅入深,介绍了WebSocket如何建立连接、交换数据的细节,以及数据帧的格式。此外,还简要介绍了针对WebSocket的安全攻击,以及协议是如何抵御类似攻击的。
技术从心
2019/08/06
1.5K0
什么是WebSocket协议?
php基于websocket的那些事儿
本文实例讲述了php基于websocket搭建简易聊天室实践。分享给大家供大家参考。具体如下:
php007
2019/08/05
8770
php基于websocket的那些事儿
websocket
短轮询(Polling)的实现思路就是 浏览器端 每隔几秒钟向 服务器端 发送http请求,服务端在收到请求后,不论是否有数据更新,都直接进行响应。 在服务端响应完成,就会关闭这个Tcp连接 ,如下图所示:
用户10106350
2022/10/28
2.7K0
掌握Linux网络设计中的WebSocket服务器
简介: 本文探索了在Linux环境下实现WebSocket服务器的网络设计,将WebSocket服务器作为连接世界的纽带,为读者介绍了如何掌握Linux网络设计中的关键技术。文章从实现WebSocket协议到优化服务器性能和稳定性等方面进行了深入讲解。通过学习本文,读者将能够全面了解WebSocket服务器的原理和工作机制,并获得构建高效、可靠的Linux WebSocket服务器的实用技巧和最佳实践。无论是初学者还是有经验的开发人员,都能从本文中获得宝贵的知识和启发,进一步提升在Linux网络设计中的能力。让我们一同打造连接世界的纽带,掌握Linux网络设计中WebSocket服务器的精髓。
Lion Long
2024/08/15
1150
掌握Linux网络设计中的WebSocket服务器
理论联系实际:从零理解WebSocket的通信原理、协议格式、安全性
WebSocket的出现,使得浏览器具备了实时双向通信的能力。本文由浅入深,介绍了WebSocket如何建立连接、交换数据的细节,以及数据帧的格式。此外,还简要介绍了针对WebSocket的安全攻击,以及协议是如何抵御类似攻击的。
JackJiang
2018/08/23
1.7K0
you-dont-know-websocket
本文阿宝哥将从多个方面入手,全方位带你一起探索 WebSocket 技术。阅读完本文,你将了解以下内容:
阿宝哥
2020/07/29
1.8K0
you-dont-know-websocket
websocket
这时启动django项目会报错CommandError: You have not set ASGI_APPLICATION, which is needed to run the server.
GH
2020/03/19
2.9K0
腾讯云CDN支持WebSocket
Websocket是用于服务端主动向客户端推送消息的技术。传统的HTTP/HTTPS只能由客户端向服务端发起请求,服务端对请求一一响应。在需要获取服务端状态变化的场景下,如:提交的后台任务是否执行成功,只能通过客户端轮询向服务端发起请求,不仅效率低,还浪费资源(HTTP1.0下每次轮询都需要经过TCP三次握手重新建立连接)。而WebSocket的出现较好的解决了这个问题,在TCP首次建立完连接之后,该连接不自动关闭,在有效期内客户端可以继续向服务端发送消息,服务端也能主动给客户端发送消息。
yaho
2020/05/02
23.9K0
腾讯云CDN支持WebSocket
PHP webSocket实现网页聊天室
http请求只能由客户端主动发起,服务器响应的模式, 服务器无法主动向客户端推数据,websocket的出现完美的解决了这一问题。 websocket和http处于同一层,都是基于TCP协议的,客户端和服务器使用websocket通讯的时候需要握手和传输数据两步, 握手借助http状态码101 switch protocol从http协议转换到websocket协议,之后便和http协议无关了。
用户3094376
2018/09/12
7.1K0
相关推荐
一文读懂 WebSocket 通信过程与实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验