对学习react的一些思考。
最近在做react技术栈的一个博客系统,用到react+redux+router+server si de rendering+material UI,当然还有webpack构建工具。翻来覆去,从一开始啥也不会,对redux概念非常模糊,到能熟悉掌握,调试啊,查文档啊,能得心应手。
学会了如何查找英文资料,这是最大的信心,不会再害怕看英文文章了。还有学会如何针对性地查找问题,能使用stack overflow提问,翻GitHub issue,用git管理自己的文件,还有GitHub 使用等等。不只是编码,更学会了一种能力,即是如何发现问题,解决问题的能力,也是一个大的进步。
有待加强的是“输入输出能力”,不仅技术上要进步,技术以外的也要进步。学会表达自己的想法,写技术博文,也要学习别人的思考,贡献社区,整理好文章,关注好的博主。学习,不只是技,还有道。作为一个想做程序员的大学生,要思考,要有视野,要有决心。
同构思考
回到项目本身,这个项目遇到一个困难:css的使用。使用css module使用webpack可以打包样式文件,在客户端这是没有问题的,只要加载打包文件就好,但尴尬的是服务端渲染做同构应用是没法识别样式文件的,还有一个开发环境下热加载问题。看老外一个博客解决了这个问题,但是适应的依赖工具postcss新版本下不能用了,求助其他方法也不能很好解决我的项目上的问题,只能先放一放,以后再来探究这个问题。
转而使用CSS in js思路,inline style虽说是旧有的工程意识中要竭力避免的,毕竟前端发展到现在,样式结构要分离是早已成共识。但是,组件化的开发模式下,这个是有可取之处的,一个组件对应一个样式,全是json格式,用style属性导入就好。虽然也有问题,如伪类就不好做,还有基于class样式变化的动画不好做(我还没深入探究这个)。但满足我这个项目是足够的,况且material也是inline style的,非常适用。
前两天分别解决了服务端router和redux使用,开发模式热加载,调试工具,整个项目已经具备一个合格的骨架,以后也能当模版复用,而且服务端渲染性能好,便于开发大应用。今天又踩了一波css的坑,收获了经验,接下来就可以设计数据流和样式了,这两天早日完成第一版,再详细分析下这个项目。加油!
集合一些文章来,关于React技术栈的同构应用的思考。
React: Server-side rendering and hot reloading