<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[timeww]]></title><description><![CDATA[新博客地址http://wwff.github.io/]]></description><link>https://blog.youkuaiyun.com/qq_21773607</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_21773607]]></copyright><item><title><![CDATA[AngularJS 中的Promise --- $q服务详解]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/50894853</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/50894853</guid><author>qq_21773607</author><pubDate>Tue, 15 Mar 2016 11:22:04 +0800</pubDate><description><![CDATA[阅读目录 
什么是Promise 
q服务先说说什么是Promise，什么是q服务  
先说说什么是Promise，什么是q吧。Promise是一种异步处理模式，有很多的实现方式，比如著名的Kris Kwal’s Q还有JQuery的Deffered。回到顶部 
什么是Promise以前了解过Ajax的都能体会到回调的痛苦，同步的代码很容易调试，但是异步回调的代码，会让开发者陷入泥潭，无法跟踪，比如]]></description><category></category></item><item><title><![CDATA[Promise学习记录（一）]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/50894684</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/50894684</guid><author>qq_21773607</author><pubDate>Tue, 15 Mar 2016 10:48:03 +0800</pubDate><description><![CDATA[前言 
在网站开发中，会经常处理各种事件，如mouseclick/mouseover/click等等。在DOM 0事件模型，采取的事件监听方式是ele.onclick=handler，这会导致一个问题，如果想用hanlder2来监听click，则hanlder就会被覆盖，不会执行了，因为一次只能安排一个监听函数。但在DOM 2事件模型中，使用DOM方法中的addEventListener来添加事件监]]></description><category></category></item><item><title><![CDATA[原生js实现ajax]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/50738681</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/50738681</guid><author>qq_21773607</author><pubDate>Thu, 25 Feb 2016 16:23:48 +0800</pubDate><description><![CDATA[function ajax(url,fns,fnf){
    /*if(window.XMLHttpRequest){
            var oAjax=new XMLHttpRequest();
            }
            else
            {
                var oAjax=new ActiveXObject("Micros]]></description><category></category></item><item><title><![CDATA[Javascript异步编程的4种方法]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/50378291</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/50378291</guid><author>qq_21773607</author><pubDate>Tue, 22 Dec 2015 10:41:29 +0800</pubDate><description><![CDATA[你可能知道，Javascript语言的执行环境是"单线程"（single thread）。

所谓"单线程"，就是指一次只能完成一件任务。如果有多个任务，就必须排队，前面一个任务完成，再执行后面一个任务，以此类推。



这种模式的好处是实现起来比较简单，执行环境相对单纯；坏处是只要有一个任务耗时很长，后面的任务都必须排队等着，会拖延整个程序的执行。常见的浏览器无响应（假死），往往就是]]></description><category></category></item><item><title><![CDATA[《精通CSS》阅读备忘]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/50087969</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/50087969</guid><author>qq_21773607</author><pubDate>Sat, 28 Nov 2015 22:08:12 +0800</pubDate><description><![CDATA[选择器的层叠和特殊性
对于同一个元素，可能会有多个规则，为了解决规则之间的冲突，CSS 会利用 层叠 给每个规则分配一个重要度：
1、标有 !important 的用户样式

2、标有 !important 的作者样式

3、作者样式

4、用户样式

5、浏览器/用户代理应用的样式
层叠优先级依次降低，优先级相同的规则，后定义的规则优先。为了计算规则的特殊性，可以给每种选择]]></description><category></category></item><item><title><![CDATA[关于window.onload()的加载问题]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49949637</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49949637</guid><author>qq_21773607</author><pubDate>Fri, 20 Nov 2015 17:22:01 +0800</pubDate><description><![CDATA[<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title></head>
<body>
    <div id="links" onmouseover = "change()">svdr</div></body>
<script>
    window.onload =]]></description><category></category></item><item><title><![CDATA[JavaScript 的性能优化：加载和执行]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49948769</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49948769</guid><author>qq_21773607</author><pubDate>Fri, 20 Nov 2015 16:44:01 +0800</pubDate><description><![CDATA[随着 Web2.0 技术的不断推广，越来越多的应用使用 JavaScript 技术在客户端进行处理，从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题。而这个问题又因 JavaScript 的阻塞特性变的复杂，也就是说当浏览器在执行 JavaScript 代码时，不能同时做其他任何事情。本文详细介绍了如何正确的加载和执行
 JavaScript 代码，从而提高其在]]></description><category></category></item><item><title><![CDATA[2015年需要了解的前端框架和语言]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49834385</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49834385</guid><author>qq_21773607</author><pubDate>Sat, 14 Nov 2015 11:12:28 +0800</pubDate><description><![CDATA[2015年需要了解的前端框架和语言

语言/平台




Node.js第一，PHP第二，JavaScript第三。因为Node.js的社区很多，所以这个结果你也不用太意外。如果你知道JavaScript,你已经一只脚踏进了用Node.js来构建Web APP的可能。

框架



AngularJS处于框架的领导地位。大量的公司和企业已经采用Angular,这就要求开发]]></description><category></category></item><item><title><![CDATA[前端构建工具gulp入门教程]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49815089</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49815089</guid><author>qq_21773607</author><pubDate>Fri, 13 Nov 2015 11:12:54 +0800</pubDate><description><![CDATA[本文假设你之前没有用过任何任务脚本（task runner）和命令行工具，一步步教你上手Gulp。不要怕，它其实很简单，我会分为五步向你介绍gulp并帮助你完成一些惊人的事情。那就直接开始吧。

第一步：安装Node

首先，最基本也最重要的是，我们需要搭建node环境。访问http://nodejs.org，然后点击大大的绿色的install按钮，下载完成后直接运行程序，就一切准备就绪。]]></description><category></category></item><item><title><![CDATA[响应式布局这件小事]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49813893</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49813893</guid><author>qq_21773607</author><pubDate>Fri, 13 Nov 2015 10:12:08 +0800</pubDate><description><![CDATA[讲到响应式布局，相信大家都有一定的了解，响应式布局是今年很流行的一个设计理念，随着移动互联网的盛行，为解决如今各式各样的浏览器分辨率以及不同移动设备的显示效果，设计师提出了响应式布局的设计方案。今天就和大家来讲讲响应式布局这件小事，包含什么是响应式布局、响应式布局的优点和缺点以及响应式布局该怎么设计（通过CSS3
 Media Query实现响应布局）。



一、什么是响应式布局?
]]></description><category></category></item><item><title><![CDATA[Javascript模块化编程（三）：require.js的用法]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49735879</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49735879</guid><author>qq_21773607</author><pubDate>Mon, 09 Nov 2015 10:53:00 +0800</pubDate><description><![CDATA[这个系列的第一部分和第二部分，介绍了Javascript模块原型和理论概念，今天介绍如何将它们用于实战。

我采用的是一个非常流行的库require.js。



一、为什么要用require.js？

最早的时候，所有Javascript代码都写在一个文件里面，只要加载这一个文件就够了。后来，代码越来越多，一个文件不够了，必须分成多个文件，依次加载。下面的网页代码，相信很多人都见]]></description><category></category></item><item><title><![CDATA[Javascript模块化编程（二）：AMD规范]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49735837</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49735837</guid><author>qq_21773607</author><pubDate>Mon, 09 Nov 2015 10:50:50 +0800</pubDate><description><![CDATA[这个系列的第一部分介绍了Javascript模块的基本写法，今天介绍如何规范地使用模块。



（接上文）

七、模块的规范

先想一想，为什么模块很重要？

因为有了模块，我们就可以更方便地使用别人的代码，想要什么功能，就加载什么模块。

但是，这样做有一个前提，那就是大家必须以同样的方式编写模块，否则你有你的写法，我有我的写法，岂不是乱了套！考虑到Javascript模]]></description><category></category></item><item><title><![CDATA[Javascript模块化编程（一）：模块的写法]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49735757</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49735757</guid><author>qq_21773607</author><pubDate>Mon, 09 Nov 2015 10:45:54 +0800</pubDate><description><![CDATA[随着网站逐渐变成"互联网应用程序"，嵌入网页的Javascript代码越来越庞大，越来越复杂。







网页越来越像桌面程序，需要一个团队分工协作、进度管理、单元测试等等......开发者不得不使用软件工程的方法，管理网页的业务逻辑。



Javascript模块化编程，已经成为一个迫切的需求。理想情况下，开发者只需要实现核心的业务逻辑，其他都可以加载别人已经写好的]]></description><category></category></item><item><title><![CDATA[SASS用法指南]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49516801</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49516801</guid><author>qq_21773607</author><pubDate>Fri, 30 Oct 2015 21:20:09 +0800</pubDate><description><![CDATA[学过CSS的人都知道，它不是一种编程语言。

你可以用它开发网页样式，但是没法用它编程。也就是说，CSS基本上是设计师的工具，不是程序员的工具。在程序员眼里，CSS是一件很麻烦的东西。它没有变量，也没有条件语句，只是一行行单纯的描述，写起来相当费事。



很自然地，有人就开始为CSS加入编程元素，这被叫做"CSS预处理器"（css preprocessor）。它的基本思想是，用一种专]]></description><category></category></item><item><title><![CDATA[javascript性能优化]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49514211</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49514211</guid><author>qq_21773607</author><pubDate>Fri, 30 Oct 2015 17:17:40 +0800</pubDate><description><![CDATA[javascript性能优化
一、DOM
1、减少访问DOM的次数，把运算量尽量留在ECMAscript端处理（因为访问dom的次数越多，代码运行速度越慢）；
2、HTML集合
它是包含了dom节点引用的类数组对象（没有数组对象特有的方法：eg：push()、slice()等，但提供了类似数组的length属性，同时也能以数字索引的方式访问列表中元素）
 document.getElem]]></description><category></category></item><item><title><![CDATA[提升JavaScript递归效率：Memoization技术详解]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49513327</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49513327</guid><author>qq_21773607</author><pubDate>Fri, 30 Oct 2015 16:22:34 +0800</pubDate><description><![CDATA[递归是拖慢脚本运行速度的大敌之一，太多的递归会让浏览器变得越来越慢直到死掉或者莫名其妙的突然自动退出。这里我们可以通过memoization技术来替代函数中太多的递归调用，提升JavaScript效率。
递归是拖慢脚本运行速度的大敌之一。太多的递归会让浏览器变得越来越慢直到死掉或者莫名其妙的突然自动退出，所以我们一定要解决在JavaScript中出现的这一系列性能问题。
我们可以通过memoi]]></description><category></category></item><item><title><![CDATA[浏览器的重绘与重排]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49511003</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49511003</guid><author>qq_21773607</author><pubDate>Fri, 30 Oct 2015 14:11:59 +0800</pubDate><description><![CDATA[在项目的交互或视觉评审中，前端同学常常会对一些交互效果质疑，提出这样做不好那样做不好。主要原因是这些效果通常会产生一系列的浏览器重绘(redraw)和重排(reflow)，需要付出高昂的性能代价。那么，什么是浏览器的重绘和重排呢？二者何时发生以及如何权衡？如何在具体的开发过程中将重绘和重排引发的性能问题考虑进去？本文期待可以部分解释以上三个问题。
　　浏览器从下载文档到显示页面的过程是个复杂的过]]></description><category></category></item><item><title><![CDATA[seajs学习（7）----文本插件]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49329481</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49329481</guid><author>qq_21773607</author><pubDate>Thu, 22 Oct 2015 09:52:32 +0800</pubDate><description><![CDATA[Sea.js 支持丰富的插件，可用来实现各种功能。下面是文件插件的使用说明。

加载模板字符串
在 JavaScript 中嵌入 HTML 模板很不方便，特别是当模板内容有多行时。有了 Sea.js, 一切迎刃而解。
首先，使用 seajs.config 配置文本插件：

seajs.config({
  plugins: ['text']
});


接下来，就可以直接通过 re]]></description><category></category></item><item><title><![CDATA[seajs学习（6）----配置]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49329459</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49329459</guid><author>qq_21773607</author><pubDate>Thu, 22 Oct 2015 09:50:55 +0800</pubDate><description><![CDATA[可以对 Sea.js 进行配置，让开发、调试更方便。
seajs.config seajs.config(options)

用来进行配置的方法。

seajs.config({

// 别名配置
alias: {
'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe',
'json': 'gallery/json/1.0.2/json',]]></description><category></category></item><item><title><![CDATA[seajs学些（5）----模块的加载启动]]></title><link>https://blog.youkuaiyun.com/qq_21773607/article/details/49329441</link><guid>https://blog.youkuaiyun.com/qq_21773607/article/details/49329441</guid><author>qq_21773607</author><pubDate>Thu, 22 Oct 2015 09:49:35 +0800</pubDate><description><![CDATA[seajs学些（5）----模块的加载启动

Sea.js 是一个模块加载器，模块加载器需要实现两个基本功能：


实现模块定义规范，这是模块系统的基础。模块系统的启动与运行。
模块定义规范的实现
这就是 define，require，exports，module 的实现。具体实现细节，有兴趣的可以看 Sea.js 的源码：seajs/src。可以按照Gruntfile.js
 中]]></description><category></category></item></channel></rss>