理论整理(五)

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.前端模块化开发的优点

  1. 模块的版本管理。经过别名等配置,配合构建工具,能够比较轻松地实现模块的版本管理。
  2. 提升可维护性。模块化可让每一个文件的职责单一,很是有利于代码的维护。Sea.js 还提供了 nocache、debug 等插件,拥有在线调试等功能,能比较明显地提高效率。
  3. 前端性能优化。Sea.js 经过异步加载模块,这对页面性能很是有益。Sea.js 还提供了 combo、flush 等插件,配合服务端,能够很好地对页面性能进行调优。
  4. 跨环境共享模块。CMD 模块定义规范与 Node.js 的模块规范很是相近。经过 Sea.js 的 Node.js 版本,能够很方便实现模块的跨服务器和浏览器共享。
  5. 经过 exports 暴露接口。这意味着不须要命名空间了,更不须要全局变量。这是一种完全的命名冲突解决方案。
  6. 经过 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

相关文章
相关标签/搜索