<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[iVan]]></title><description><![CDATA[周利杰-ivan]]></description><link>https://blog.youkuaiyun.com/jiestyle21</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jiestyle21]]></copyright><item><title><![CDATA[React+Nodejs+Socket+Webpack版你画我猜]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/51898849</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/51898849</guid><author>jiestyle21</author><pubDate>Wed, 13 Jul 2016 15:57:31 +0800</pubDate><description><![CDATA[React版我画你猜之前有看到过一个Vue版本的 我画你猜 然后用 React 也做了一个。技术栈：React + Nodejs + Socket.io + Webpack + Less先上传送门Github，你要是敢给我Star!!!我就敢接受!!有啥问题可以在下面留言或者github issue一起进步主要注意下面几点：1.Socket.io在express中的问题具体可以参考官方，Socket]]></description><category></category></item><item><title><![CDATA[nodejs之Express + Passport实现登陆认证]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/51839465</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/51839465</guid><author>jiestyle21</author><pubDate>Wed, 06 Jul 2016 15:37:38 +0800</pubDate><description><![CDATA[Express + Passport实现登陆认证最近想做一个XX，需要用到 登录认证  权限管理 等等。然后就边学边写出了一个demo。之后会把要用到的这几块，全部写出来。记得给个star[坏笑]。Demo点这里通过 Passport 去实现登录模块，express-flash 实现页面通知。 
里面写了很多的注释，有需要的同学可以看看Installationgit clone https://gi]]></description><category></category></item><item><title><![CDATA[Mongodb忘记密码]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/51819610</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/51819610</guid><author>jiestyle21</author><pubDate>Mon, 04 Jul 2016 11:21:11 +0800</pubDate><description><![CDATA[Mongodb装在linux上，一次配置之后，很少再去看。突然有天需要做改动了，蛋疼的发现密码忘记了，后来查到解决方案也不麻烦。如下：//首先看一下mongo的配置文件在哪
ps -aux|grep mongo
//编辑conf文件
//找到auth=true,将其注释掉
vim /etc/mongod.conf
//重启mongodb，使上面的改动生效
service mongod restart]]></description><category></category></item><item><title><![CDATA[nginx反向代理部署nodejs]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/51393080</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/51393080</guid><author>jiestyle21</author><pubDate>Fri, 13 May 2016 10:21:21 +0800</pubDate><description><![CDATA[node开发阶段，一般都会用http 模块启一个本地服务器，方便调试。 
它大概是这样的：var http = require("http");
var server = http.createServer();
server.listen(8888);那么问题来了，我的应用都已经成型，该如何部署到vps上？总不能还用http://10.88.77.66:8888 来访问吧？是的文章的标题就是解决方]]></description><category></category></item><item><title><![CDATA[js柯里化]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/51305704</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/51305704</guid><author>jiestyle21</author><pubDate>Tue, 03 May 2016 16:26:42 +0800</pubDate><description><![CDATA[今天一个不小心在书上又看到了函数柯里化 温故而知新，也顺便再记一笔。这里不介绍什么是柯里化函数。如果不懂的请自行Google。但是呢，我会从js设计模式这本书中，取一段柯里化代码片断，加上详细的注释。如果Google柯里化后，还是不懂的同学，可以读读这段注释        var currying = function(fn) {
            //这里保存每次的开销]]></description><category></category></item><item><title><![CDATA[js高阶函数]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/51302684</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/51302684</guid><author>jiestyle21</author><pubDate>Tue, 03 May 2016 10:40:25 +0800</pubDate><description><![CDATA[js高阶函数在介绍什么是高阶函数之前，先看一下高阶函数的两个特点，了解这两个特点了，也就知道什么是高阶函数了（是不是废话- -！）
函数可以作为参数被传递
函数可以作为返回值输出
现在知道什么是高阶函数了吗？不知道也没问题，接着往下看。js中的函数显然满足高阶函数的条件，在实际开发中，无论是将函数当作参数 
传递，还是让函数的执行结果返回另外一个函数，这两种情形都有很多应用场景。我们围绕这两个特点展]]></description><category></category></item><item><title><![CDATA[nodejs利用nodemailer发送邮件]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/51159538</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/51159538</guid><author>jiestyle21</author><pubDate>Fri, 15 Apr 2016 10:26:00 +0800</pubDate><description><![CDATA[nodejs用nodemailer发送邮件安装nodemailernpm install nodemailer --saveapp.jsvar nodemailer = require('nodemailer');
//配置邮件
var transporter = nodemailer.createTransport('SMTP',{
    host: "smtp.163.com",
    se]]></description><category></category></item><item><title><![CDATA[redux+react+webpack+热加载+兼容IE8（持续更新）]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/50836988</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/50836988</guid><author>jiestyle21</author><pubDate>Wed, 09 Mar 2016 17:18:10 +0800</pubDate><description><![CDATA[redux+react+热加载+支持IE8动机项目需要支持到IE8，并且我是深度懒癌患者，于是选择了高置带有热加载 功能的（兼容了IE）环境。Github入口在下面。
  花了大半天搭了一个redux+react+hot-middleware+supportIE8的环境。也分享给刚刚接触react的朋友。如果喜欢请点star，嘿嘿
使用安装依赖
  npm install
运行
  npm star]]></description><category></category></item><item><title><![CDATA[Event]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/50771016</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/50771016</guid><author>jiestyle21</author><pubDate>Tue, 01 Mar 2016 11:08:19 +0800</pubDate><description><![CDATA[/**
 * @example
 *     1, var a = new Event();
 *         a.on('login', function(data){});
 *         a.trigger('login').trigger('login', {});
 *         a.off('login');
 *     2, var b = new Event(),c]]></description><category></category></item><item><title><![CDATA[angularjs ng-repeat]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/50401428</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/50401428</guid><author>jiestyle21</author><pubDate>Fri, 25 Dec 2015 10:06:09 +0800</pubDate><description><![CDATA[angularjs笔记之ng-repeatng-repeat它本身是个控制指令外，它还提供了下面4个变量 
-$index 当前索引元素 
-$first 头元素 
-$middle 非头非尾元素 
-$last 尾元素  <div ng-controller="someController">
    <a ng-repeat="item in items">index->{{ $index }}]]></description><category></category></item><item><title><![CDATA[angularjs+requirejs按需加载]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/50338015</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/50338015</guid><author>jiestyle21</author><pubDate>Thu, 17 Dec 2015 10:11:35 +0800</pubDate><description><![CDATA[欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来，用它写博客，将会带来全新的体验哦：
Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和图片上传
LaTex数学公式
UML序列图和流程图
离线写博客
导入导出Markdown文件
丰富的快捷键
快捷键
加粗    Ctrl + B 
斜体    Ctrl + I 
引用    Ctrl]]></description><category></category></item><item><title><![CDATA[javascript addEventListener和attachEvent 事件绑定]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7656258</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7656258</guid><author>jiestyle21</author><pubDate>Tue, 12 Jun 2012 15:39:59 +0800</pubDate><description><![CDATA[对于IE的attachEvent方法可能大家都比较熟，现在说说FireFox的addEventListener的用法。

addEventListener的参数一共有三个，语法为：

element.addEventListener(type,listener,useCapture)

下面是详解

其中element是要绑定函数的对象。type是事件名称，要注意的是"onclic]]></description><category></category></item><item><title><![CDATA[javascript apply and call方法的区别]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7655614</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7655614</guid><author>jiestyle21</author><pubDate>Tue, 12 Jun 2012 12:53:55 +0800</pubDate><description><![CDATA[ref：http://www.popo4j.com/article/the-differences-of-apply-and-call.html

　　如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语言过程中遇到这种感觉,那么就从现在形始,请放]]></description><category></category></item><item><title><![CDATA[querySelector & querySelectorAll --- 像CSS一样选择DOM]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7653148</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7653148</guid><author>jiestyle21</author><pubDate>Mon, 11 Jun 2012 16:43:45 +0800</pubDate><description><![CDATA[在 传统的 JavaScript 开发中，查找 DOM 往往是开发人员遇到的第一个头疼的问题，原生的 JavaScript 所提供的 DOM 选择方 法并不多，仅仅局限于通过 tag, name, id 等方式来查找，这显然是远远不够的，如果想要进行更为精确的选择不得不使用看起来非常繁琐的正则 表达式，或者使用某个库。事实上，现在所有的浏览器厂商都提供了 querySelector 和 query]]></description><category></category></item><item><title><![CDATA[javascript操作select]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7652317</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7652317</guid><author>jiestyle21</author><pubDate>Mon, 11 Jun 2012 14:05:41 +0800</pubDate><description><![CDATA[前端的朋友可能会经常碰到js操作表单的*,那么我们今天先来演示select的操作.


一、基础理解：

var e = document.getElementByIdx_x("selectId");

e.options = new Option("文本", "值");    //创建一个option对象，即在标签中创建一个或多个文本。options是一个数组，里面可存放多个文本标]]></description><category></category></item><item><title><![CDATA[Javascript 高效率http页面优化法则之DOM操作]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7651911</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7651911</guid><author>jiestyle21</author><pubDate>Mon, 11 Jun 2012 11:40:33 +0800</pubDate><description><![CDATA[1. 批量增加Dom

尽量使用修改innerHTML的方式而不是用appendChild的方式;
 因为使用innerHTML开销更小,速度更快,同时也更加内存安全.

有一点需要注意的是,用innerHTML方式添加时,一定不要在循环中使用
 innerHTML += 的方式添加,这样反而会使速度减慢; 而是应该中间用array缓存起来,循环结束后调用
 xx.innerHTML]]></description><category></category></item><item><title><![CDATA[Ajax实例及原理]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7642034</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7642034</guid><author>jiestyle21</author><pubDate>Thu, 07 Jun 2012 15:17:49 +0800</pubDate><description><![CDATA[$.ajax({

type: "get",

url: "http://www.cnblogs.com/rss",

beforeSend: function(XMLHttpRequest){

//ShowLoading();
},
success: function(data, textStatus){

$(".ajax.ajaxResult").html("");

$("item",d]]></description><category></category></item><item><title><![CDATA[Javascript匿名函数]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7637791</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7637791</guid><author>jiestyle21</author><pubDate>Wed, 06 Jun 2012 13:25:48 +0800</pubDate><description><![CDATA[<!--
*
	{background:black;
	font-size:14px}
-->





Javascript的匿名函数


一、什么是匿名函数？

在Javascript定义一个函数一般有如下三种方式：


函数关键字(function)语句：
function fnMethodName(x){alert(x);}

函数字面量(Func]]></description><category></category></item><item><title><![CDATA[腾讯WEB前端面试题]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7630804</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7630804</guid><author>jiestyle21</author><pubDate>Mon, 04 Jun 2012 15:16:09 +0800</pubDate><description><![CDATA[有一组数字，从1到n，从中减少了3个数，顺序也被打乱，放在一个n-3的数组里


请找出丢失的数字，最好能有程序，最好算法比较快
假设n=10000
- ->我这里是算法的一种。只是mark一下。传送门

// 生成命题数组

        function supplyRandomArray(){
            var arr = [], n = 100;]]></description><category></category></item><item><title><![CDATA[javascript中的观察者模式实现]]></title><link>https://blog.youkuaiyun.com/jiestyle21/article/details/7624305</link><guid>https://blog.youkuaiyun.com/jiestyle21/article/details/7624305</guid><author>jiestyle21</author><pubDate>Fri, 01 Jun 2012 18:07:52 +0800</pubDate><description><![CDATA[比如有这样一个场景,一款游戏玩家在等级1~10之间可以领取3000点经验,等级11级以上可以领取2000点经验.


我们可以用观察者模式来实现这个需求.


这里玩家就是一个观察者,或者说是一个订阅者,游戏系统就是一个被观察者,或者说一个发送者


下面用代码来实现:

// 经验系统
var Experience = function(param) {
    this.n]]></description><category></category></item></channel></rss>