理论整理(五)
2017-09-22 16:56
99 查看
[b]1.关于JS面向对象开发原理[/b]
2.关于AMD、CMD开发规范
AMD规范: 异步模块定义(Asynchronous Module Definition),它是 依赖前置 (因为依赖必须一开始就写好)会先 尽早地执行(依赖)模块 , 相当于所有的require都被提前了,它的 require 分全局和局部, 一个API当多个用 。
AMD规范及其代表: requireJS
CMD规范:CMD(Common Module Definition)更贴近 CommonJS Modules/1.1 和 Node Modules 规范,一个模块就是一个文件;它推崇 依赖就近 想什么时候 require 就什么时候加载,实现了 懒加载, 延迟执行 (as lazy as possible) ;也没有全局 require, 每个API都简单纯粹 。
CMD规范及其代表: seaJS
遵循的规范不同。RequireJS 遵循 AMD(异步模块定义)规范,Sea.js 遵循 CMD (通用模块定义)规范。规范的不同,导致了两者 API 不同。Sea.js 更贴近 CommonJS Modules/1.1 和 Node Modules 规范。
推广理念有差异。RequireJS 在尝试让第三方类库修改自身来支持 RequireJS,目前只有少数社区采纳。Sea.js 不强推,采用自主封装的方式来“海纳百川”,目前已有较成熟的封装策略,SeaJS提倡:文件即模块。
对开发调试的支持有差异。Sea.js 非常关注代码的开发调试,有 nocache、debug 等用于调试的插件。RequireJS 无这方面的明显支持。
两者代码质量有差异。RequireJS 是没有明显的 bug,SeaJS 是明显没有 bug。
插件机制不同。RequireJS 采取的是在源码中预留接口的形式,插件类型比较单一。Sea.js 采取的是通用事件机制,插件类型更丰富。
总之,如果说 RequireJS 是 Prototype 类库的话,则 Sea.js 致力于成为 jQuery 类库。
3.前端模块化开发的优势
模块的版本管理。通过别名等配置,配合构建工具,可以比较轻松地实现模块的版本管理。
提高可维护性。模块化可以让每个文件的职责单一,非常有利于代码的维护。Sea.js 还提供了 nocache、debug 等插件,拥有在线调试等功能,能比较明显地提升效率。
前端性能优化。Sea.js 通过异步加载模块,这对页面性能非常有益。Sea.js 还提供了 combo、flush 等插件,配合服务端,可以很好地对页面性能进行调优。
跨环境共享模块。CMD 模块定义规范与 Node.js 的模块规范非常相近。通过 Sea.js 的 Node.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
2.关于AMD、CMD开发规范
AMD规范: 异步模块定义(Asynchronous Module Definition),它是 依赖前置 (因为依赖必须一开始就写好)会先 尽早地执行(依赖)模块 , 相当于所有的require都被提前了,它的 require 分全局和局部, 一个API当多个用 。
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 规范。
推广理念有差异。RequireJS 在尝试让第三方类库修改自身来支持 RequireJS,目前只有少数社区采纳。Sea.js 不强推,采用自主封装的方式来“海纳百川”,目前已有较成熟的封装策略,SeaJS提倡:文件即模块。
对开发调试的支持有差异。Sea.js 非常关注代码的开发调试,有 nocache、debug 等用于调试的插件。RequireJS 无这方面的明显支持。
两者代码质量有差异。RequireJS 是没有明显的 bug,SeaJS 是明显没有 bug。
插件机制不同。RequireJS 采取的是在源码中预留接口的形式,插件类型比较单一。Sea.js 采取的是通用事件机制,插件类型更丰富。
总之,如果说 RequireJS 是 Prototype 类库的话,则 Sea.js 致力于成为 jQuery 类库。
3.前端模块化开发的优势
模块的版本管理。通过别名等配置,配合构建工具,可以比较轻松地实现模块的版本管理。
提高可维护性。模块化可以让每个文件的职责单一,非常有利于代码的维护。Sea.js 还提供了 nocache、debug 等插件,拥有在线调试等功能,能比较明显地提升效率。
前端性能优化。Sea.js 通过异步加载模块,这对页面性能非常有益。Sea.js 还提供了 combo、flush 等插件,配合服务端,可以很好地对页面性能进行调优。
跨环境共享模块。CMD 模块定义规范与 Node.js 的模块规范非常相近。通过 Sea.js 的 Node.js 版本,可以很方便实现模块的跨服务器和浏览器共享。
通过
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
相关文章推荐
- sql server基础理论(整理)
- 理论整理(三)
- 机器学习基石的泛化理论及VC维部分整理(第五讲)
- 自动机理论整理
- 【C#学习】有关理论概念的整理
- WebSocket 理论知识整理
- 简练软考知识点整理-激励理论之期望理论
- 最优化理论与算法部分整理-常见的参数搜索算法
- 简练软考知识点整理-激励理论之期望理论
- 理论整理(四)
- 程序员上午考试理论知识整理
- 机器学习、深度学习的理论与实战入门建议整理(一)
- ORACLE EBS 计划功能 理论整理
- oracle 跟踪文件理论整理
- 整理正则表达式基础理论部分(一)
- 整理正则表达式基础理论(二)
- 理论整理
- RFID理论之基础知识结构整理
- 事件整理理论篇
- Java 理论要点整理