最近在慕课网看一些关于avalon的视频,记录下一些笔记及代码实例以便日后自己复习可以用到,另外也可以给不想花时间看视频的小伙伴提供一丝丝帮助

这里主要是做一个简单的todolist

分别用三种不同的方式实现:

1、jquery

HTML代码示例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>todo list</title>
<link rel="stylesheet" href="css/bootstrap.min.css" />
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-5">
<form action="" id="todoForm">
<label for="todoInput">将下面输入的文字放入todo list中!</label>
<input type="text" id="todoInput" class="form-control" />
</form>
<p id="todoCount"></p>
<ol id="todoList"></ol>
</div>
</div>
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/example-jQuery.js"></script>
</body>
</html>

js代码示例

(function(){
var $todoForm = $('#todoForm');
var $todoInput = $('#todoInput');
var $todoList = $('#todoList');
var $todoCount = $('#todoCount'); function count(){
var len = $todoList.children().length;
$todoCount.html(len > 0 ? '现有' + len + '项 todo List' : '');
} $todoForm.submit(function(e){
e.preventDefault();
var input_value = $todoInput.val();
$todoList.append('<li>' + input_value +'&nbsp;<a href="#" class="todoDelete">X</a></li>');
$todoInput.val('');
count();
}); $todoList.on('click','.todoDelete',function(e){
$(this).parent().remove();
count();
});
})();

2、Angular

HTML代码示例

<!DOCTYPE html>
<html ng-app="todoApp">
<head>
<meta charset="utf-8" />
<title>todo list</title>
<link rel="stylesheet" href="css/bootstrap.min.css" />
</head>
<body ng-controller="todos">
<div class="container">
<div class="row">
<div class="col-md-5">
<form ng-submit="add()">
<label for="">将下面输入的文字放入todo list中!</label>
<input type="text" ng-model="txt" class="form-control" />
</form>
<p ng-hide="todolist.length === 0">现有{{todolist.length}}项todo list</p>
<ol>
<li ng-repeat="todo in todolist track by $index">
{{todo}}
<a href="javascript:void(0);" ng-click="todolist.splice($index,1)" class="todoDelete">X</a>
</li>
</ol>
</div>
</div>
</div>
<script type="text/javascript" src="js/angular.min.js" ></script>
<script type="text/javascript" src="js/example-angular.js" ></script>
</body>
</html>

js代码示例

var app = angular.module('todoApp',[]);
app.controller('todos',['$scope',function($scope){
$scope.todolist = [];
$scope.add = function(){
$scope.todolist.push($scope.txt);
$scope.txt = '';
};
}]);

3、avalon

HTML代码示例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>todo list</title>
<link rel="stylesheet" href="css/bootstrap.min.css" />
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-5" ms-controller="todos">
<form ms-on-submit="add">
<div class="form-group">
<label for="todoInput">将下面输入的文字放入todo list中!</label>
<input type="text" ms-duplex='txt' class="form-control" autocomplete="off"/>
</div>
</form>
<p ms-if="todolist.size()>0">现有{{todolist.size()}}项todo list</p>
<ol>
<li ms-repeat="todolist">
{{el}}
<a href="javascript:void(0);" ms-click="$remove" class="todoDelete"></a>
</li>
</ol>
</div>
</div>
</div>
<script type="text/javascript" src="js/avalon.js"></script>
<script type="text/javascript" src="js/example-avalon.js"></script>
</body>
</html>

js代码示例

var vm = avalon.define({
$id: "todos",
txt: '',
todolist:[],
add:function(e){
!!vm.txt.trim() && vm.todolist.push(vm.txt);
vm.txt = '';
}
});

从以上三种方法中我们可以总结出avalon的一些优势

Avalon相对jquery的优势
    1、代码逻辑清晰,编写起来更优雅和清爽,代码量也少
    2、不在纠结类似于jQuery的DOM查找、DOM操作以及复杂的事件绑定和处理
    
    Avalon相对Angular的优势
    1、Angular学习成本高
    2、Angular使用依赖注入的方式,对压缩不友好
    3、Avalon提供了更简单方便的语法

Avalon框架的特性
1、体积小:无任何依赖,体积小,自带加载器。压缩后不到50k;能将jQuery写的业务代码减少50%体积
2、编程体验好:爽快的编程体验,不再纠结于DOM操作!
3、兼容适配性好:符合国情,兼容IE6与移动端!
4、自动化测试完善:独有的avalon.test模块,专门用于avalon的单元测试
5、UI库丰富:拥有全职的团队帮它打造UI库,功能一应俱全

