习Vue已经有一段时间了,但未对其核心思想作自己的总结和理解

Vue核心思想有两个 : 数据驱动和组件化(系统组件)

数据驱动

  数据驱动目的是让数据和DOM保持同步, 只要修改了data数据,DOM就会做相应的改变。Vue已经将这一逻辑封装好人工无需手动去操作DOM, Vue的数据驱动是利用了Object.defineProperty的特性, 以下使用原生js模拟了Vue的双向数据绑定:

  

 <input type="text" id="inputText">
<br>
<span id="data"></span>
 <script type="text/javascript">
var obj = {}
Object.defineProperty(obj, 'username', {
get: function () {
console.log('get')
},
set: function (newVal) {
console.log('set')
console.log(newVal)
document.getElementById('data').innerText = newVal
}
}) document.getElementById('inputText').addEventListener('keyup', function (event) {
obj.username = event.target.value
})
</script>

当改变了inputText的值,会自动调用set方法,而不用人工去操作。

组件化 (化整为零,可复用)

  组件化比较好理解,目前前端项目中已经大量运用了模块化开发,组件化思想是从模块化引伸而来。例如,一个网站首页可以视作一个整体的组件,下图是官网截来.

app视为一个最大的组件,以下有header, content, side三个主要子组件组合而成。画成树状就是右图的组件树, 类似HTML中的DOM树。组件化还有一个特性是可复用  --x性,如下图header作为所有页面的公共头部,除了可以在首页中使用,还可以在其他页面 (如登录页,产品详情页)复用

Vuejs核心思想学习笔记的更多相关文章

  1. Java编程思想 学习笔记1

    一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...

  2. [Java编程思想-学习笔记]第3章 操作符

    3.1  更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...

  3. Kafka/Metaq设计思想学习笔记 转

    转载自: http://my.oschina.net/geecoodeer/blog/194829 本文没有特意区分它们之间的区别,仅仅是列出其中笔者认为好的设计思想,供后续设计参考. 目前笔者并没有 ...

  4. Python核心编程--学习笔记--4--Python对象

    现在开始学习Python语言的核心部分.首先了解什么是Python对象,然后讨论最常用的内建类型,接下来讨论标准类型运算符和内建函数,之后给出对标准类型的不同分类方式,最后提一提Python目前还不支 ...

  5. [Java编程思想-学习笔记]第1章 对象导论

    1.1  抽象过程 Java是一门面向对象的语言,它的一个优点在于只针对待解问题抽象,而不用为具体的计算机结构而烦心,这使得Java有完美的移植性,也即Java的口号"Write Once, ...

  6. Java编程思想 学习笔记11

    十一.持有对象  通常,程序总是根据运行时才知道的某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型. Java实用库还提供了一套相当完整的容器类来解决这个问题,其中基本的类 ...

  7. Java编程思想 学习笔记9

    九.接口 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 1.抽象类和抽象方法  抽象类是普通的类与接口之间的一种中庸之道.创建抽象类是希望通过这个通用接口操纵一系列类. Java提 ...

  8. Java编程思想 学习笔记4

    四.控制执行流程 1.true和false 所有条件语句都利用条件表达式的真或假来决定执行路径.注意Java不允许我们将一个数字作为布尔值使用. 2.if-else 3.迭代 while.do-whi ...

  9. Java编程思想 学习笔记0(忽略)

    前言 emmm...博客荒废了好久,总是有各种借口拖延,做的许多题都没有总结.买了一本厚厚的java书,所以决定先新开一个专题,逼迫自己坚持更新学习进度吧,同时也巩固一下知识,做个记录,不至于荒废时光 ...

随机推荐

  1. 自动化运维工具-mussh工具安装配置及简单使用讲解

    1.先决条件: 安装pssh工具的主机针对远程主机需要配置免秘钥认证: ssh-keygen -t rsa ssh-copy-id [remotehost] 2.下载mussh工具安装介质: http ...

  2. MySQL获取分组后的TOP 1和TOP N记录-转

    有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接的方法可以查出来,可通过 ...

  3. C#查找字符串位置

    int i=zifuchuan.IndexOf(","); int n=(zifuchuan.SubString(i+1)).IndexOf(","); int ...

  4. 转:servlet的url-pattern匹配规则详细描述

    原文地址:servlet的url-pattern匹配规则详细描述   原文写的很详细 另外可以参考一下:Web.xml中设置Servlet和Filter时的url-pattern匹配规则 一.概述 在 ...

  5. Linux 下安装JDK和jmeter 及环境配置记录过程

    一.安装首先要查看linux系统的位数,用命令getconf LONG_BIT,我的是centOS 32位 二.官网下载32位的JDK8 http://www.oracle.com/technetwo ...

  6. 批处理DOS基础命令

    批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理.批处理文件的扩展名为bat. 批处理文件,或称为批处理程序,是由一条条的DOS命令组成的普通文本文件,可以用记事本直 ...

  7. JdbcTemplate中向in语句传参

    spring jdbc包提供了JdbcTemplate和它的两个兄弟SimpleJdbcTemplate和NamedParameterJdbcTemplate,我们先从JdbcTemplate入手, ...

  8. 怎么使用JavaScript进行进制转换

    JS 是一个很神奇的语言,内制的的很多函数可以帮我们进行数(进)制转换: JS中可以直接使用16进制: var a = 0xff; //255 将任意进制字符串转换为十进制,如二进制,八进制,十六进制 ...

  9. mysql 查询优化杂谈

    一.把某些判断移动到应用层 我们需要在一张表里面删除某种类型的数据,大概的表结构类似这样: CREATE TABLE t ( id INT, tp ENUM ("t1", &quo ...

  10. 20170731 培训Bootstrap

    Bootstrap使用 涉及培训内容框架:--1 html html为标记语言,可以理解为容器,就是用来承载你想要展示到网页的内容的容器.版本也有很多,不同版本表示不同的标记的新增或者取代. Boot ...