首页 > web前端 > js教程 > 淘汰赛初学者指南:第1部分

淘汰赛初学者指南:第1部分

Christopher Nolan
发布: 2025-02-26 08:39:12
原创
970 人浏览过

Beginners Guide to KnockoutJS: Part 1

淘汰赛初学者指南:第1部分

钥匙要点

    敲除使用模型视图模型(MVVM)设计模式,将您的应用程序分为三个部分:保存您的应用程序数据的模型,作为模型和视图之间的连接器和通信层的视图,查看指您应用程序中的所有UI元素。> 可观察物是敲对于j的特殊JavaScript对象,可以将更改通知订阅者并自动检测依赖关系。这允许视图在模型更改时自动更新,而无需手动操纵DOM。 几乎每个处理Web技术的人都知道JQuery,或者至少已经听说过。它无与伦比的简单性和简洁性使世界各地数百万个网络开发人员的生活变得更加容易 - 这真是太棒了。 不幸的是,jQuery并不是解决每个问题的解决方案。一旦您决定创建一些更复杂的Web应用程序,就会遇到问题 - 没有简单的方法可以使您的UI和数据互相动态通信。凭借JQuery提供的低级DOM操纵和事件处理,这很难实现。您需要一个图书馆,为您提供更复杂的UI和基础数据模型之间的通信方式。
  • >这是淘汰赛的来源。淘汰赛是一个JavaScript库,可帮助创建Rich,类似桌面的Web UIS。它简化了用户交互,并使接口完全响应任何数据源更改。敲除提供了一种简单的双向绑定机制,可以将数据模型与UI联系起来,从而使它们之间的同步变得微风。
>尽管您需要同时将淘汰赛与jQuery一起使用,但在某些情况下,例如动画过渡,但敲除本身并不取决于它。您需要了解的另一件事是,淘汰赛不会与JQuery竞争 - 他们俩都做得很好。每个人都朝着自己的方向。如您所见,如果您想获得最大的好处,则应该一起使用它们。

>在本教程中,我们从淘汰赛的核心概念和能力开始。在第二部分中,我们将更深入地探索内置绑定以及如何使用它们。在结局中,我们将介绍一些高级功能和技术,例如扩展可观察物以及如何创建自己的自定义绑定。让我们开始!

基本概念

>在我们浏览代码示例之前,首先您可能需要掌握一些基本概念。敲除JavaScript的模型视图模型(MVVM)设计模式。在此模式中,您的应用程序分为三个部分:

>

>一个符合您应用程序数据的模型。这可以由用户输入的数据或从Web服务器获取的JSON数据。

>

>作为模型和视图之间的连接器和通信层的视图。它拥有数据和操作来操纵此数据并将其显示在UI中。每次更改数据模型时,相应的UI零件更新,反映这些更改。您应用程序中的查看模型由JavaScript代码表示。

a的视图,指的是您应用程序中的所有UI元素。它是给定UI的结构和外观的表示。该视图负责显示数据并接受用户输入。视图由您的应用程序中的HTML/CSS代码表示。

>

>它们是建立敲除时的三个核心概念:

1。声明性绑定:这些允许您以简单便捷的方式将UI的一部分连接到数据模型。当直接使用JavaScript操纵DOM时,如果以后更改DOM层次结构或元素ID,可能会导致损坏的代码。即使您更改DOM所有绑定的零件,也可以使用声明性绑定。您可以通过简单地将数据绑定属性包含到任何DOM元素来将数据绑定到DOM。

2。依赖关系跟踪:值得庆幸的是,每当您的模型数据更改与其自动更新的所有零件时,每次更改模型数据时,可观察到的变量和特殊类型的变量。无需担心添加活动处理程序和听众。所有这些额外的工作都是通过敲除和可观察到的内部执行的,这些工作在基本值发生了变化时通知听众。

>

3。模板:当您的应用程序变得更加复杂并且需要一种显示丰富的视图模型数据结构,从而使代码保持简单时,这很方便。淘汰赛具有本机内置的模板引擎,您可以立即使用。但是,如果需要,也可以使用第三方模板引擎,例如jquery.tmpl或下划线。

