- 原生JS应用
- H5、css3、canvas、svg
- 数据库:数据存储、数据检索
- 服务器:认证、授权、验证
客户端:HTML渲染、装饰性JS、业务逻辑、HTML生成
操作DOM:Jquery
- 历史管理和事件处理的插件:TaffyDB2
- 服务端与客户端之间的消息传输:Socket.IO
数据库:MongoDB,使用js原生的数据格式json来保存数据
模块的编写:
- 1、声明所有变量,包括模块的配置值和状态值
- 2、声明需要操作的DOM(jquery)对象
- 3、定义操作DOM的方法
- 4、定义处理事件的回调方法
5、加载模块的方法,参数应包含模块的父元素,过程包括填充模板、注册事件处理函数
js引擎在进入作用域时,会对代码分两轮处理。第一轮,生成函数执行环境对象,即初始化执行环境对象中的变量和函数;第二轮,执行环境对象。
- 执行环境:执行环境由函数执行时发生的所有事物组成。它和函数声明是分离的,函数声明描述了当函数执行的时候会发生的事情。
- 执行环境对象
- 所有在函数中定义的变量和函数都是执行环境的一部分,在谈论函数的作用域时,执行环境也是其所指的一部分。
js引擎把声明和初始化的变量当作执行环境对象的属性。
js中的函数作用域时通过词法来划分的,意即在函数定义的时候作用域链就确定了。
- 在执行环境中调用函数会创建一个新的嵌套的执行环境。
- js引擎在执行环境对象中访问作用域内的变量,查找的顺序叫做作用域链。它和原型链一起描述了js访问变量和属性的顺序。
通常我们所说的全局变量是执行环境顶层对象的属性,浏览器的顶层对象是window对象;nodejs中顶层对象是global。
在js中,对象的构造函数和原型是分开设置的。方法Object.create作为new操作符的替代方案,使用它来创建js对象时,更像是基于原型的感觉。
闭包是阻止垃圾回收器将变量从内存中移除的方法,使得在创建变量的执行环境的外面能够访问到该变量。
使用jquery来发送ajax请求的方法,回调函数中的this执行ajax请求对象。
编写模块的一般模式
- 把静态配置值放在configMap对象中, module scope variables
- 将在整个模块中共享的动态信息放在stateMap对象中, module scope variables
- 将jquery集合缓存在jqueryMap对象中,jqueryMap缓存的用途是可以大大地减少Jquery对文档的遍历次数,能够提高性能。 module scope variables
- 声明所有模块作用域内的其他变量,很多都是在之后赋值。 module scope variables
- 将创建和操作页面元素的的函数放在"DOM Methods"区块中。DOM methods
- 创建不和页面元素交互的函数, Utility Methods
- 创建处理jquery事件的回调函数, Event handlers
创建initModule公开方法,用于初始化模块。 Public Methods
jQuery事件处理程序返回值,当返回false时:
- 阻止操作对象的默认行为,相当于调用 event.preventDefault()
- 阻止冒泡,阻止该事件触发父DOM元素上的相同事件,相当于调用 event.stopPropagation()
- 结束该事件处理程序的执行,不影响其他绑定该事件的事件处理程序的执行。如果不想执行后续的事件处理程序,可以调用event.preventImmediatePropagation()