jQuery、Angluar、Avalon对比的更多相关文章

  1. js与jQuery实现方式对比汇总

      CreateTime--2016年12月16日09:11:23Author:Marydonjs与jQuery实现方式对比汇总 <div id="ListContainer" ...

  2. php开发面试题---jquery和vue对比(整理)

    php开发面试题---jquery和vue对比(整理) 一.总结 一句话总结: jquery的本质是更方便的选取和操作DOM对象,vue的本质是数据和页面分离 反思的回顾非常有用,因为决定了我的方向和 ...

  3. TwentyTwenty – 使用 jQuery 实现图片对比功能

    这是一款非常棒的图片对比工具,能够方便的应用到你的网站中.其基本思路是把两张图片层叠在一起,当你拖动滑竿的时候,利用 CSS clip 裁剪图片,进行形成视觉对比效果. 您可能感兴趣的相关文章 Met ...

  4. jQuery coveringBad 效果对比

    Covering-Bad 是一个可拉动大小的元素,覆盖在原有的元素上面,从而两者进行对比. 在线实例 实例演示1    实例演示2 使用方法 <div class="covered&q ...

  5. bootstrap和jquery mobile的对比

    最近一直在研究bootstrap这东西,确实是个好的框架,但是诸多优势背后也隐藏着一些不好的地方,对此,我把它和另一套响应式框架jquery mobile做了一下对比,我的总结如下:    1.boo ...

  6. jquery和vue对比

    1.jquery介绍:想必大家都用过jquery吧,这个曾经也是现在依然最流行的web前端js库,可是现在无论是国内还是国外他的使用率正在渐渐被其他的js库所代替,随着浏览器厂商对HTML5规范统一遵 ...

  7. webpack 集成 jQuery 和 Avalon

    webpack 系列 三:webpack 如何集成第三方js库 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webp ...

  8. Jquery与mootools对比

    换了新公司以后就很少使用原生Js来实现界面交互了,而是更多的依赖Jquery. 1.Jquery优点: 良好的一致性$().().xxxxx与强大的DOM api组件可以让一个js菜鸟一周之类立马开发 ...

  9. js与jquery基础知识对比(一)---2017-05-06

    用表格做的,想要对比的内容一目了然,红色部分为重点   js jquery 取元素 id: document.getElementById("aa"); 取到的是dom对象 cla ...

随机推荐

  1. ColorCtr控制颜色渐变

    ColorCtr控制颜色渐变 public class ColorCtr : MonoBehaviour { public static global_color Instance;         ...

  2. 最新版本dede与discuz通过ucenter完美整合

    人合租虚拟主机.然后到相关的官方网站上面下载相关的程序,我下载的是DedeCmsV5.7-GBK+Discuz_X2_RC_SC_GBK+UCenter_1.6.0_SC_GBK这个程序组合.涉及到怎 ...

  3. Myeclipse修改jdk版本流程

    Myeclipse修改jdk版本流程 很多时候,项目没有用对jdk版本时候,项目报错,在MyEclipse中,要修改JDK版本 有三处地方需要注意:!! 1.第一处 2.第二处 3.第三处

  4. BZOJ1563: [NOI2009]诗人小G(决策单调性 前缀和 dp)

    题意 题目链接 Sol 很显然的一个dp方程 \(f_i = min(f_j + (sum_i - sum_j - 1 - L)^P)\) 其中\(sum_i = \sum_{j = 1}^i len ...

  5. 减少服务器压力php生成静态xml文件

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...

  6. Linux 学习 之 bash

    Anything is programmable with defined syntax and common lib. Bash Shell is created to programme to L ...

  7. Html编码(&#数字型)与解码小结 - 针对Puny Code(中文域名)的解码处理

    学习并了解到Html编码的知识,源于工作中的产品需求.如果一个URL里面包含Puny Code(不仅仅指中文,还可能是韩文等Unicode里非英文的国家文字,本文以含中文的URL为例),而且这个URL ...

  8. [原创]Debian9 从零编译配置Redis4.0

    序言 Redis 一.准备工作 1.1 更新系统安装包列表 没啥,就他喵想用个最新的. # apt update 1.2 创建需要使用的目录 创建目录source和web,分别用来放源码和编译后的文件 ...

  9. python模块详解 sys shutil

    sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sy ...

  10. Jmeter入门8 连接microsoft sql server数据库取数据

    本文以Jmeter 连接microsoft sql server为例. 1 从微软官网下载Microsoft SQL Server JDBC Driver 地址:http://www.microsof ...