翻译:Knockout 轻松上手 - 1 Knockout 是什么?
原文名称:KnockoutJS Starter
Knockout 是一个非常棒的脚本库,可是我发现许多人并不了解它,所以,思胜翻译了这本著作。
这一节,我们将会讨论 Knockout 可以做什么,又如何使用它的功能。
Knockout 是一个 JavaScript 脚本库
Knockout ,从本质上讲,是一个 JavaScript 脚本库,可以用在网站或者网页的开发中。用来增强脚本的功能以便提供更好的客户体验。默认情况下,除非你调用 Knockout ,否则它什么都不会做。这是区别其他的脚本库或者框架很重要的一点。你可以从这里下载它。
Knockout 是一个 MVVM ( Model-View-ViewModel ) 库
创建 Knockout 的一个重要原因是在 Web 开发中可以应用 MVVM 模式。MVVM 是一种与面向对象不同的开发方式,通过将界面的逻辑与业务逻辑进行分离,达到可测试的目的。
有很多的原因值得我们写可测试的代码 ( 这可以用整本的书来讲 ),但是最重要的原因是代码的可维护性和质量的保证。写可测试的代码,代码会变得更加容易维护。不管怎么说,使用 MVVM 模式创建 Javascript 程序,比直接使用 DOM 的事件来编写程序,要花费更短的时间。