>不用担心,如果您听起来所有这些理论对您来说都是晦涩的。当我们浏览教程并示例代码时,一切都会变得更清晰。

>

入门

>在我们深入淘汰之前,您需要在HTML文档中下载和引用库。

<script type='text/javascript' src='knockout-2.0.0.js'></script>
登录后复制
登录后复制

>将代码与演示文稿分开,最好创建一个JavaScript文件来保存所有应用程序代码。而且,由于我们在某些情况下也需要使用jQuery。


<script type='text/javascript' src='knockout-2.0.0.js'></script>

登录后复制
登录后复制
>这被认为是最佳实践,但出于培训目的,要使事情更容易,您可以通过将其包括在同一文档中,或者将其包含在Head Tag中,或者将其放置在您的标记中。

现在,要创建一个视图模型,只需声明任何类似的JavaScript对象:

>

>数据结合属性(稍后解释)不是HTML的本地,并且浏览器不知道它的含义。因此,必须通过在脚本末尾插入ko.applybindings()函数来激活敲除。另外,如果您使用外部JavaScript文件或将脚本放置在文档的Head标签中,则需要将敲除代码包裹在jQuery就绪功能中,以便正常工作。这是要启动的基本模板:
  function viewModel() {

   // Your code here
  
  };
登录后复制
登录后复制

>调用ko..applybindings()方法并传递我们的视图模型,告诉淘汰赛将指定的模型绑定到我们的UI。如果您只想将此视图模型绑定到整体UI的一部分,则甚至可以提供DOM元素。 ko.applybindings()采用两个参数。第一个参数说明您要使用的声明绑定要使用的视图模型对象。第二个参数是可选的,它定义了您要搜索数据重点属性的文档的哪一部分。例如,ko.applybindings(viewModel,document.getElementById('container'))将使用ID容器及其后代将激活限制为元素。如果您想拥有多个视图模型并将每个区域的不同区域相关联,这将很有用。
$(document).ready(function(){
  
  function viewModel() {

   // Your code here
  
  };

  ko.applyBindings(new viewModel()); 

});
登录后复制
登录后复制
>

它的工作原理

>使用敲除,您可以通过在标记中包含一个指定要执行的数据结合的数据结合属性来将数据绑定到DOM元素。该代码从未对DOM结构有任何参考,因此您可以自由地更改HTML而不会破坏绑定。在下面的示例中,我们将文本绑定属性添加到类似的跨度元素:

>

>那么,如果我们要使文本的价值动态更新,则必须在视图模型中将其声明为可观察的。
// syntax: data-bind="bindingName: bindingValue"
<p>The day of the week is <span data-bind="text: dayOfWeek"></span>. It's time for <span data-bind="text: activity"></span></p>
登录后复制

这将输出“一周中的一天是星期天。是时候休息了。”
function viewModel() {
  this.dayOfWeek = ko.observable('Sunday');
  this.activity = ko.observable('rest');
};

ko.applyBindings(new viewModel()); 
登录后复制

可观察到

通过将对象属性与名为ko.observable()。 可观察物被设置为函数。因此,您可以以以下方式使用它们:

<script type='text/javascript' src='knockout-2.0.0.js'></script>
登录后复制
登录后复制
淘汰赛不需要您使用可观察的属性。如果您希望DOM元素一次接收值一次,但是当源对象中的值更改中的值时,则不会更新,则简单对象就足够了。但是,如果您希望您的源对象和目标dom元素保持同步 - 双向绑定 - 那么您需要考虑使用可观察的属性。

在某些情况下,您可能需要将两个或多个可观察到的值组合为一个新值。这可以通过所谓的计算可观察物来完成。计算的可观察物是依赖一个或多个可观察到的函数,并且每当这些依赖性变化时,都会自动更新。当它依靠其评估更改的任何可观察到的属性时,计算的属性会自动更新。在下面的示例中,计算出的可观察到的命名fulldate每天都会更新一天,月和年度可观察到。

ko.competed()采用第二个参数。没有传递它,就不可能参考此.day.day(),this.month()或this.year()。为了简化事物,您可以创建一个变量自我,从而避免添加第二个参数。从现在开始,我们将在代码示例中使用此方法。

