英文原版教程:http://knockoutjs.com/documentation/introduction.html

注:此教程根据英文原版翻译,仅作练习,如有不足或错误,请指正

说明:

对原文中的一些单词的翻译是参考汤姆大叔的翻译方式,如下:

observable 监控

observable array 监控数组

computed observable 计算监控

pure computed observable 纯计算监控

1. 入门

1.Knockout怎样工作的以及带来了什么好处

1. 简介

Knockout是一款很优秀的JavaScript库,它可以帮助你通过一个简洁的数据模型创建一个丰富的、响应式显示和编辑的用户界面。无论何时你的UI界面的一部分有动态改变(比如,由用户的操作引起的改变或者一个扩展数据源改变),KO 都能用更简单的和可维护的方式实现它。

主要特性:

  • 优雅的依赖追踪 - 无论你的数据模型什么时候发生改变都能自动更新你的UI需要更新的部分。
  • 声明式绑定 - 一种简单明了的方式让你的数据模型和UI部分关联,你可以使用任意的嵌套的绑定上下文轻易地构建出一个复杂而且动态的UI界面。
  • 良好的可扩展性 - 实现自定义行为作为新的声明绑定,这样通过短短几行代码就能很容易实现代码重用。

额外的好处:

  • 纯Javascript库 - 兼容任何服务端和客户端技术
  • 可以友好的添加到你已经有的web应用程序 - 不需要主程序框架改动
  • 小巧的 - 通过gzip压缩后只有13kb大小
  • 兼容各种主流浏览器(IE 6+, Firefox 2+, Chrome, Safari, Edge, 其他)
  • 有一套完整的规范(采用BDD开发,BDD,行为驱动开发)这意味着在新的浏览器和平台上功能都可以正确容易地通过验证。

开发者如果熟悉Ruby on Rails, ASP.NET MVC,或者其他MV*技术框架可能会把MVVM看作一个使用声明式语法的MVC实时form,换句话说,你可以把KO看成是通过编辑JSON数据来构建UI界面的一种方式。。。无论你要做什么:)

2. 如何使用它?

最快也是最有趣的入门方式是通过交互式教学指导。一旦你掌握了基础,学习了在线示例,你就可以在你的项目中使用KO了。

3. KO和jQuery(或者 Prototype等等)是存在竞争关系还是可以一起工作?

所有人都喜欢 jQuery!它是我们在过去不得不使用的难用且混乱的DOM API的一种优秀的替代方案。jQuery可以通过优秀的底层API的方式操作网页上的dom元素和处理事件。KO是用于解决其他的一些问题。

只要你的UI界面变得复杂而且有重复性行为,如果仅仅使用jQuery,项目会变得越来越复杂,而且维护代价很大。举个例子,你显示一个列表,而且想要当列表项仅仅在少于5项时会显示一个添加按钮。jQuery里面没有基础数据模型的概念,所以为了统计列表当前有多少项,你得计算一下table元素下tr元素的数量或者通过某些CSS类名来获取DIV的数量。这些项也许是通过SPAN元素来显示,你还得在用户添加新项的时候更新列表的内容,你还得记得当列表项数量大于等于5的时候隐藏添加按钮。之后,你被要求实现删除功能,你得在当删除按钮被点击的时候找出哪个列表项发生了变化。

4. KO有什么不同?

上述例子的情形对KO来说小菜一碟。它能让你的项目在提高复杂性的时候不用害怕导致项目不稳定。只是把上述的列表项作为一个Javascript里面的数组,然后使用foreach绑定把数组转换为table或者div集合,当数组发生改变的时候,对应的UI会一起改变(你不需要考虑怎样插入新的tr标签或者要插在哪里)。剩下的UI会保存同步。比如,你可以声明绑定一个SPAN标签来显示列表项的数量,如下所示:

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,但是在使用KO的同时使用jQuery,而且如果你想制作一些动画特效,jQuery往往是必须的。

2.下载和安装

下载就自行去官网下载即可,地址:http://knockoutjs.com/downloads/index.html

1. 通过Bower安装

bower install knockout

2. 安装

像jQuery那样引入就好了

