摘要:
模块化 & 依赖管理 & 性能优化 RequireJS。Web 前端应用可以快速变得相当复杂。理想的做法是提供某种结构和依赖关系管理,以及用一种简单的方式优化最终结果。 模板 - 分离展现和逻辑 Templating。在代码中混入标记会导致一些让人讨厌的代码,这样的代码繁琐、单调,并且难以维护。像 Underscore 和 Handlebars 这样的库提供了一种清晰的方式,将展现描述从逻辑中分离出来。你可以自由选择使用什么库,但是我鼓励你多进行一些比较,找到最适合你的库。 ... 阅读全文
posted @ 2013-10-19 14:28
agile30353
阅读(202)
评论(0)
推荐(0)
摘要:
目录1. 参考资料2. 参考框架&库3. 前言开光 - 框架>=本质4. MVC 模型4.1 代码混乱4.2 传说中的单页面应用程序 SPA(或一站式应用程序)4.3 结构化的 Web 应用程序4.4 还不够完美5. JSMVC5.1 JSMVC 职责划分5.2 JSMVC 实现探讨5.3 事件驱动5.4 应该关注什么6. Backbone6.1 Backbone 架构6.2 事件 Event - 最佳基友6.3 模型 Model - 自娱自乐6.4 集合 Collection - 不是一个人在战斗6.5 视图 View - 能者多劳6.6 控制器 Route + History 阅读全文
posted @ 2013-10-19 14:27
agile30353
阅读(265)
评论(0)
推荐(0)
摘要:
前端模板引擎 @nuysoft目录1. 参考资料2. 参考模板引擎3. 前言开光 - 混乱之治4. 概述5. 后记 - 和而不同6. Mustache6.1 解析6.2 编译6.3 缓存6.4 渲染6.5 数据结构、方法功能、调用关系7. Handlebars7.1 解析7.2 编译7.3 渲染7.4 缓存7.5 关键步骤示例7.6 数据结构、方法功能、调用关系8. dust8.1 所谓的“异步”8.2 解析8.3 编译8.4 缓存8.5 渲染8.6 数据结构、方法功能、调用关系9. Micro-Templating9.1 解析9.2 编译9.3 缓存9.4 渲染10. Underscore 阅读全文
posted @ 2013-10-19 14:26
agile30353
阅读(904)
评论(0)
推荐(0)
摘要:
目录1. WHAT - 测试工具2. WHAT - 什么是单元测试&自动化测试?3. WHAT - 为什么要做单元测试&自动化测试?4. HOW – Jasmine vs Qunit4.1 基本结构4.2 规范:CommonJS Unit Testing/1.14.3 Jasmine ['dʒæzmɪn; 'dʒæs-]4.4 基本语法5. QUnit5.1 历史5.2 基本语法5.3 哪些开源库&框架在用 QUnit?6. HOW - Demo7. HOW - 最佳实践8. WHY - QUnit 实现原理29 August 201 阅读全文
posted @ 2013-10-19 14:18
agile30353
阅读(190)
评论(0)
推荐(0)
摘要:
jQuery Code Overview总体架构、构造 jQuery 对象、CSS选择器引擎 Sizzle、异步队列 Deferred、数据缓存 Data、队列 Queue、浏览器测试 Support、属性操作 Attributes、事件处理 Event、DOM遍历 Traversing、DOM操作 Manipulation、CSS操作 CSS、异步请求 AJAX、动画 Effects、联系我 阅读全文
posted @ 2013-10-19 14:17
agile30353
阅读(90)
评论(0)
推荐(0)
摘要:
Markdown EditorMarkdown 是一种轻量级标记语言,它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。[1]这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。jQuery 浏览器功能测试jQuery 对浏览器功能和 bug 的测试Grunt 0.4.x DocumentationGrunt 是一个基于任务的JavaScript工程命令行构建工具。Why QUnit DO NOT QUALIFY测试工具 阅读全文
posted @ 2013-10-19 14:12
agile30353
阅读(83)
评论(0)
推荐(0)
摘要:
目录1. Grunt 配置2. 任务配置和目标3. 选项4. 文件集合4.1 紧凑型格式4.2 文件对象格式4.3 文件数组格式4.4 旧格式4.5 自定义过滤函数4.6 匹配模式4.7 动态创建文件对象5. 模板6. 导入外部数据29 March 2013 原文:https://github.com/gruntjs/grunt/wiki/Configuring-tasks本指南介绍了如何在项目中使用文件 Gruntfile 配置任务。如果你不知道 Gruntfile 是什么,请阅读 Grunt 入门指南,并查看 Gruntfile 示例。1. Grunt 配置 ⬆任务配置通过 Gruntfi 阅读全文
posted @ 2013-10-19 13:45
agile30353
阅读(144)
评论(0)
推荐(0)
摘要:
目录1. 创建插件2. 注意2.1 命名你的任务2.2 调试2.3 存储任务文件2.4 避免改变当前工作目录:process.cwd()29 March 2013 原文:https://github.com/gruntjs/grunt/wiki/Configuring-tasks1. 创建插件 ⬆运行 `npm install -g grunt-init` 安装 [grunt-init](https://github.com/gruntjs/grunt-init)运行 `git clone git://github.com/gruntjs/grunt-init-gruntplugin.git 阅读全文
posted @ 2013-10-19 13:43
agile30353
阅读(131)
评论(0)
推荐(0)
摘要:
目录1. 别名任务2. 多任务3. “基本”任务4. 自定义任务5. CLI 选项/环境6. 为什么我的异步任务不完成?29 March 2013 原文:https://github.com/gruntjs/grunt/wiki/Creating-tasks任务是 Grunt 的面包和奶油。是你最常用的,例如 jshint 或 nodeunit。每次运行 Grunt 时,你可以指定一个或多个任务来运行,任务告诉了 Grunt 你想要它做的事情。译注:bread and butter 基本生活资料,生计如果没有指定一个任务,但是已经定义了一个命名为“default”的任务,该任务将默认运行。1. 阅读全文
posted @ 2013-10-19 13:42
agile30353
阅读(159)
评论(0)
推荐(0)
摘要:
目录1. 概览2. 安装特定版本3. 安装发布的开发版本4. 直接从 github 安装29 March 2013 原文:https://github.com/gruntjs/grunt/wiki/Installing-grunt本文介绍了如何安装特定版本的 grunt 和 grunt 插件。如果还没有读过入门指南,你应该先读读它。1. 概览 ⬆Grunt 和 Grunt 插件应该被定义在项目的 package.json 中的 devDependencies 上。2. 安装特定版本 ⬆如果你需要特定版本的 Grunt 或 Grunt 插件,运行 npm install grunt@VERSIO 阅读全文
posted @ 2013-10-19 13:40
agile30353
阅读(210)
评论(0)
推荐(0)
摘要:
目录1. 安装 CLI2. CLI 是如何工作的3. 用现有的 grunt 项目工作4. 准备一个新的 grunt 项目5. package.json5.1 安装 Grunt 和 插件6. Gruntfile6.1 Gruntfile 示例6.2 包裹函数6.3 项目和任务配置6.4 加载 grunt 插件和任务6.5 自定义任务7. 延伸阅读8. 译者后记29 March 2013 原文:https://github.com/gruntjs/grunt/wiki/Getting-startedGrunt 和它的插件通过 Node.js 的包管理器 npm 安装和管理。这些说明为 Grunt 阅读全文
posted @ 2013-10-19 13:39
agile30353
阅读(132)
评论(0)
推荐(0)
摘要:
目录1. grunt-init2. 安装3. 用法4. 安装模板5. 自定义模板5.1 拷贝文件5.2 重命名或不包括模板文件6. 指定默认提示答案7. 定义一个初始化模板7.1 exports.description7.2 exports.notes7.3 exports.warnOn7.4 exports.template8. 初始化模板内部8.1 init.addLicenseFiles8.2 init.availableLicenses8.3 init.copy8.4 init.copyAndProcess8.5 init.defaults8.6 init.destpath8.7 in 阅读全文
posted @ 2013-10-19 13:36
agile30353
阅读(240)
评论(0)
推荐(0)
摘要:
原文:https://github.com/gruntjs/grunt/wiki/Sample-Gruntfile下面我们介绍和分析一个 Gruntfile 示例,其中使用了 5 个 grunt 插件:grunt-contrib-uglifygrunt-contrib-qunitgrunt-contrib-concatgrunt-contrib-jshintgrunt-contrib-watch完整的 Gruntfile 在页面底部,但是如果你继续读下去,我们会每次只处理一步。第一个部分是”包裹“函数,封装你的 Grunt 配置。module.exports = function(grunt) 阅读全文
posted @ 2013-10-19 13:29
agile30353
阅读(206)
评论(0)
推荐(0)
摘要:
Gruntfile 示例 Sample Gruntfile。介绍和分析一个 Gruntfile 示例,其中使用了 5 个 grunt 插件 项目脚手架 Project Scaffolding。grunt-init 是一个脚手架工具,用于自动创建项目。基于当前的环境和几个问题的答案创建一个完整的目录结构。确切的文件和内容取决于所选的模板,和模板提出的问题的答案。 安装 Grunt Installing G... 阅读全文
posted @ 2013-10-19 13:26
agile30353
阅读(67)
评论(0)
推荐(0)
摘要:
目录1. 为什么要使用模板?2. 第一印象3. 模板引擎4. Mustache 示例5. 组织模板5.1 方案1:SCRIPT 标签5.2 方案2:预编译模板5.3 方案3:AMD 与 REQUIREJS5.4 监听模板6. 性能注意事项7. 结论8. 作者 Lars Kappert08 April 2013 原文:Client-Side Templating, From The Server To The Client, 2012.12.5在浏览器中使用模板正变得越来越广泛。随着应用程序的逻辑从服务端转移到客户端,以及类似 MVC(模型-视图-控制)的模式的广泛使用,促使模板开始拥抱浏览器。 阅读全文
posted @ 2013-10-19 13:23
agile30353
阅读(475)
评论(0)
推荐(0)
摘要:
目录1. 简介1.1 战报1.2 绿鸟的攻击2. 猪偷走了什么?3. Twitter 应用4. 使用 api.twitter.com5. 模拟静态数据5.1 使用 Mockjax6. 动态模拟半随机数据6.1 使用 Mockjax 和 mockJSON7. 攻击!8. 结论15 April 2013 原文:Angry Birds of JavaScript: Green Bird - Mocking私货:nuysoft/Mock1. 简介 ⬆一群无法无天的猪从无辜的小鸟那里偷走了所有的前端架构,现在小鸟们要把它们夺回来!一队特殊的小鸟英雄将攻击这些卑鄙的猪,直到夺回原本属于它们的前端 Java 阅读全文
posted @ 2013-10-19 12:26
agile30353
阅读(370)
评论(0)
推荐(1)
摘要:
目录1. 简介2. 猪偷走了什么?3. 对象是如何变为全局对象的?4. 为什么全局对象是一个问题?5. 保护自己的多种方式6. 进攻!7. 结论15 April 2013 原文:Angry Birds of JavaScript: Red Bird - IIFE1. 简介 ⬆一群无法无天的猪从无辜的小鸟那里偷走了所有的前端架构,现在小鸟们要把它们夺回来!一队特殊的小鸟英雄将攻击这些卑鄙的猪,直到夺回原本属于它们的前端 JavaScript 架构!在这篇文章中,我们将看看红色小鸟,它使用可靠的 IIFE 作为攻击武器,而 IIFE 是一切秘密的基础。IIFE Immediately-invoke 阅读全文
posted @ 2013-10-19 12:24
agile30353
阅读(231)
评论(0)
推荐(0)
摘要:
目录1. 简介1.1 战报1.2 大鸟哥的攻击2. 猪偷走了什么?3. 鸟界的四人帮(23 种)3.1 创建模式(5 种)3.2 结构模式(7 种)3.3 行为模式(11 种)4. JavaScript 中的设计模式4.1 单例模式4.2 工厂模式4.3 桥接模式4.4 外观模式4.5 适配器模式4.6 观察者模式5. 更多模式5.1 继承5.2 链式语法5.3 封装模式5.4 有限状态机6. 建议7. 其他资源8. 攻击!9. 结论16 April 2013 原文:Angry Birds of JavaScript: Big Brother Bird - Patterns1. 简介 ⬆一群无 阅读全文
posted @ 2013-10-19 12:18
agile30353
阅读(173)
评论(0)
推荐(0)
摘要:
目录1. 简介1.1 战报1.2 白鸟的攻击2. 猪偷走了什么?3. JavaScript 编码标准4. JavaScript Linting5. JavaScript Analysis6. 进攻!7. 结论18 April 2013 原文:Angry Birds of JavaScript: White Bird Linting私货:nuysoft/Aristotle1. 简介 ⬆一群无法无天的猪从无辜的小鸟那里偷走了所有的前端架构,现在小鸟们要把它们夺回来!一队特殊的小鸟英雄将攻击这些卑鄙的猪,直到夺回原本属于它们的前端 JavaScript 架构!Will the birds be su 阅读全文
posted @ 2013-10-19 12:13
agile30353
阅读(332)
评论(0)
推荐(0)
摘要:
目录1. 简介1.1 战报1.2 神鹰的攻击2. 猪偷走了什么?3. Grunt3.1 入门指南3.2 Grunt 资源4. Twitter Bower4.1 Bower 资源5. Yeoman6. 攻击!7. 结论19 April 2013 原文:Angry Birds of JavaScript: Mighty Eagle - Automation1. 简介 ⬆一群无法无天的猪从无辜的小鸟那里偷走了所有的前端架构,现在小鸟们要把它们夺回来!一队特殊的小鸟英雄将攻击这些卑鄙的猪,直到夺回原本属于它们的前端 JavaScript 架构!小鸟们最终会成功吗?它们会打败那些培根味儿的敌人吗?让我们 阅读全文
posted @ 2013-10-19 12:10
agile30353
阅读(175)
评论(0)
推荐(0)
摘要:
目录1. 简介1.1 战报1.2 绿鸟的攻击2. 猪偷走了什么?3. 应用程序示例4. 紧耦合代码5. 消息类型5.1 观察者事件5.2 中介事件5.3 混合事件5.4 该用哪个?6. 附加资源7. 松耦合代码8. 攻击!9. 结论20 April 2013 原文:Angry Birds of JavaScript: Blue Bird - Events1. 简介 ⬆一群无法无天的猪从无辜的小鸟那里偷走了所有的前端架构,现在小鸟们要把它们夺回来!一队特殊的小鸟英雄将攻击这些卑鄙的猪,直到夺回原本属于它们的前端 JavaScript 架构!小鸟们最终会成功吗?它们会打败那些培根味儿的敌人吗?让我 阅读全文
posted @ 2013-10-19 12:10
agile30353
阅读(167)
评论(0)
推荐(0)
摘要:
目录1. 简介1.1 战报1.2 黑鸟的攻击2. 猪偷走了什么?3. 纠结的蠕虫大杂烩4. Backbone.js 基础5. 重构紧耦合代码5.1 RequireJS5.2 模型5.3 集合5.4 视图6. 附加资源7. 攻击!8. 结论21 April 2013 原文:Angry Birds of JavaScript: Black Bird - Backbone1. 简介 ⬆一群无法无天的猪从无辜的小鸟那里偷走了所有的前端架构,现在小鸟们要把它们夺回来!一队特殊的小鸟英雄将攻击这些卑鄙的猪,直到夺回原本属于它们的前端 JavaScript 架构!小鸟们最终会成功吗?它们会打败那些培根味儿的 阅读全文
posted @ 2013-10-19 12:05
agile30353
阅读(161)
评论(0)
推荐(0)
摘要:
目录1. 简介1.1 战报1.2 橙色小鸟的攻击2. 猪偷走了什么?3. 为什么要使用模板引擎?4. Underscore.js4.1 示例14.2 示例24.3 为什么使用 Underscore.js?5. Handlebars.js5.1 预编译模板5.2 为什么使用 Handlebars.js?6. 其他模板引擎怎么样?7. 其他资源8. 攻击!9. 结论21 April 2013 原文:Angry Birds of JavaScript: Orange Bird - Templating1. 简介 ⬆一群无法无天的猪从无辜的小鸟那里偷走了所有的前端架构,现在小鸟们要把它们夺回来!一队特 阅读全文
posted @ 2013-10-19 12:01
agile30353
阅读(191)
评论(0)
推荐(0)
摘要:
模块化 & 依赖管理 & 性能优化 RequireJS。Web 前端应用可以快速变得相当复杂。理想的做法是提供某种结构和依赖关系管理,以及用一种简单的方式优化最终结果。 模板 - 分离展现和逻辑 Templating。在代码中混入标记会导致一些让人讨厌的代码,这样的代码繁琐、单调,并且难以维护。像 Underscore 和 Handlebars 这样的库提供了一种清晰的方式,将展现描述从逻辑中分离出来。你可以自由选择使用什么库,但是我鼓励你多进行一些比较,找到最适合你的库。 ... 阅读全文
posted @ 2013-10-19 11:58
agile30353
阅读(85)
评论(0)
推荐(0)
摘要:
Mock.js模拟请求 & 模拟数据 阅读全文
posted @ 2013-10-19 11:52
agile30353
阅读(111)
评论(0)
推荐(0)
摘要:
jQuery 浏览器功能测试jQuery 对浏览器功能和 bug 的测试 阅读全文
posted @ 2013-10-19 11:50
agile30353
阅读(66)
评论(0)
推荐(0)
摘要:
原文:JavaScript Promises哦不,我不是在谈论使用了 Promise 后,JavaScript 就可以解决所有问题,这点连我自己也不相信。我想谈论的是一些 JavaScript 库中用到的 Promise 概念,包括 AngularJS, jQuery, Dojo 和 WinJS。Promise 是一种异步操作模式。异步操作的基本问题在于,当你开始一个异步操作后,你需要在操作完成时执行一些代码。异步代码是如此的普遍,并且大多数库也已经找到了一个解决方案:传入回调函数。并且每个库的实现有着共通之处。让我们看一个 jQuery 示例:在上面这个例子中,你可以看到 jQuery 使用 阅读全文
posted @ 2013-10-19 11:47
agile30353
阅读(147)
评论(0)
推荐(0)
摘要:
当使用 JavaScript 开发时,对异步操作的管理是必要的,然后它可能是凌乱的,特别是当它处理错误时。本系列涵盖了异步错误处理陷阱,并展示了 Promise 如何为异步操作提供友好的同步编程模型。 凌乱的异步编程 Async Programming is Messy。 用 Promises 简化异步编程 Simplifying Async with Promises。 用 Promises 控制异步错误处理 Mastering Async Error... 阅读全文
posted @ 2013-10-19 11:16
agile30353
阅读(110)
评论(0)
推荐(0)
摘要:
目录1. Try/catch/finally2. Try/catch2.1 传播成功状态2.2 处理错误2.3 添加一点语法糖3. 添加 finally3.1 总是会执行3.2 不要访问结果/错误3.3 不要改变结果3.4 剩下的两项特性4. 圆满了吗?4.1 更多语法糖5. 小结6. Try/finally7. 应用异步结构7.1 同步版本7.2 异步版本8. 整合9. 结语26 August 2013 正如我们在 凌乱的异步编程 一文中看到的,基于回调函数的异步代码很快变得混乱起来,并且大大降低了同步代码部分的质量,从而更容易导致错误。在 用 Promises 简化异步编程 一文中,我们引 阅读全文
posted @ 2013-10-19 11:15
agile30353
阅读(138)
评论(0)
推荐(0)
摘要:
Programming目录1. 增加行为1.1 修改所有的调用点1.2 修改源代码1.3 使用继承2. 分离关注点3. 引入 AOP3.1 AOP 应用示例4. AOP 实践04 September 2013 面向切面编程(AOP)是一种增强对象和方法的行为的技术,可以无侵入地增加功能。AOP 允许你从“外部”增加新行为,以及合并和修改既有的行为。虽然有多项技术可以用于增加或合并行为,例如继承、组合和代码,但是 AOP 在许多情况下被证明更具灵活性和低侵入性,可以是你技术工具箱的一项有益补充。让我们用一个简单的例子来看看它是如何工作的。假设我们的代码中含有下面的简单对象。function Th 阅读全文
posted @ 2013-10-19 11:13
agile30353
阅读(113)
评论(0)
推荐(0)
摘要:
目录1. Promises2. 典型的 XHR 示例3. 调用栈3.1 恢复调用-返回编程模型3.2 移除回调函数3.3 完成了吗?4. 对调用者如何?5. 别着急6. 怎么处理 try/catch/finally?27 August 2013 在 凌乱的异步编程 一文中,当为一组简单的函数调用引入回调函数时,我们看到的是一副尴尬的局面,即使是用这种方式来处理单个异步操作。快速回顾一下,看看我们最初的代码、使用回调函数时的凌乱结果,以及我们为了回到正途而想要解决的几个问题:我们再也不能使用简单的调用-返回编程模型。我们再也不能使用 try/catch/finally 来处理异常。我们必须为可能 阅读全文
posted @ 2013-10-19 11:13
agile30353
阅读(130)
评论(0)
推荐(0)
摘要:
目录1. 异常和 try/catch2. 面向异步3. 更多异步4. 如何处理 finally?5. 总结28 August 2013 1. 异常和 try/catch ⬆当执行可能失败的操作时,异常和 try/catch 是一种直观的操作。通过这种方式,我们可以从失败中恢复,也可以不捕获异常,或者明确地将异常再次抛出,让异常沿着调用栈向上传播到调用者。下面是一个简单的例子:function thisMightFail() { //... if(badThingsHappened) { throw new Error(...); } return theG... 阅读全文
posted @ 2013-10-19 11:12
agile30353
阅读(127)
评论(0)
推荐(0)
摘要:
目录1. 阻止扩展1.1 检查对象是否可扩展2. 封闭对象2.1 检查对象是否是封闭的3. 冻结对象3.1 检查对象是否是冻结的4. 参考文献02 September 2013 这篇博客旨在快速复习如何在 JavaScript 中保护对象。有 3 种程度的保护:最弱的是阻止扩展,稍强的是封闭对象,最强的是冻结对象。1. 阻止扩展 ⬆Object.preventExtensions(obj)使对象不能再添加属性。例如var obj = { foo: 'a' };Object.preventExtensions(obj);现在,在宽松模式下添加属性会静默失败:> obj.ba 阅读全文
posted @ 2013-10-19 11:11
agile30353
阅读(200)
评论(0)
推荐(0)
摘要:
目录1. API 设计:善恶之争2. 在 JavaScript 中,API 设计尤为重要3. 出色 JavaScript API 的秘诀4. 原则1:一致 & 协调5. 原则2:平衡6. 原则3:相衬7. 原则4:突出重点8. API 设计:不仅仅适用于库作者9. 比别人多做一点点9.1 三省吾身 谓予无愆9.2 上士闻道 勤而勉之10. 扩展阅读24 September 2013 原文:Secrets of Awesome JavaScript API Design, YouTube, PDF,其他翻译版本设计是一个具有普遍性的概念。正如牛津英语字典中 所定义的“拟定执行计划或执行方 阅读全文
posted @ 2013-10-19 11:09
agile30353
阅读(203)
评论(0)
推荐(0)
摘要:
开源软件正在逐步改变全球软件开发的格局,越来越多的企业开始使用开源软件,并反过来为开源项目贡献力量。 一提到开源,大部分人首先想到的是免费。但其实价格并不是开源软件唯一的优势,其他优势还包括:避免重复造轮子:对于企业来说,有现成的工具可用,节省了重新开发的成本;质量更高、更安全:由于源码开放,其他开发者可以参与共享,安全漏洞的发现和修复将会更加及时;自由、可定制:企业可以摆脱软件厂商的束缚,并可以根据自己的需求很方便地进行定制。下面就来看看全球著名的一些互联网企业使用了哪些开源项目。1. FacebookFacebook是全球第一大社交网站,拥有约9亿用户,同时也是世界排名第一的照片分享... 阅读全文
posted @ 2013-10-19 11:02
agile30353
阅读(126)
评论(0)
推荐(0)

浙公网安备 33010602011771号