>

<script type='text/javascript' src='knockout-2.0.0.js'></script>

登录后复制
登录后复制

>处理一个对象时,您可以通过将其变成可观察到的任何更改来轻松跟踪其更改。但是,如果您有多个对象怎么办?在这种情况下,敲除具有一个名为ko.observablearray()的特殊对象,可以检测并响应事物集合的变化。这使得可以显示和/或编辑多个值,例如,当您需要重复的UI部分以添加和删除项目时出现和消失时。

>
  function viewModel() {

   // Your code here
  
  };
登录后复制
登录后复制
>您应该牢记可观察的数组跟踪哪些对象在数组中,而不是这些对象的状态。简单地将对象放入可观察的阵列并不能使所有对象的属性本身都可以观察到。如果您希望可以观察到这些属性,但这完全取决于您。一个可观察的数组只能跟踪其持有的对象,并在添加或删除对象时通知侦听器。

>

创建可观察的数组时,您可以将其留空或用一些初始值填充它。在下面的示例中,我们创建了一个可观察到的阵列,该阵列填充了一周的日子:>

如您所见,要读取敲除数组,您可以使用任何本机JavaScript函数。但是淘汰有其自己的等效函数,语法更方便:
$(document).ready(function(){
  
  function viewModel() {

   // Your code here
  
  };

  ko.applyBindings(new viewModel()); 

});
登录后复制
登录后复制

>有关可用功能的完整列表,您可以查看文档。如果您喜欢阅读这篇文章,您会喜欢学习的;从大师那里学习新鲜技能和技术的地方。成员可以立即访问SitePoint的所有电子书和交互式在线课程,例如Web的JavaScript编程。 经常询问的问题(常见问题解答)

> junckoutjs和其他JavaScript库之间有什么区别?

junckoutjs是一个JavaScript库,可帮助开发人员创建具有干净的基础数据模型的富含,响应式显示和编辑器用户界面。与其他JavaScript库不同,QuignOuTjs使用模型视图 - 视图模型(MVVM)设计模式,其中模型引用数据,视图是数据的可视化表示,而ViewModel是模型和视图之间的中间设备。这种模式允许明确的疑虑分开,使您的代码更易于管理和测试。>

>数据绑定在quotningjs中如何工作?一种在模型(您的数据)和视图(网页中的DOM元素)之间建立连接的方法。此连接允许您的数据更改以自动更新视图,反之亦然。 Quignoutjs为常见任务(例如文本和价值绑定)提供了几种内置绑定,您还可以为更复杂的场景创建自定义绑定。

nockoutjs中的可观察力是什么?可以将更改通知订阅者并自动检测依赖性的JavaScript对象。在QuignOutJs中,您使用可观察到的物品自动更新视图时,每当模型更改而无需手动操纵DOM。这使您的代码更清洁且更易于维护。

>我如何在gockoutjs中使用计算的可观察物?

计算的可观察到的函数是依赖一个或多个其他观察值的函数,并且随时会自动更新这些依赖性中的任何一个都改变了。要创建可观察到的计算的可观察到的计算机,您可以使用ko.com的函数,传递返回计算值的函数。

>

>我如何处理quignOutJs中的事件?

> viewModel在junckoutjs中的作用是什么?它负责维护视图状态,处理用户操作并在必要时更新模型。 ViewModel不是数据的直接表示,而是该视图的专门版本。

>

>我如何在quignOutJs中使用模板?

>如何调试opplug quackoutjs applications? >可以使用浏览器的开发人员工具进行调试敲除应用程序。您可以使用ko.datafor和ko.contextfor函数检查绑定到DOM元素的数据。此外,QuignOutJs提供了ko.tojson函数,可用于将您的ViewModel转换为JSON字符串以进行易于检查。

我可以与其他JavaScript库一起使用nockoutjs?可以与其他JavaScript库(如jQuery或Bootstrap)一起使用。 QuintOutJS并不能直接操纵DOM,而是根据对ViewModel的更改更新视图,因此它不会干扰操纵DOM的其他库。

以上是淘汰赛初学者指南:第1部分的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板