上面的图表说明了使用 MVVM 进行开发的基本组件及其通讯的关系。你可以看到 View,Model,ViewModel 表示为一个个的块。第一个要注意的是 Model,Model 是一个对象,通常直接表示现实中的业务逻辑。它会包含对应业务逻辑的的属性和方法。如果你使用 Model 来表示一个汽车,那么可能如下属性:
- 最大速度
- 轮胎数量
- 制造商
同时,还有一些功能:
- 鸣笛
- 前进
MVVM 中的第二个特性是 View, View 由 HTML 标记,布局,元素,颜色,以及其他的可视的界面元素组成。它里面没有逻辑和代码,完全使用定义进行说明 ( 所有的说明都使用纯粹的 HTML 完成 )。
MVVC 的第三个部分是 ViewModel,ViewModel 提供了 View 和 Model 之间的连接。如果你设计一个 ViewModel 来表示多辆汽车,它的属性可能如下:
- 汽车集合 ( Array )
- 当前的汽车 ( Object )
方法
- 添加汽车
- 对汽车排序
ViewModel 允许你将业务逻辑在 Model 中实现,而在 ViewModel 中实现界面的控制逻辑。用术语来说就是“分离方面”,这对于大型的 Web 应用开发来说很重要。
最后一个 MVVM 的特性称为 Binding 绑定。Binding 是连接用户界面的属性,事件到 ViewModel 的属性,方法的理想途径。关于绑定的一个例子可以是界面的一个按钮,通过点击它来调用 ViewModel 的 AddAutoMobile 函数,或者将界面上的多个按钮连接到 AddAutoMobile 函数上。
在 MVVM 中,类似于 View 一般使用定义式的语法进行说明,Binding 也在视图中通过定义进行说明,Knockout 也不例外,而且大量使用 HTML5 兼容的 data-bind 属性进行绑定说明。
坚实又优美的 MVVM 库,比如 Knockout 可以使你关注在应用的业务逻辑和核心功能上,而不是把时间花费在事件的注册,取消注册上,在数据发生变化的时候更新输入框的值这些细碎的问题上。
这是一个非常棒的视频,即使你听不懂英语,也一样可以通过它学会使用 Knockout。
视频地址:http://channel9.msdn.com/Events/MIX/MIX11/FRM08
翻译:Knockout 轻松上手 - 1 Knockout 是什么?的更多相关文章
- 【SVN】Linux下svn搭建配置全过程——初学者轻松上手篇
版本控制主要用到的是git和svn,其中svn界面化使用操作简单,本篇简单介绍SVN搭建配置全过程. 1. 下载并安装 yum install subversion 查看版本 svnserve --v ...
- 初识Dash -- 构建一个人人都能够轻松上手的界面,操控数据和可视化
从事数据科学工作,少不了使用Pandas.scikit-learn这些Python生态系统中的利器,还有就是控制工作流的Jupyter Notebooks,没的说,你和同事都爱用.但是,要想将工作成果 ...
- 区块链轻松上手:原理、源码、搭建与应用pdf电子版下载
区块链轻松上手:原理.源码.搭建与应用pdf电子版下载 链接:https://pan.baidu.com/s/1rKF4U9wq612RMIChs0zv8w提取码:hquz <区块链轻松上手:原 ...
- 实时计算轻松上手,阿里云DataWorks Stream Studio正式发布
Stream Studio是DataWorks旗下重磅推出的全新子产品.已于2019年4月18日正式对外开放使用.Stream Studi是一站式流计算开发平台,基于阿里巴巴实时计算引擎Flink构建 ...
- 轻松上手SpringBoot+SpringSecurity+JWT实RESTfulAPI权限控制实战
前言 我们知道在项目开发中,后台开发权限认证是非常重要的,springboot 中常用熟悉的权限认证框架有,shiro,还有就是springboot 全家桶的 security当然他们各有各的好处,但 ...
- 翻译:Knockout 快速上手 - 5: 你需要知道的顶级特性 续
Utilities Knockout 提供了许多可以你开发中使用的工具,你可以在 ko.utils 命名空间中找到它们,我最喜欢的工具如下所示: extend: 这个方法将两个对象合并在一起,调用这个 ...
- 翻译:Knockout 快速上手 - 4: 你需要知道的顶级特性
Knockout 最棒的一个特点就是它的可扩展性.Knockout 存在大量的扩展点,包含大量的工具来创建我们的应用程序.许多开发者除了 Knockout 核心库之外没有使用任何其他的脚本库 ( 甚至 ...
- 翻译:Knockout 快速上手 - 3: knockoutJS 快速上手
许多时候,学会一种技术的有效方式就是使用它解决实际中的问题.在这一节,我们将学习使用 Knockout 来创建一个常见的应用,库存管理应用. 应用概览 在创建我们的应用之前,我们需要一个公司,来理解应 ...
- 翻译:Knockout 快速上手 - 2: 安装 knockoutJS
只需要五个简单的步骤,就可以做好使用 Knockout 开发的准备! 第一步 我们需要什么? 最低限度,为了完成后面的教程,你需要如下的准备 Web 浏览器 文本编辑器 你的电脑上大约 2M 的磁盘空 ...
随机推荐
- Python(迭代器 生成器 装饰器 递归 斐波那契数列)
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...
- 剑指offer系列17---顺时针打印矩阵(不是很懂)
package com.exe4.offer; import java.util.ArrayList; /** * 17[题目]输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果 ...
- Maven的几个核心概念
POM (Project Object Model) 一个项目所有的配置都放置在 POM 文件中:定义项目的类型.名字,管理依赖关系,定制插件的行为等等.比如说,你可以配置 compiler 插件让它 ...
- 【sql】之使用sql根据身份证查询过生日人数
根据当前日期查询有多少人过生日 ,) = DATE_FORMAT(NOW(),'%m'); 查询price一样的人数 select * from people where price in (sele ...
- 进程间通信IPC之--共享内存
每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲 ...
- 如何缩短SQL Server 的启动时间
将/nosplash添加到SQLServer Manageement Studio的快捷方式可以缩短启动时间.为此,右击SSMS快捷方式(位于你的桌面上.start菜单中或任务栏中)并选择Proper ...
- Linux下diff打补丁方法
tar zxvf php-5.2.14.tar.gz gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1
- 发布一个.net mvc站点遇到的问题及解决
1.先通过vs2012发布.net mvc项目,遇到问题是一路默认下来,提示发布已成功,但对应文件夹里没有任何文件 解决: 第一步,新建了一个文件夹 第二步,在[配置文件]步骤,新建配置文件 第三步, ...
- webview和 内置浏览器的调用
http://blog.csdn.net/hudashi/article/details/8176298/ 一.启动android默认浏览器 在Android程序中我们可以通过发送隐式Intent来启 ...
- 关于Objective-C 对象release操作的一个小问题探讨
来源:http://blog.csdn.net/duxinfeng2010/article/details/8757211 最近遇到这样一个问题,以前的时候并未注意:新建一个工程,然后添加一个类,文件 ...