AvalonJs入门 简单易用迷你的MVVM框架

来源:互联网 发布:迪马利亚在巴黎数据 编辑:程序博客网 时间:2024/05/16 16:01

前言:

    第一次接触到AvalonJs的前端网页的时候,我还是非常的惊讶的,作为一名Java后台的小码农,早就习惯了MVCModel View Controller)的设计模式,前端请求控制器,控制器调用模型得到数据,然后再转跳给前端的页面。而Avalon却属于MVVMModel-View-ViewModel)框架,一个让前端页面的逻辑处理和视图分离的框架模型,那么MVVM到底比MVC强在哪里呢?举个简单的例子,就拿翻页来说,传统的翻页模式,每点击一页,整个页面都要刷新,不仅刷新时间长,而且浪费网络资源,而MVVM模型做到了数据的绑定,只替换与翻页相关的数据。听到这里,你是不是觉得跟JQuery的异步很像,对的,只不过MVVM框架实现起来比用JQuery更为简单、快捷。

    Avalon就是一个简单易用迷你的MVVM框架,而且是我们国人开发并维护的,好了不多说,让我们一起来看下AvalonJs吧。

http://www.cnblogs.com/rubylouvre/p/3181291.html#top0

     Avalon的作者司徒正美自己写的AvalonJs入门教程,如果你是一名前端开发人员,或者有多年开发经验的大师,请直接去作者的网站吧,如果你跟我一样只是一名入行不久的小码农,那么我希望我讲的avalon入门,更为浅显易懂。

Demo1

Avalon的第一个例子,认识avalon。

<!DOCTYPE html><html>    <head>        <title></title>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <script src="avalon.shim.js"></script>    </head>    <body ms-controller="demo1">        <div>            <input type="text" ms-duplex="name">        </div><h1>what is your name?</h1><div>{{name}}</div>        <script>              var vm = avalon.define({                 $id: "demo1",                 name:"John"              })        </script>    </body></html>

文本框的内容和下面的文字会一起发生变化。

你可能会说,这个用JQuery也能很容易做到,是的,那是因为这里只有一个文本框,要是有很多文本框,难道要用JQuery一个一个绑定吗?用Avalon,仅仅需要给<input>标签加个属性。



想使用avalon非常的简单,只需要在项目中引用avalonjs文件就可以。




Demo2

Avalon的事件绑定:

ms-click

ms-dblclick

ms-mouseout

ms-mouseover

ms-mousemove

ms-mouseenter

ms-mouseleave

ms-mouseup

ms-mousedown

ms-keypress

ms-keyup

ms-keydown

ms-focus

ms-blur

ms-change

...

看到这些代码是不是非常的眼熟,就是在绑定事件名称的前面加上的ms-

<!DOCTYPE html><html>    <head>        <title></title>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <script src="avalon.shim.js"></script>    </head>    <body ms-controller="demo1">        <div>            <input type="text" ms-duplex="name">        </div><h1>what is your name?</h1><div>{{name}}</div><input type="button" ms-click="click" value="点我">        <script>              var vm = avalon.define({                 $id: "demo1",                 name:"John", click:function(){alert(vm.name); }              })        </script>    </body></html>


Demo3
Ms-repeat属性:

<!DOCTYPE html><html>    <head>        <title></title>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <script src="avalon.shim.js"></script>    </head>    <body ms-controller="demo3"><h1>Demo3</h1><table border="1"><tr><th>序号</th><th>名字</th><th>性别</th></tr><!-- 这里我们使用avalon的repeat来依次输出数据--><tr ms-repeat-el="array"><!--这里el表示每个对象的名称,跟jsp中c:foreach的value差不多--><td>{{el.index}}</td><td>{{el.name}}</td><td>{{el.sex}}</td></tr></table>        <script>//avalon初始化              var vm = avalon.define({                 $id: "demo3",                 array:[]   //初始化数组              })   //造一些数据 var data=[{"index":1,"name":"John","sex":"male"},{"index":2,"name":"Mike","sex":"male"},{"index":3,"name":"Link","sex":"male"},{"index":4,"name":"Christine","sex":"female"},{"index":5,"name":"Daisy","sex":"female"},{"index":6,"name":"HAHAHA","sex":"unknown"},];vm.array=data;        </script>    </body></html>

今天就写到这里吧,下一篇会介绍一些稍复杂的部分,比如全选反选,异步加载数据,分页等等。

源码地址:
http://download.csdn.net/download/u014701246/9896663

阅读全文
0 0