RN自定义native view中,使用setNativeProps

我们知道,可以使用setNativeProps直接修改原生view的属性,而不走react的渲染流程(依赖state/props改变),这在一些需要频繁修改view属性的场景(比如动画)可以避免大量的rerendering来提升性能。
官方文档: http://facebook.github.io/react-native/releases/0.32/docs/direct-manipulation.html
如何使用在官方文档已经很清楚了。

今天我们要讲的是,对于自定义的natvie view及其属性,如何使用setNativeProps

Read More

在React+Babel+Webpack环境中使用ESLint

ESLint是js中目前比较流行的插件化的静态代码检测工具。通过使用它可以保证高质量的代码,尽量减少和提早发现一些错误。使用eslint可以在工程中保证一致的代码风格,特别是当工程变得越来越大、越来越多的人参与进来时,需要加强一些最佳实践。

本文假设您已经有一个react+babel+webpack的起始工程,可以参考react-webapp-startkit

Read More

在Express中使用自定义视图模板引擎

众所周知,Express阵营中视图模板大多是Jade或则ejs,使用起来简单高效。既然是模板,那就需要规定好模板语言的格式,比如jade的缩进格式,ejs的<% %>

那么,什么时候需要自定义视图模板引擎呢?对了,就是当模板语言是自定义的时候。不幸,我们在项目中就遇到了这种需求,所以需要自己实现一个模板引擎。所幸,在Express中使用一个自定义视图引擎是非常简单。往下看。

Read More

The React Way 1 (译)

原文链接 https://blog.risingstack.com/the-react-way-getting-started-tutorial/
本篇文章主要涵盖了react的主要设计思想和概念,并不涉及具体太多的语法,但个人觉得学习新的技术、框架时,其设计思想和概念往往比语法更需要深入了解和思考。

占坑, 未完待续。。。

现在,React.js正在高速发展,同时很多有趣的东西不断的问世。我的朋友和同事不断的询问我关于如何开始使用React,以及如何用React的方式思考。

img

上图是 React 在编程领域的google搜索趋势。React最初发布是再2013年5月29号,版本号是v0.3.0

然而,React并不是一个框架。是一些概念、类库和原则使其成为一个快速、简洁和优美的方式来开发客户端和服务器端的app。

Read More

js中的事件代理(event delegation)

JavaScript世界中的一个很热门的方法论就是事件代理,它可以使我们避免向特定的元素节点绑定事件监听,而是绑定在了一个父级节点。

这个事件监听回对冒泡上来的事件进行分析,找到所匹配的子元素。
这个概念其实很简单,但是还有很多人不太清楚事件代理是如何工作的。
本文将简要解释事件代理是如何工作的,同时提供一个基本的事件代理的实现。

Read More

(#17) nodejs中判断模块的被调用方式

在node中,我们可以判断自己的代码是通过下面哪种方式调用的:

  • 通过node直接调用的方式 node something.js
  • 通过require调用的方式 require('./something.js')

这在我们想要针对不同的情况做不同的处理时很有用,比如下面的情况。

1
2
3
4
5
6
7
8
9
if (!module.parent) {
// ran with `node something.js`
app.listen(8088, function() {
console.log('app listening on port 8088');
})
} else {
// used with `require('/.something.js')`
module.exports = app;
}

更多信息,请参考module的文档。


module的几个属性:

属性名 类型 注释
module.filename String module的完整文件名
module.id String module的唯一标识,一般来说就是module的完整文件名
module.loaded Boolean 标识module是否加载完成
module.parent Object 第一次加载本module的模块

本文是js tips系列,翻译自 https://github.com/loverajoel/jstips

(#16) 向回调函数中传入参数

默认来说,我们不能直接向回调函数中传入参数,比如:

1
2
3
4
5
function callback() {
console.log('Hi human');
}
document.getElementById('someelem').addEventListener('click', callback);

但是,可以使用Javascript中的闭包作用域来向回调函数中传入参数,向下面这样:

1
2
3
4
5
6
7
8
function callback(a, b) {
return function() {
console.log('sum = ', (a+b));
}
}
var x = 1, y = 2;
document.getElementById('someelem').addEventListener('click', callback(x, y));

Read More

(#15) 利用IndexOf判断字符串是否包含时,更简单的判断使用方式

JavaScript中默认是没有判断字符串是否被包含的contains方法。当我们需要检测一个子字符串是否被另外一个字符串包含时,通常使用下面的方法:

1
2
3
4
5
6
7
8
9
var someText = 'javascript rules';
if (someText.indexOf('javascript') !== -1) {
// 包含
}
// 或者
if (someText.indexOf('javascript') >= 0) {
// 包含
}

但是我们看一下Express中的一些代码片段:

Read More