1.关于JS面向对象开发原理前端
2.关于AMD、CMD开发规范程序员
AMD规范: 异步模块定义(Asynchronous Module Definition),它是 依赖前置 (由于依赖必须一开始就写好)会先 尽早地执行(依赖)模块 , 至关于全部的require都被提早了,它的 require 分全局和局部, 一个API当多个用 。chrome
AMD规范及其表明: requireJS浏览器
CMD规范:CMD(Common Module Definition)更贴近 CommonJS Modules/1.1 和 Node Modules 规范,一个模块就是一个文件;它推崇 依赖就近 想何时 require 就何时加载,实现了 懒加载, 延迟执行 (as lazy as possible) ;也没有全局 require, 每一个API都简单纯粹 。性能优化
CMD规范及其表明: seaJS服务器
RequireJS 和 Sea.js 都是模块加载器,倡导模块化开发理念,核心价值是让 JavaScript 的模块化开发变得简单天然。异步
定位有差别。RequireJS 想成为浏览器端的模块加载器,同时也想成为 Rhino / Node 等环境的模块加载器。Sea.js 则专一于 Web 浏览器端,同时经过 Node 扩展的方式能够很方便跑在 Node 环境中。前端性能
遵循的规范不一样。RequireJS 遵循 AMD(异步模块定义)规范,Sea.js 遵循 CMD (通用模块定义)规范。规范的不一样,致使了二者 API 不一样。Sea.js 更贴近 CommonJS Modules/1.1 和 Node Modules 规范。ide
推广理念有差别。RequireJS 在尝试让第三方类库修改自身来支持 RequireJS,目前只有少数社区采纳。Sea.js 不强推,采用自主封装的方式来“海纳百川”,目前已有较成熟的封装策略,SeaJS提倡:文件即模块。模块化
对开发调试的支持有差别。Sea.js 很是关注代码的开发调试,有 nocache、debug 等用于调试的插件。RequireJS 无这方面的明显支持。
二者代码质量有差别。RequireJS 是没有明显的 bug,SeaJS 是明显没有 bug。
插件机制不一样。RequireJS 采起的是在源码中预留接口的形式,插件类型比较单一。Sea.js 采起的是通用事件机制,插件类型更丰富。
总之,若是说 RequireJS 是 Prototype 类库的话,则 Sea.js 致力于成为 jQuery 类库。
3.前端模块化开发的优点
exports
暴露接口。这意味着不须要命名空间了,更不须要全局变量。这是一种完全的命名冲突解决方案。require
引入依赖。这可让依赖内置,开发者只需关心当前模块的依赖,其余事情 Sea.js 都会自动处理好。对模块开发者来讲,这是一种很好的 关注度分离,能让程序员更多地享受编码的乐趣。以 jQuery、RequireJS、国内的 Sea.js、OzJS 等类库为基础的集市模式。在集市模式下,全部组件彼此独立、职责单一,各组件经过组合松耦合在一块儿,协同完成开发。
4.各主流浏览器(IE/firefox/chrome/safari)的区别、漏洞、差别
Trident内核:IE,MaxThon,TT,The World,360,搜狗浏览器
Gecko内核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey
Presto内核:Opera7及以上
Webkit内核:Safari,Chrome