上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 52 下一页
摘要: 这是该系列的最后一篇。作为模块加载器,最核心的是:模块书写格式。从表层看,RequireJS 和 SeaJS 最大的差异就是各自默认推荐的模块书写格式不同。由于 RequireJS 支持 Simplified CommonJS Wrapper, 一定程度上可以说 SeaJS 是 RequireJS 的一个子集。甚至可以认为:SeaJS 是 RequireJS 中的 The Good Parts.(RequireJS 作者肯定不会同意,不过从社区中可以看出很多人很喜欢 Simplified CommonJS Wrapper 格式,这与 SeaJS 遵循的 Wrappings 基本一致。)功能差异 阅读全文
posted @ 2013-05-15 11:39 zhepama 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 理解了ID 规则,再来看 RequireJSAPI 文档就轻松多了。模块书写格式作为模块加载器,需要明确模块应该怎样写,这就是模块书写格式(Module Authoring Format)。对于文件加载器来说,约定非常少,比如 LABjs 只约定文件里不能有 document.write 等语句。RequireJS 遵守的是AMD规范,SeaJS 遵守的是Simple Wrappings规范。从表面上看,AMD 规范和 Wrappings 规范最大的不同是 factory 函数的参数不一样:// 两者的基本格式都是:define(id?, denpendencies?, factory);// 阅读全文
posted @ 2013-05-15 11:34 zhepama 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 来看 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, 阅读全文
posted @ 2013-05-15 11:31 zhepama 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 从 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 阅读全文
posted @ 2013-05-15 11:30 zhepama 阅读(354) 评论(0) 推荐(0) 编辑
摘要: RequireJS 发布 1.0.0 了,很值得关注,看是否有可借鉴之处。本次比较不涉及具体实现代码,主要比较两者的 API 设计。http://requirejs.orghttp://seajs.org从定位谈起首先,从 requirejs.org 首页可以得知,RequireJS 的定位是:RequireJS 是一个 JavaScript 文件和模块加载器,特别为浏览器优化,同时也可运行在 Rhino 和 Node 环境中。SeaJS 的定位是:SeaJS 是一个适用于浏览器端的 JavaScript 模块加载器。不要小看这两句话,任何类库/框架的定位,或者说愿景/目标,最终会决定该类库/ 阅读全文
posted @ 2013-05-15 11:24 zhepama 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 克军昨天的分享不错:前端基础架构的实践和思考从 2009 年起,也一直在想这些事。受克军启发,梳理成一张图:几点说明:将“架构”换成了“设施”,对应的英文是 Infrastructure. 感觉用“设施”更能精准表达原意。克军的大分类是设施的形态:是一个工具,还是一份规范,或是一个系统。这样分类不错,但系统和工具之间感觉很难区分,系统可以包含工具,工具可以是一个系统。这里从前端开发涉及的流程来划分:需求阶段 — 开发阶段 — 部署阶段 — 上线后。然后看每个阶段,需要哪些基础设施建设。想清楚后,前端的 Infrastructure 也就出来了。需求阶段,一个快速原型工具,无论对交互还是前端,都 阅读全文
posted @ 2013-05-15 11:13 zhepama 阅读(671) 评论(0) 推荐(0) 编辑
摘要: Module 即模块,来看下RequireJS怎么定义 Module :1. 简单的名值对?// Inside file my/shirt.js:define({color: "black",size: "unisize"});2. 定义成一个Function?// my/shirt.js now does setup work// before returning its module definition.define(function () {// Do setup work herereturn {color: "black" 阅读全文
posted @ 2013-05-14 19:55 zhepama 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 对于浏览器端来说,大多数事件都是异步的,但是有部分事件却不是,这部分事件称做同步事件,因此它们都是立即执行的,完全不理会前几篇文章中所提到的事件队列。以及浏览器的渲染、重绘等操作,也会打乱之前我们好不容易所建立起来的事件队列的概念。不过,本篇将会陆续不断的把这些坑给填上。同步事件DOM改变事件(DOM Mutation events)下面的Demo便用于说明同步事件之一的DOM Mutation events(注:该事件不支持Chrome浏览器)。123456789101112131415161718192021<a href="http://heroicyang.com/&q 阅读全文
posted @ 2013-05-14 03:37 zhepama 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 对于浏览器内部,大部分操作都是异步的生成事件并添加到JavaScript引擎线程的队列中,然后由JavaScript引擎线程进行调度执行。因此浏览器的很多事件都是和JavaScript相结合的,但是也有一些内部的限制。首先我们非常确定JavaScript是单线程的,对于浏览器来说,一个窗体中只有一个JavaScript引擎线程。而其他的行为,如:渲染、下载等是由单独的线程进行管理的,且具有不同的优先级。异步事件前面提到大多数事件都是异步的,触发的时候就将回调函数添加到事件队列。浏览器提供了一个内部的回路,也就是之前所谈到的Event Loop,由它来负责检查队列和处理事件、执行函数等。详细可参 阅读全文
posted @ 2013-05-14 03:35 zhepama 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 定时器其实并不是JavaScript提供的,而是由浏览器(对于前端来说)提供的。所以setTimeout()和setInterval()这两个方法均是通过浏览器的顶层对象window进行调用,可能平时大家在使用的过程中也会省去window而直接使用这两个方法。这两个方法所接收的参数都一样:12setTimeout(func|code, delay);setInterval(func|code, delay);这两个方法总是被简单的认为:在多少毫秒之后就执行里面的函数或者每间隔多少毫秒就执行里面的函数,基于这种理解的话会遇到很多匪夷所思的坑。而结合上篇文章中所提到的执行队列来解释的话,很多疑问都 阅读全文
posted @ 2013-05-14 03:26 zhepama 阅读(339) 评论(0) 推荐(0) 编辑
上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 52 下一页