介绍

knockoutjs 是一个能够帮助你创建一个具有干净基础数据模型的丰富、响应的显示和编辑器用户界面的一个JavaScript库。
任何时候,动态更新UI的部分(例如,根据用户的行为而改变或当外部数据源改变时),KO对象可以帮助你更简单和更容易地实现它。

标题特点

  • 优雅的依赖跟踪

    每当数据模型发生变化时,自动更新UI的对应数据改动部分。

  • 声明绑定

    将UI部分连接到数据模型的简单且明显的方法,你可以使用任意嵌套的绑定上下文来构造复杂的动态UI界面。

  • 简单的可扩展性

    实现自定义行为作为新的声明绑定,以便只在几行代码中重复使用。

额外的好处

  • 纯javaScript库

    与任何服务器或客户端技术一起工作,可以在现有Web应用程序的顶部添加,而不需要更改主要的架构。

  • 精细

    压缩后大约13KB大小。

  • 在任何主流浏览器上工作

    IE6+,Firefox2+,Chrome,Safari,Edge,其他。

  • 全面的规范套件

    开发BDD模式,意味着其正确的功能可以很容易地在新浏览器和平台上得到验证。

    熟悉Ruby on Rails、ASP、.NET、MVC或者其他MV视图模型技术的开发人员可以将MVVM视为具有声明语法的MVC的实时形式。从另外一个意义上说,你可以把KO对象看作是一个通用的方式来让UI编辑JSON格式的数据的功能型对象,它将全面为你服务。

怎么使用它?

最快也是最有趣的方法是通过交互教程。一旦你掌握了基础知识,就去探索实际的例子,然后在你自己的项目中进行尝试。

KO对象是否打算与JQuery(或者Prototype等)竞争呢?

每个人都喜欢JQuery,它使我们过去不得不忍受的笨拙的、不一致的DOM API的杰出替代品。
Jquery是在页面中操纵元素和事件处理程序的一种很好的初级方式,而KO对象解决了一个不同的问题。
考虑一个实例:你正在显示一个项目列表,列出该列表中的项目数据量,并希望只有在少于5个项目时启用一个添加按钮,
可能项目的数量在某个范围内显示,并且当用户添加一个项目时,你必须记住更新该跨度的文本。当tr的数量为5时,你还必须记住禁用添加按钮。之后你还需要实现一个删除按钮,必须确定何时点击那个DOM元素。

Knockout不同之处?

对KO来说实现上述功能要容易很多。它可以让你在复杂的范围内扩展,而不用担心引入不一致。只需将项目表示为javaScript数组,然后使用foreach绑定将此数组转换为表或者div集合。每当数组改变时,UI就同步更新(你不需要知道如何注入新的tr元素或者在哪里注入它们),其余UI保持同步。
例如,可以声明性绑定一个跨度来显示项目的数量如下:

There are <span data-bind="text: myItems().length"></span> items

就是这样,你不必编写代码来更新它;当myItems数组更改时,它自己更新代码。
类似地,让添加按钮根据项目数量启用或者禁用,只需写:

<button data-bind="enable: myItems().length < 5">Add</button>

之后,当你被要求实现删除功能时,你不必弄清楚它必须与那些UI元素的交互关系,只需更改基础数据模型即可。
总结:KO不与Jquery或者类型的低级DOM API竞争。KO对象提供了一种将数据模型链接到UI的互补的、高级的方式。
KO对象本身不依赖于Jquery,但是你当然可以同时使用Jquery,而且如果你想要动画过度之类的东西,这通常需要用到它。

原文地址:http://knockoutjs.com/documentation/introduction.html
学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java!

knockoutjs介绍(译文)相关推荐

  1. High-Frequency Strategies 高频交易策略介绍(译文)

    High-Frequency Strategies  高频交易策略介绍(译文) Most high-frequency momentum strategies involve extracting i ...

  2. MVVM js 库JsRender/JsViews和knockoutjs介绍

    MVVM概念 MVVM的解释有很多,抛开抽象的描叙我想最实用的一点是把UI和数据绑定,事件做成了一种静态契约,也就是模版,同时UI和数据可以独立动态变化.WPF,SL相对Winfrom和asp.net ...

  3. KnockoutJs简单入门知识讲解

    1.Knockoutjs介绍 Knockout是一款很优秀的JavaScript库,KnockoutJS是一款MVVM前端框架,从框架的模式中我们可以看出,在页面中需要有三个必须的元素:M(模型).V ...

  4. python 浏览器自动化测试,python中使用chrome进行自动化测试,浏览器变量设置

    你必须知道的HTTP错误 发送网络请求有时失败,分析一下响应行,在响应的响应行内,你会发现响应行由三部分组成,用空格来隔开,HTTP/1.1 404 NOT FOUND,第一个是响应的HTTP的版本, ...

  5. 【亲测】RMI之Hassion

    一.RMI RMI(Remote Method Invocation,远程方法调用)是Java在JDK1.2中实现的, Java RMI 支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对 ...

  6. Java使用apache.http.client.fluent快速构建HTTP请求

    相关包 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --><depend ...

  7. Large Movie Review Dataset v1.0

    大型电影评论数据集v1.0 目录 Large Movie Review Dataset v1.0大型电影评论数据集v1.0 数据集下载地址 数据集介绍译文 原文 数据集下载地址:http://ai.s ...

  8. ResNext残差结构理解

    ResNext 本人对论文的翻译:翻译 网络对比ResNet 图1. 上图左结构为ResNet的一个block 右结构为ResNext的一个block,cardinality(基数)=32,左右结构复 ...

  9. Python 时间库 之 标准模块time

    Python中的时间库有很多,特别推荐的有:六款Python 时间&日期库推荐 在学习Python的时间库时,应最先学习Python标准库中的模块:Time.Calendar.datetime ...

最新文章

  1. 网络框架 - 收藏集 - 掘金
  2. 习题4-1 求奇数和 (15 分)
  3. iTOP-4412开发板驱动lcd显卡以及linux开机log的修改方法
  4. MATLAB从入门到精通系列之matlab常见问题集锦-(一)
  5. html css 磁贴,使用JS配合CSS实现Windows Phone中的磁贴效果
  6. TeamCity和GitLab整合
  7. oracle json字符串转数组,json字符串转化成json对象(原生方法)
  8. 如何在 ASP.Net Core 中使用 Consul 来存储配置
  9. Java 25 岁生日快乐!
  10. Cannot attach the file as database 'membership'.
  11. Hadoop核心之HDFS 架构设计
  12. java string是final_关于java:String和Final
  13. 基于链表结构实现二路归并排序详解(C++实现)
  14. Windows 安装maven
  15. 应用程序正常初始化失败0xc0150002 错误
  16. On-Ramp算法参考资料
  17. 拒做背锅侠!如何利用网站性能优化驱动产品体验提升
  18. 获取微信用户的openId
  19. php实现服务器访问统计,服务器端统计网站总访问人数
  20. 谷歌浏览器的timeline工具的使用

热门文章

  1. 记一次http下载0KB问题的解决
  2. vue 计数器_Vuex 使用及简单实例(计数器)
  3. 夺命雷公狗—玩转SEO---65---黑阔手法秒杀dede提升权重
  4. 无监督式GAN(infoGAN) matlab实战
  5. Ubuntu18.04 使用 openssl制作自签名证书
  6. 【第2篇】GooLeNet
  7. sql server 2012服务器安装
  8. 2021年中国FPS游戏市场趋势报告、技术动态创新及2027年市场预测
  9. 简单一步,轻松下载B站视频 | 实用技能get
  10. 非极大值抑制算法hard-NMS与soft-NMS