1. Knockout简介 (Introduction)

Knockout是一个轻量级的UI类库,通过应用MVVM模式使JavaScript前端UI简单化。

Knockout有如下4大重要概念:

  • 声明式绑定 (Declarative Bindings):使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上。
  • UI界面自动刷新 (Automatic UI Refresh):当您的模型状态(model state)改变时,您的UI界面将自动更新。
  • 依赖跟踪 (Dependency Tracking):为转变和联合数据,在你的模型数据之间隐式建立关系。
  • 模板 (Templating):为您的模型数据快速编写复杂的可嵌套的UI。

简称:KO

官方网站:http://knockoutjs.com

2. 入门介绍 (Getting started)

KO工作原理及带来的好处

Knockout是一个以数据模型(data model)为基础的能够帮助你创建富文本,响应显示和编辑用户界面的JavaScript类库。任何时候如果你的UI需要自动更新(比如:更新依赖于用户的行为或者外部数据源的改变),KO能够很简单的帮你实现并且很容易维护。

重要特性:

  • 优雅的依赖追踪- 不管任何时候你的数据模型更新,都会自动更新相应的内容。
  • 声明式绑定- 浅显易懂的方式将你的用户界面指定部分关联到你的数据模型上。
  • 灵活全面的模板- 使用嵌套模板可以构建复杂的动态界面。
  • 轻易可扩展- 几行代码就可以实现自定义行为作为新的声明式绑定。

额外的好处:

  • 纯JavaScript类库 – 兼容任何服务器端和客户端技术
  • 可添加到Web程序最上部 – 不需要大的架构改变
  • 简洁的 – Gzip之前大约25kb
  • 兼容任何主流浏览器 (IE 6+、Firefox 2+、Chrome、Safari、其它)
  • Comprehensive suite of specifications (采用行为驱动开发) - 意味着在新的浏览器和平台上可以很容易通过验证。

开发人员如果用过Silverlight或者WPF可能会知道KO是MVVM模式的一个例子。如果熟悉 Ruby on Rails 或其它MVC技术可能会发现它是一个带有声明式语法的MVC实时form。换句话说,你可以把KO当成通过编辑JSON数据来制作UI用户界面的一种方式… 不管它为你做什么

3. 接下来是个基本的小例子

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head><body><form><input data-bind="value:name,valueUpdate:'input',event:{change:autoSave}" /><p>Your name:<!--ko text: name--><!--/ko--></p></form><script src="knockout.js"></script><script type="text/javascript">var user = {};user.name = ko.observable();user.autoSave = function () {alert(user.name())}ko.applyBindings(user, document.querySelector('body'))</script>
</body></html>

当你在输入框中输入字符的时候,Your name处就会显示你所输入的内容,并且当你从输入框blur的时候,也会触发autoSave方法。

我们只用操纵对象user就能引起页面上的变化
例子完整代码:https://github.com/edwin-su/front-end/tree/master/Knockout/Knockout%20Example1

初识KnockoutJS相关推荐

  1. day3----编码-集合-深浅copy-文件操作-函数初识

    day3----编码-集合-深浅copy-文件操作-函数初识 本文档主要内容: 一 编码 二 集合 三 深浅copy 四 文件操作 五 函数初识 首先,我们来看看两个字符串的比较 打开cmd,进入do ...

  2. ⑥python模块初识、pyc和PyCodeObject

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  3. 初识java类的接口实现

    初识java类的接口实现 如果两个类之间不存在继承关系,且两个类都想实现同一个接口,两个类都必须实现接口中全部方法,否则报语法错误 如果两个类之间存在继承关系也想实现同一个接口,父类如果实现了某个接口 ...

  4. vba 编辑combobox内容_初识Visual Basic编辑器并建立一段简单的代码

    大家好,从今日开始我正式推出"VBA之EXCEL应用"教程,这个教程是面向初学人员的教程,教程一共三册,十七个章节,从简单的录制宏实现一直讲到窗体的搭建,都是我们在利用EXCEL工 ...

  5. 16.1、python初识面向对象(1)

    初识面向对象 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人 ...

  6. 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫

    摘要 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高.此时,我们 ...

  7. 初识mysql数据字段属性_MySQL数据库~~~~初识、基础数据类型

    一 数据库初识 1.1 什么是数据库 数据库(DataBase,简称DB),简而言之可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据运行新增,截取,更新,删除等操作. 所谓数据库 ...

  8. Nancy in .Net Core学习笔记 - 初识Nancy

    原文:Nancy in .Net Core学习笔记 - 初识Nancy 前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合. ...

  9. Python 函数初识 (1)

    一.今日主要内容 认识函数 函数:对功能或者动作的封装(定义) 语法: def 函数名字(形参) 函数体 函数的调用格式:函数名(实参) 函数的返回值 关键字:return 终止函数的运行 1.函数内 ...

  10. 细细品味大数据--初识hadoop

    初识hadoop 前言 之前在学校的时候一直就想学习大数据方面的技术,包括hadoop和机器学习啊什么的,但是归根结底就是因为自己太懒了,导致没有坚持多长时间,加上一直为offer做准备,所以当时重心 ...

最新文章

  1. OpenGL textures combined组合纹理的实例
  2. 解决vscode之前好好的能连接上linux服务器,后来报错,窗口出现故障
  3. oracle10g执行insert,oracle 10g 增强审计。表insert 及bind values
  4. Mac Redis安装入门教程
  5. 【mysql基础知识】查询当前时间之前5分钟内的数据
  6. Python中的枚举类型及其用法
  7. 剑指Offer 09 用两个栈实现队列
  8. python发明小故事简写_科学发明小故事10字以上
  9. 网管员不得不关注的九大热门网络技术
  10. 雷达波形样式_?认知雷达的架构
  11. 超全现代虚幻UE4素材网站整理
  12. 局域网打印机共享怎么设置_XP系统设置局域网共享打印机的操作步骤
  13. C++ P1091 合唱队形[DP]
  14. 史上最“犯贱”的十首情歌
  15. H5+JS+CSS3 实现圣诞情缘--学习心得2
  16. java日期的计算(当月剩余天数、获取日期当月的天数)
  17. 物联网知识之了解MOTT
  18. 计算机科学职业位置,计算机专业的职业生涯规划范文
  19. php刷新热销商品,ecshop首页如何调用指定分类下的推荐热销最新商品
  20. docker_mysql

热门文章

  1. 值得注意的两个friendster新服务:校友和web共享搜索
  2. Jquery中BlockUI的遮罩效果详解
  3. 自动驾驶仿真:角雷达坐标系转换详解
  4. 无源蜂鸣器c语言编程,无源蜂鸣器鸣叫
  5. bootstrap-datetimepicker.js与IE8的兼容问题
  6. java进出口食品安全信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  7. GlobalMapper20提取点云LAS文件当中的投影信息
  8. Windows 无法访问指定设备、路径或文件
  9. 如何与亦敌亦友的 null 说拜拜?大神原来是这么做的!
  10. 推荐几个好用的 html5 游戏源码下载网站