MVVM概念

MVVM的解释有很多,抛开抽象的描叙我想最实用的一点是把UI和数据绑定,事件做成了一种静态契约,也就是模版,同时UI和数据可以独立动态变化。WPF,SL相对Winfrom和asp.net webform实际上的实现方式是把以前在后台的绑定和声明移到了UI页面。Js 来实现MVVM更有优势,因为js是动态语言,html也可以动态解析,真正和平台无关。目前mvvm js库比较热门的有JsRender/JsViews和knockoutjs。下面具体了解下这两个库。

实例说话

JsRenderSample

引入js:

<script src="/script/jquery-1.7.js" type="text/javascript"></script>

<script src="/script/jsrender.js" type="text/javascript"></script>

Html:

<div id="movieList">

</div>

模板:

<script id="movieTemplate" type="text/x-jsrender">

<div>

{{:#index+1}}: <b>{{>name}}</b> ({{>releaseYear}})

</div>

</script>

Js:

<script type="text/javascript">

var movies = [

{ name: "The Red Violin", releaseYear: "1998" },

{ name: "Eyes Wide Shut", releaseYear: "1999" },

{ name: "The Inheritance", releaseYear: "1976" }

];

// Render the template with the movies data and insert

// the rendered HTML under the "movieList" element

$("#movieList").html($("#movieTemplate").render(movies));

</script>

从最后一行js代码就可以了解jsrender是怎么用的了:容器+模版+数据。

Knockout example:

引入js:

<script src="/script/knockout-2.2.1.js" type="text/javascript"></script>

Html:

<div>

<p>

First name: <strong data-bind="text:firstName">todo</strong></p>

<p>

Last name: <strong data-bind="text:lastName">todo</strong></p>

</div>

Js:

<script type="text/javascript">

// 数据

function AppViewModel() {

this.firstName = "Bert";

this.lastName = "Bertington";

}

//注册

ko.applyBindings(new AppViewModel());

</script>

Knockout实际上也支持模板,如果是模版,用法和jsrender很像。可以看到knockout可以更好的在UE和coder间转换。

总结

JsRender/JsViews:

jsRender使用模板填充数据最终得到一串html,而不管后面数据的变化。解决了binding,没有解决command。随后,jsviews出来了,加上jquery.observable.js,jquery.observable.js可以监听数据的更改。解决了command的问题。JsRender/JsViews没有使用注入绑定,保持了html代码的干净,但是感觉要写更多代码,另外必须得把js跑起来才能看到效果,对不会js的UI 设计者带来难度。所以学习起来,JsRender/JsViews的广度和难度更高,并且到目前为此,学习资源基本上只有github上的源码和demo。以及个别大牛的介绍http://msdn.microsoft.com/zh-cn/magazine/hh882454.aspx.不过,对于爱学习有钻劲的人来说,看了jsRender和jquery.observable.js后,估计这两个库不定日后也可以用来恰当好处的解决其他的问题。

knockoutjs:

使用代码注入绑定数据和command,同时要支持模板,在这两项上已经覆盖了JsRender/JsViews的功能。如它首页上宣传的:

  1. 通俗易懂的语法绑定数据模型和Dom
  2. 数据模型更改后,界面UI自动更新
  3. 数据模型间可以建立关系链,轻松实现多个数据模型间的重组构造出新的数据
  4. 快速构建基于数据模型的复杂可嵌套UI组件。

官方网站有详细的各种demo,api文档等,其他实际应用也有放出来。推荐看英文版的帮助文档,原滋原味不枯燥,中文翻译过来后,始终会丢失掉一些东西。

扩展

对于不管平台的纯web前端来说,以上基本够用,但是对于身兼服务端和前端的苦逼还是希望更多一点的包装,Knockoutjs要是在vs里面像各种view engine一样使用就更好了,没有intelligence的日子太痛苦了。knockoutmvc就是这种急人所急的产品,为吸引关注度,特提供首页快照:

转载于:https://www.cnblogs.com/wusong/archive/2013/01/27/2878522.html

MVVM js 库JsRender/JsViews和knockoutjs介绍相关推荐

  1. 介绍两个用于生成二维码的js库

    生成二维码的js库 QRCode.js 简介 使用示例 jquery.qrcode.js 简介 使用示例 调整二维码尺寸 QRCode.js 简介 这是一个原生的js库,用于生成二维码. github ...

  2. js库Modernizr的介绍和使用

    Modernizr是一个开源的JS库,它使得那些基于访客浏览器的不同(指对新标准支持性的差异)而开发不同级别体验的设计师的工作变得更为简单 传统浏览器目前不会被完全取代,令你难以将最新的 CSS3 或 ...

  3. JS+库+框架+工具

    JS+库+框架+工具 要做WEB前端,就需要知道前端到底是什么,需要学习那些知识:前端至少要懂的三个部分:HTML,CSS,JavaScript(简称JS),那首先先明确这三个概念: HTML负责结构 ...

  4. 模糊选择器 js_5个很棒的 React.js 库,值得你亲手试试!

    React在过去几年变得越来越受欢迎.随之而来的是越来越多的库的发布,给我们带来了新的可能性,但最重要的是让开发这工作变得越来越简单. 在本文中,介绍 5 个 React 库,希望能给你带来一些帮助. ...

  5. 创建自己的共用js库

    直至昨晚为止,学习了一个多月的MVC与jQuery,从所做的练习中,发觉jQuery的代码也有跟C#语言一样可以重构,多页面有相同使用的方法函数,均可以放置于一个单独立的js文件或是自定义的js库中. ...

  6. 前端高效开发必备的 js 库梳理

    之前有很多人问学好前端需要学习哪些 js 库, 主流框架应该学 vue 还是 react ? 针对这些问题, 笔者来说说自己的看法和学习总结. 首先我觉得在学习任何知识之前必须要有一个明确的学习目标, ...

  7. 使用模块化工具Rollup打包自己开发的JS库

    使用模块化工具Rollup打包自己开发的JS库 打包JS库demo项目地址:https://github.com/Miazzy/xdata-utils-btools 背景 最近有个需求,需要为小程序写 ...

  8. 有哪些必看的前端 JS 库?

    前端自动化 前端构建工具 gulp – The streaming build system grunt – the JavaScript Task Runner 前端模块管理器 Bower – A ...

  9. highlight.js css,JS库之Highlight.js的用法详解

    下载到本地后,新建个页面测试 1.在head中加入css和js的引用 highlight hljs.initHighlightingOnLoad(); 2.添加对应要显示的内容 # 读取文件内容 de ...

最新文章

  1. 提高.net程序性能和稳定性-CLR Profile
  2. 报错 插入更新_自增主键,三类插入测验答案,在这里。
  3. 【springboot中使用aop的具体步骤和示例】
  4. OpenGL反射和折射
  5. 十天冲刺开发第一天个人工作总结
  6. python输出字典_Python如何将字典键和值拆分为单独的列表?(代码示例)
  7. ltp测试操作步详解(压力测试网站最详、下载、使用)
  8. android渠道首发规则,酷传推广标准手册-android渠道首发规则.doc
  9. 洛谷—— P1419 寻找段落
  10. Prometheus入门使用(三)
  11. 阿里90后运营的工作总结,细致而深刻!
  12. LeetCode 71-80题
  13. windows10下安装MSYS2+MinGW64
  14. 徐荣谦《养好脾和肺 宝宝不积食不咳嗽长大个》【02】食物健脾
  15. 用计算机探索规律的总结,《用计算器探索规律》(通用6篇)
  16. JVM5-class文件结构
  17. html5我的心灵小屋代码,心灵小屋
  18. 全面替代Pandownload,对百度网盘的报复来了
  19. java模式之装饰器模式
  20. php 在线读取PDF文件

热门文章

  1. c++ hsv 红色范围_维生素C的定量测定—2,6二氯酚靛酚法
  2. 2018-携程-春招题
  3. python matlibplot_python matlibplot绘制3D图形
  4. Pytest之fixture
  5. 美国NIST仍在与财政部和国防部就区块链支付跟踪项目合作
  6. SAP License:SAP传输错误所引起的系统崩溃事件反思
  7. SAP License:SAP 成本管理专题
  8. DataFrame的级联合并操作
  9. vue+django 生鲜项目 (二)
  10. 排查 CI Unable to load the requested file