JS事件分层及性能优化

HTML事件处理程序

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
function clickHander() {
alert('click');
}
</script>
</head>
<body>
<p onclick="alert(event.type)">hi jiavan</p>
<p onclick="clickHander()">handler</p>
</body>
</html>

html事件处理程序的主要缺点

  1. 可能会出现事件被触发了而事件处理程序还没有被加载
  2. 文档行为与文档结构耦合程度高

Read More

Javascript模块化编程及编写加载遵循AMD规范的代码

最原始的写法

模块就是实现一组特定功能的方法,把不同的函数简单的放在一起就是一个模块。

对象写法

把模块写成一个对象,所有的模块成员都放到这个对象里面。

var module1 = new Object({
_count: 10,
func1: function () {
console.log('this is fun1');
},
func2: function () {
console.log('this is func2');
}
});

module1.func1();

要使用模块成员的时候直接调用模块成员就行了,但是这样的写法会暴露所有的模块成员,内部状态可以被外部改写,比如外部直接可以改写_count的值。

立即执行函数写法

使用立即执行函数的写法可以达到不暴露私有成员的目的。

var module = (function () {
var _count = 10;
var func1 = function () {
console.log(_count);
};
var func2 = function () {
console.log(_count);
};

return {
func1: func1,
func2: func2
};
})();

module.func1();

这样的写法外部不能访问到_count变量。

Read More

Yeoman/Bower/Gulp前端自动化

font-end-auto-tools.jpg

bower,web包管理器

安装npm install -g bower,官方页面http://bower.io

比如利用bower安装jquery或者bootstrap,可以使用一下命令:

bower install jquery
bower install bootstrap

会从bower包管理器中查找已经在bower上注册的要安装的组件,找到以后去github上找到最新版本的下载地址,下载的组件将会被保存在目录下的bower_components目录下。

也可以用过github短语的形式进行安装,比如jquery在github的地址是jquery/jquery下,就能通过下面的方式安装:

bower install jquery/jquery
//注意,bower安装组件的时候,会将组件下载在bower当前命令执行的目录环境下的bower_components目录下

除了用上面的两种方式,bower还可以通过完整的github仓库地址进行安装,如:

bower install https://github.com/jquery/jquery.git

另外bower还可以直接通过url进行安装:

bower install http://sinaapp.com/jquery/1.7.2/jquery.js

Read More

NoSQL与CAP定理简介

NoSQL简介

NoSQL is “Not Only SQL”,意为不仅仅是SQL。

NoSQL是指非关系型数据库,是对不同于传统的关系型数据库管理系统的统称。它常用于超大规模的数据存储,这些类型的数据存储不需要固定的模式,无需多余操作即可横向扩展。

ACID规则

传统关系型数据库事务(transaction)遵循ACID规则:

  1. Atomicity(原子性)
    原子性很好理解,可以理解为一个事务要么不做,要么做完。有点类似于操作系统里面的原语。只要一个操作失败,整个事务就需要回滚。

  2. Consistency(一致性)
    数据库要处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

  3. Isolation(独立性)
    是指并发的事务之间不会相互影响。

  4. Durability(持久性)
    事务提交后将会永久的保存在数据库,不会因为宕机而丢失。

RDBMS/NoSQL

RDBMS

  • 高度组织化结构化数据;
  • 结构化查询语言SQL;
  • 数据和关系都存储在单独的表中;
  • 数据操纵语言,数据定义语言;
  • 严格的一致性;
  • 基础事务。

NoSQL

  • 代表着不仅仅是SQL;
  • 没有声明性查询语句;
  • 没有预定义的模式;
  • 键值对存储,列存储,文档存储,图形数据库;
  • 最终一致性,而非ACID属性;
  • 非结构化和不可预知的数据;
  • CAP定理;
  • 高性能,高可用性和可伸缩性;

Read More