React React.js 构建的 Ruby China mobile Web App

vincent178 · 2016年04月27日 · 最后由 vincent178 回复于 2016年05月26日 · 9279 次阅读

我不说话,我先上图

社区页面

话题详细

话题回复

Dev Stack

因为学习 react 还有 redux 写的这个项目,所以这个项目肯定有这两个库,用 react-router 处理 url 的事情,将来准备用 react-motion 做 animation。 开发中用的是 ES6 的 js,webpack 打包所有的资源,css 用到了 postcss,都 超!级! 好!用!

目的

目的是做一个类似 twitter 样子的 ruby china mobile web 客户端,在这个过程中能够尝试各种新的前端技术。

进展

开发进展移步 github: https://github.com/vincent178/gt,上面有开发的进展 生产环境直接点击:http://vincent178.github.io

心得

学习到很多移动端浏览器的处理: 比如 ios 没有 onScroll 事件,要用 onTouch 来模拟

handleScroll() {

  console.log("OnScroll");
  if (this.getScrollXY()[1] >=  this.getDocHeight() - window.innerHeight - 100) {
    console.log("[NativeScroll] this.props.dispatch(this.props.scrollFunc())");
    this.props.dispatch(this.props.scrollFunc());
  }
}

handleTouchMove(e) {
  this.handleScroll(e);
}

render() {
  return (
    <div onTouchMove={this.handleTouchMove.bind(this)} onScroll={this.handleScroll.bind(this)}>
      {this.props.children}
    </div>
  );

ios 的 click 会有一个延迟(主要是为了判断 tap 还是 double tap) react 有个库可以去除这个延迟,用法也很简单

injectTapEventPlugin();

还有对于我开发 redux 影响很深的一篇文章,对于写 redux 有种 一拍脑袋,嘿,就该这样的感觉 :) https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.5yz7kvug0


关键来了,欢迎大家使用http://vincent178.github.io, 围观https://github.com/vincent178/gt 和 star

没有后端不能认证。。

所以可以直接放到 github 上演示?为啥?

#3 楼 @pynix 其实 oauth2 是支持这种纯 spa 的项目的认证的,用 implicit flow (还是理论上的,我还没真正试过 ruby-china 现在还不支持 implicit flow,准备提交一个 pr 开启这个功能 😄

#4 楼 @cqcn1991 纯客户端项目啊,就几个静态文件,扔到 github page 上面就能跑了

#5 楼 @vincent178 implicit flow 貌似都没人支持。。。。。。据说不安全。

#7 楼 @ayaseangle 还是有一些公司支持的(比如 google, 也有好多 blog 介绍怎么让 implicit flow 更安全。 如果实在不能开,我就只能自己搭一个 server 来处理 oauth 请求了 😢

#8 楼 @vincent178 可以考虑用 node 做服务端搞 oAuth, 顺带着把直接访问非 index.html 的 url 的服务端渲染给搞了。

好腻害!👍

想问一下,是不是 react 的 js 上面都要 import 一堆东西啊 感觉好麻烦,可不可以像 Rails 一样自动 load?

#13 楼 @cqcn1991 react 不能自动 load。实际上这个import不属于 react,是 javascript es6 的一部分。 你可以看看这个 http://www.2ality.com/2014/09/es6-modules-final.html 里面解释的很详细。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号