模仿知乎界面的一个简单React demo

博客地址:http://blog.xieliqun.com/2016/11/04/react-zhihu/

这是一个模仿知乎界面的简单React demo。这个React demo能让你从零开始学习React,并逐渐掌握React。它包括了一个项目从零到项目完成的整个过程。

项目地址:https://github.com/tsrot/react-zhihu
项目预览:http://blog.xieliqun.com/react-zhihu/

项目运行

1
2
3
4
5
6
7
8
$ git clone https://github.com/tsrot/react-zhihu.git
$ cd react-zhihu

$ npm install

$ bower install

$ gulp server //用浏览器打开 localhost:5000

more >>

JS中的call、apply、bind方法详解

地址:http://blog.xieliqun.com/2016/08/10/call-apply-bind/

call()、apply()、bind()都是函数对象的一个方法,它们的作用都是改变函数的调用对象。它的使用极大的简化了代码的调用。

一、方法定义

call方法

语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
arg1 … argN为被调用方法的传参。

apply方法

语法:apply([thisObj[,argArray]])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明:apply的第一个参数thisObj和call方法的一样,第二个参数argArray为一个传参数组。thisObj如果未传,那么 Global 对象被用作 thisObj。

more >>

折腾:coding.net IDE node环境的安装

地址:http://blog.xieliqun.com/2016/08/27/online-IDE-node-enviroment/

作为一个码农,我们经常会有这样一个痛点:项目出现一个紧急bug,但自己又不在公司,怎办呢?虽然项目可能在git或者svn上,但clone下来安装测试环境也是个麻烦的是啊。于是,我们想到了在线IDE。作为一个前端开发者nodeJS环境是非常重要的,今天花了一个多小时折腾了下coding.net


IDE介绍

以前我一直在用nitrous.io的在线IDE,它是一个国外的在线IDE,访问有点慢,一旦网络不好就掉线,挺好的地方就是,它每个月有50个小时的免费使用。coding.net相当于是一个国内版的github,也是一个远程的git仓库,它有个在线IDE还挺好用的。有终端命令面板、支持vim和 Emacs的编辑器、在线运行环境、支持git(哎,帮别人做广告了,不知道coding能不能发我点稿费)。

下面进入主题。

安装nvm

nvm是nodejs版本管理工具。可以在多个nodejs版本中进行切换,降低了升级nodejs时的成本。

more >>

AJAX工作原理

地址:http://blog.xieliqun.com/2016/08/08/ajax/

AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。


一、ajax所包含的技术

大家都知道ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成。

  • 使用CSS和XHTML来表示。
  • 使用DOM模型来交互和动态显示。
  • 使用XMLHttpRequest来和服务器进行异步通信。
  • 使用javascript来绑定和调用。

    more >>

window.name跨域详解

地址:http://blog.xieliqun.com/2016/08/25/windowName-cross-domain/

window.name属性的神奇之处在于name 值在不同的页面(甚至不同域名)加载后依旧存在(如果没修改则值不会变化),并且可以支持非常长的 name 值(2MB)。并且window.name很方便。


用法介绍

name 在浏览器环境中是一个全局/window对象的属性,且当在 frame 中加载新页面(可以是不同域的)时,name 的属性值依旧保持不变(只要不重新赋值)。name属性的值虽然不变,但对它的访问还是受到同域原则,不允许访问。所以我们要把iframe重新定向回原域,这样name的值也没变,并且可以访问了。

在最顶层,name 属性是不安全的,对于所有后续页面,设置在 name 属性中的任何信息都是可获得的。然而 windowName 模块总是在一个 iframe 中加载资源,并且一旦获取到数据,或者当你在最顶层浏览了一个新页面,这个 iframe 将被销毁,所以其他页面永远访问不到 window.name 属性。

more >>