Knockout v3.4.0 中文版教程-1-入门和安装的更多相关文章

  1. Knockout v3.4.0 中文版教程-16-控制流-foreach绑定

    2. 控制流 1. foreach绑定 目的 foreach绑定会遍历一个数组,为每个数组项生成重复的元素标记结构并做关联.这在渲染列表或表格的时候特别有用. 假设你的数组是一个监控数组,之后无论你进 ...

  2. Knockout v3.4.0 中文版教程-6-计算监控-可写的计算监控

    2.可写的计算监控 初学者可能想要跳过本节 - 可写的计算监控是相当高级的部分,在大多数情况下不是必需的. 通常,计算监控是一个通过其他监控值计算出的值,因此是只读的. 令人惊讶的是,可以使计算监控值 ...

  3. Knockout v3.4.0 中文版教程-14-控制文本内容和外观-style绑定

    5. style绑定 目的 style绑定用来给关联的DOM元素添加或移除一个或多个样式值.在如下情况很有用,比如,当某些值为负时,高亮显示,或者设置容器元素的宽度来匹配数值的改变. (注意:如果你不 ...

  4. Knockout v3.4.0 中文版教程-13-控制文本内容和外观-css绑定

    4. css绑定 目的 css绑定可以给关联的DOM元素添加或移除一个或多个CSS类.该绑定很有用,比如,当一些值为负数时高亮这些值为红色. (注意:如果你不想使用一个CSS类选择器来附加样式而想直接 ...

  5. Knockout v3.4.0 中文版教程-10-绑定-控制文本内容和外观-visible绑定

    4.绑定 1. 控制文本内容和外观 1. visible绑定 目的 visible绑定可以根据你传入绑定的值控制关联的DOM元素显示或隐藏. 例子 <div data-bind="vi ...

  6. Knockout v3.4.0 中文版教程-8-计算监控-纯计算属性

    4.纯计算属性 纯计算监控在KO 3.2.0中开始引入,比大多数应用程序使计算监控有更大的性能提升和内存优化.这是因为在自身没有订阅的时候不会保持订阅状态.特性如下 阻止内存泄露 - 避免在应用程序里 ...

  7. Knockout v3.4.0 中文版教程-5-计算监控-使用计算监控

    3. 计算监控 1.使用计算监控 如果你有一个监控的属性firstName和另一个lastName,但你想显示全名怎么办? 这就是引入计算监控的原因-这是依赖于一个或多个其他的observables函 ...

  8. Knockout v3.4.0 中文版教程-4-通过监控数组工作

    2.通过监控数组工作 1. 监控数组 如果你想检测或者响应一个对象的改变,你用observables.如果你想检测和响应一个集合的改变,使用observableArray.这个在很多情况下都非常有用, ...

  9. Knockout v3.4.0 中文版教程-3-监控-通过监控创建视图模型(下)

    6. 显式订阅监控 你通常不需要手动设置订阅,所以初学者应该跳过这一节. 对于高级用户,如果你想注册自己的订阅来监控通知变化,你可以使用 subscribe函数,比如: myViewModel.per ...

随机推荐

  1. Thinking In Java持有对象阅读记录

    这里记录下一些之前不太了解的知识点,还有一些小细节吧 序 首先,为什么要有Containers来持有对象,直接用array不好吗?——数组是固定大小的,使用不方便,而且是只能持有一个类型的对象,但当你 ...

  2. [未读]深入浅出node.js

    还没看过,据说很多内容来自国外译文.

  3. POJ SETI 高斯消元 + 费马小定理

    http://poj.org/problem?id=2065 题目是要求 如果str[i] = '*'那就是等于0 求这n条方程在%p下的解. 我看了网上的题解说是高斯消元 + 扩展欧几里德. 然后我 ...

  4. JMeter--PerfMon Metrics Collector监控内存及CPU

    1.需要准备的软件及插件 ServerAgent-2.2.1.zip JMeterPlugins-Standard-1.3.1.zip 2.jmeter上JMeterPlugins-Standard- ...

  5. 如何在asp.net mvc中添加自定义的HTML辅助种方法

    很久没在博客园发表文章了,今天来总结一下如何在asp.net mvc中添加自定义的HTML辅助方法.我们现在设计这么一个目前,利用自定义的HTML方法来渲染一个普通的img标记.直接进入主题吧: 首先 ...

  6. JSP文件上传,好烦啊、、

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  7. Bootstrap基础知识学习

    Bootstrap中文网 http://www.bootcss.com/ Bootstrap菜鸟教程 http://www.runoob.com/bootstrap/bootstrap-tutoria ...

  8. IT兄弟连 JavaWeb教程 Servlet定义以及环境配置 BS程序和CS程序

    随着网络技术的不断发展,单机的软件程序已难以满足网络计算机的需求.为此,各种各样的网络程序开发体系结构应运而生.其中,运用最多的网络应用程序开发体系结构可以分为两种,一种是基于客户端/服务器的C/S结 ...

  9. 关于IE兼容的问题

    以下内容,均来自不同的网站,非本人原创,只是收集一下放在一起! =============================== [一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 ...

  10. 添加 SSH 公钥

    生成 SSH 密钥 ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" 获取 SSH 公钥信息 cat ~/.ssh/id_rsa.pu ...