摘要:
这是该系列的最后一篇。作为模块加载器,最核心的是:模块书写格式。从表层看,RequireJS 和 SeaJS 最大的差异就是各自默认推荐的模块书写格式不同。由于 RequireJS 支持 Simplified CommonJS Wrapper, 一定程度上可以说 SeaJS 是 RequireJS 的一个子集。甚至可以认为:SeaJS 是 RequireJS 中的 The Good Parts.(RequireJS 作者肯定不会同意,不过从社区中可以看出很多人很喜欢 Simplified CommonJS Wrapper 格式,这与 SeaJS 遵循的 Wrappings 基本一致。)功能差异 阅读全文
摘要:
理解了ID 规则,再来看 RequireJSAPI 文档就轻松多了。模块书写格式作为模块加载器,需要明确模块应该怎样写,这就是模块书写格式(Module Authoring Format)。对于文件加载器来说,约定非常少,比如 LABjs 只约定文件里不能有 document.write 等语句。RequireJS 遵守的是AMD规范,SeaJS 遵守的是Simple Wrappings规范。从表面上看,AMD 规范和 Wrappings 规范最大的不同是 factory 函数的参数不一样:// 两者的基本格式都是:define(id?, denpendencies?, factory);// 阅读全文
摘要:
来看 RequireJS 的 API 页面:api.html, 该篇博客着重分析 RequireJS 和 SeaJS 在 ID 规则上的异同。RequireJS 的 ID 规则对于模块加载器来说,模块 id 遵守的规则非常重要。首先来定义几个概念。假设当前页面路径为http://t.com/a/b/c.html, 则:pageRoot=http://t.compageUrl=http://t.com/a/bbaseUrl: 在 RequireJS 里,默认情况下,baseUrl 就是 pageUrl, 除非:通过 require.config 更改了 baseUrl指定了 data-main, 阅读全文
摘要:
从 requirejs.org 的首页出发,接下来是快速入门和下载,我们来看下载页面:Download产出物RequireJS 提供了三个文件:require.js — 这是核心文件,提供 JavaScript 文件和模块加载功能require-jquery.js — 打包了 jquery 最新版本的 require.jsr.js — 优化工具,以及让 RequireJS 的模块可运行于 Node 和 Rhino 环境SeaJS 提供的内容,目前也有三部分:sea.js — 模块加载器modules — 可运行在 seajs 环境中的推荐模块,在这里下载modules.seajs.comspm 阅读全文
摘要:
RequireJS 发布 1.0.0 了,很值得关注,看是否有可借鉴之处。本次比较不涉及具体实现代码,主要比较两者的 API 设计。http://requirejs.orghttp://seajs.org从定位谈起首先,从 requirejs.org 首页可以得知,RequireJS 的定位是:RequireJS 是一个 JavaScript 文件和模块加载器,特别为浏览器优化,同时也可运行在 Rhino 和 Node 环境中。SeaJS 的定位是:SeaJS 是一个适用于浏览器端的 JavaScript 模块加载器。不要小看这两句话,任何类库/框架的定位,或者说愿景/目标,最终会决定该类库/ 阅读全文
摘要:
克军昨天的分享不错:前端基础架构的实践和思考从 2009 年起,也一直在想这些事。受克军启发,梳理成一张图:几点说明:将“架构”换成了“设施”,对应的英文是 Infrastructure. 感觉用“设施”更能精准表达原意。克军的大分类是设施的形态:是一个工具,还是一份规范,或是一个系统。这样分类不错,但系统和工具之间感觉很难区分,系统可以包含工具,工具可以是一个系统。这里从前端开发涉及的流程来划分:需求阶段 — 开发阶段 — 部署阶段 — 上线后。然后看每个阶段,需要哪些基础设施建设。想清楚后,前端的 Infrastructure 也就出来了。需求阶段,一个快速原型工具,无论对交互还是前端,都 阅读全文