MVVM js 库JsRender/JsViews和knockoutjs介绍
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的功能。如它首页上宣传的:
- 通俗易懂的语法绑定数据模型和Dom
- 数据模型更改后,界面UI自动更新
- 数据模型间可以建立关系链,轻松实现多个数据模型间的重组构造出新的数据
- 快速构建基于数据模型的复杂可嵌套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介绍相关推荐
- 介绍两个用于生成二维码的js库
生成二维码的js库 QRCode.js 简介 使用示例 jquery.qrcode.js 简介 使用示例 调整二维码尺寸 QRCode.js 简介 这是一个原生的js库,用于生成二维码. github ...
- js库Modernizr的介绍和使用
Modernizr是一个开源的JS库,它使得那些基于访客浏览器的不同(指对新标准支持性的差异)而开发不同级别体验的设计师的工作变得更为简单 传统浏览器目前不会被完全取代,令你难以将最新的 CSS3 或 ...
- JS+库+框架+工具
JS+库+框架+工具 要做WEB前端,就需要知道前端到底是什么,需要学习那些知识:前端至少要懂的三个部分:HTML,CSS,JavaScript(简称JS),那首先先明确这三个概念: HTML负责结构 ...
- 模糊选择器 js_5个很棒的 React.js 库,值得你亲手试试!
React在过去几年变得越来越受欢迎.随之而来的是越来越多的库的发布,给我们带来了新的可能性,但最重要的是让开发这工作变得越来越简单. 在本文中,介绍 5 个 React 库,希望能给你带来一些帮助. ...
- 创建自己的共用js库
直至昨晚为止,学习了一个多月的MVC与jQuery,从所做的练习中,发觉jQuery的代码也有跟C#语言一样可以重构,多页面有相同使用的方法函数,均可以放置于一个单独立的js文件或是自定义的js库中. ...
- 前端高效开发必备的 js 库梳理
之前有很多人问学好前端需要学习哪些 js 库, 主流框架应该学 vue 还是 react ? 针对这些问题, 笔者来说说自己的看法和学习总结. 首先我觉得在学习任何知识之前必须要有一个明确的学习目标, ...
- 使用模块化工具Rollup打包自己开发的JS库
使用模块化工具Rollup打包自己开发的JS库 打包JS库demo项目地址:https://github.com/Miazzy/xdata-utils-btools 背景 最近有个需求,需要为小程序写 ...
- 有哪些必看的前端 JS 库?
前端自动化 前端构建工具 gulp – The streaming build system grunt – the JavaScript Task Runner 前端模块管理器 Bower – A ...
- highlight.js css,JS库之Highlight.js的用法详解
下载到本地后,新建个页面测试 1.在head中加入css和js的引用 highlight hljs.initHighlightingOnLoad(); 2.添加对应要显示的内容 # 读取文件内容 de ...
最新文章
- 提高.net程序性能和稳定性-CLR Profile
- 报错 插入更新_自增主键,三类插入测验答案,在这里。
- 【springboot中使用aop的具体步骤和示例】
- OpenGL反射和折射
- 十天冲刺开发第一天个人工作总结
- python输出字典_Python如何将字典键和值拆分为单独的列表?(代码示例)
- ltp测试操作步详解(压力测试网站最详、下载、使用)
- android渠道首发规则,酷传推广标准手册-android渠道首发规则.doc
- 洛谷—— P1419 寻找段落
- Prometheus入门使用(三)
- 阿里90后运营的工作总结,细致而深刻!
- LeetCode 71-80题
- windows10下安装MSYS2+MinGW64
- 徐荣谦《养好脾和肺 宝宝不积食不咳嗽长大个》【02】食物健脾
- 用计算机探索规律的总结,《用计算器探索规律》(通用6篇)
- JVM5-class文件结构
- html5我的心灵小屋代码,心灵小屋
- 全面替代Pandownload,对百度网盘的报复来了
- java模式之装饰器模式
- php 在线读取PDF文件