2016-08-16 Lim Geng
碎碎念 近日王宝强(本来是想用‘宝宝’来称呼,但是我为人高冷,还是用原名吧)的离婚闹得沸沸扬扬,热度是不是已经远远超过了里约奥运。无下限的网友各种恶搞,从‘潘金莲照顾武大郎’到‘宝宝捉奸’,只说一句:万能的网友捉奸视频有没有?刚看到王宝强的微博,只想说:唉,下贱的小娼妇,但是细想与我何干?毕竟我不知道谁是谁非,这里不做评判。 导语 ReactNative也出了一年多了,facebook还在忙碌的修复各种问题,截止目前github上还有900个issue未解决。对于我而言对RN还是寄托了很大的期。 ReactNative是基于状态的组件化框架,随着RN项目变大,state变得不可预测,不可预测的意思是state到处修改和使用 继续阅读 »
2016-07-01 Lim Geng
导语 从大学到现在我有多个平台的博客:新浪, CSDN, 简书。博客对于我来说还是生活必备的,主要有两方面的作用:1、记录技术点;2、技术探讨。 当然对于其他人博客还可以记录生活的点点滴滴,写日记等,其实博客就是电子笔记本,纸上可以写的都可以写到博客里;但是博客是公开的,是让博主有分享精神, 分享你的知识,分享你的快乐与忧伤。 第三方的博客很方便,但是有自己的博客不是更酷。个人博客与第三方博客的最大不同就是个人博客有更大的灵活性,随意设置样式,更换主题; 可以把自己的简历写到博客里,省去了打印的烦恼,方便更新,更方便其他人(比如面试官)查看。 选择 host gator 刚开始是看到The Ultimate Guide T 继续阅读 »
2016-02-23 Lim Geng
放一张毫无意义的图。 前言 在github上有很多框架都是用的ES5,对于接触ES5比较多的人,如果想写ES6语法还是要有个参考, 这里用ES5/ES6实现了两段功能完全相同的代码,但是不保证可以正常运行,主要是把区别表现出来。 ES5 ```js // ES 5 var React = require("react-native"); var { Image, Text, } = React; var MyComponent = React.createClasj ss({ getDefaultProps: function() { return { prop1: value1, 继续阅读 »
2016-01-13 Lim Geng
此博客将记录了我学习RN过程中很有价值的内容,源码可以参考ReactNativeLeaning(ES6版),源码最后附了一个sinaWebBo项目,看着还不错^_^。顺便支持一下react-native-image-browser吧。 1、Hello World! react-native init AwesomeProject 卡住不动:解决React Native初始化项目速度很慢的问题; 2、选个好用的编辑器 atom+nuclide的详细使用方法 这个编辑器很好用,有察看dom结构和debugger功能,不过如果你喜欢别的编辑器也可以用; 3、学习的两个重点,布局和语言 如果布局不会请参考阮一峰的Flex 布局教 继续阅读 »
2016-01-01 Lim Geng
前言 在此之前看了一下gulp相关教程,这里有一个还不错:Gulp for Beginners, 推荐给大家看看。 通过本教程你会了解到: 如何安装webpack; 如何使用webpack; 如何使用loaders; 如何使用开发服务器; 安装webpack 你需要已经安装安装node.js. bash $ npm install webpack -g 这使得webpack命令可以使用 设置编译器(Compilation) 以一个空文件夹作为开始. 创建这些文件: add entry.js js document.write("It works"); add index.html html 继续阅读 »
2015-10-01 Lim Geng
导语: 性能对于程序来说至关重要。本文主要内容是对文章的翻译,再加上对平常遇到的优化tip,从Content、Server、Cookie、CSS、Javascript、Images、Mobile几方面做了个简单的阐述。对于看到标题就知道什么意思的就不翻译了,^_^ 这里有篇文章,介绍的点很多:点击进入 Content 1、减少Http请求 终端用户80%的响应时间花费在前端。这些时间大多数是与下载所有组件息息相关的,比如图片,样式表,脚本等。减少组件数量也就是减少渲染页面时需要的Http请求数。这个是加快页面速度的关键。 减少组件数量的一种方式是简化页面设计。但是又没有一种方式可以创建更丰富的内容的同时也能获得更快的响 继续阅读 »
2015-08-12 Lim Geng
递归 ```js function deepCopy(obj) { if (!obj || typeof obj !== 'object') return obj; var target = isPlainObject(obj) ? {} : [], property, val; for (var key in obj) { val = obj[key]; // 防止循环引用 if (val === obj) continue; if (Array.isArray(val) || isPlainObject(val)) { target[key] = deepCo 继续阅读 »
2015-08-09 Lim Geng
通过绑定规则来确定this的绑定对象。 默认绑定 默认绑定规则看作是无法应用其他规则时的规则, 独立函数调用是最常用的函数调用方式。比如: ``` function foo() { console.log( this.a ); } var a = 2; foo(); // 2 ``` 此时foo在调用的时候是默认绑定,因为没有指定上下文,所以默认上下文 是window,而var a = 2;这句意思是给window添加了一个a属性,并赋值为2, 所以会打印2。 如果使用严格模式(strict mode),那么全局对象将无法使用默认绑定,因为 this会绑定到undefined. 隐式绑定 另一条需要考虑的规则是调 继续阅读 »
2015-08-01 Lim Geng
分组 非捕获分组 在正则表达式中遇到小括号就可以认为是一个分组,比如/(a)bcda\1/,(a)就是一个分组,\1代表第一个分组。这种分组可以成为 捕获分组。 var reg = /(a)bcd\1/ console.log(reg.test('abcdef')) // false console.log(reg.test('abcdaef')) // true \1是个占位符,意思是这里的内容匹配的和第一个分组的一样,比如/(xyz)bcd\1/实际上就等同于/(xyz)bcdxyz/, 与其相对的就是非捕获分组,比如/(?:a)bcda/,(?:a)就是非捕获分组,不能通过\1引用 var reg = /(?:a 继续阅读 »
2015-07-06 Lim Geng
如何正确实现addEvent? 分析一下传统addEvent的实现: // 传统写法大致上是这样 // 作者:Scott Andrew function addEvent(obj, type, fn, useCapture) { if (obj.addEventListener) { obj.addEventListener(type, fn, useCapture); return true } else if (obj.attachEvent) { var r = obj.attachEvent("on"+type, fn); return r; } else { ale 继续阅读 »