获得徽章 0
- js归根到底还是函数式编程。优雅的js代码必然是高阶函数,表达式,不可变数据运用和驾驭的好的代码。高阶函数,表达式,不可变数据基本可以替代类,继承和封装及所有设计模式,困扰面向对象的所有设计模式问题,基本都可通过高阶函数解决。举个例子,spring所津津乐道的面向剖面编程,在函数式编程里就是一个use函数,而且只用写一次,不用配置满天飞。函数编程的这种抽象思维对于来自java面向对象世界的程序员确实难以理解和驾驭。
java的卓越之处在于其有编译性语言的性能,但在内存管理上没他们麻烦(主要与c, c++比较),当然,跨平台行,不过这似乎没啥好说的(现在还有哪门语言不是跨平台的?)。初次之外,java最本质上是一套代码规范,严格的如同一个暴君的代码规范。这台规范是建立在面向对象理论基础上的,严格按比规范,使得代码清晰度,可维护性无人能敌,加上强类型和编译器检查,特别适合大型软件的开发协作。然而,面向对象在带来巨大好处同时也产生了巨大问题,面向对象的坑产生了设计模式,设计模式使不必要的复杂度和啰嗦度到达无以复加的程度。命令式语言本来就不性感,再加上面向对象和设计模式,借用某知名coder的话"我们每年白白浪费了几百万行代码"。
java普遍用来写服务端,而服务端真正好玩的是数据库,nginx,分布式架构和linux及开发运维,然而我们的java开发人员目前觉大多是接触不到这些层,因为有几百万行代码要写或复制,自己也无时间和兴趣去探索这些领域,更不必说什么函数式编程。于是,我们的java程序员日复一日,做着将数据库api翻译为应用程序api再暴露给前端并随着前端需求不停修改的半机械化工作。想象力,创造力,抽象思维能力,探索精神由此丧失。
js代码普遍不太看得懂,java代码普遍不太有意思,这就是现状。展开1028 - 分享一个非常棒但是被忽略了的学习资源,lynda.com。lynda 最近被 LinkedIn 收购了,可见质量不错的。除了自己生产优质内容,Lynda 还会从 Packt 和 Frontend Masters 等渠道引入内容。我一开始就是在 Lynda 上学怎么用 OmniFocus,很偶然发现了 Frontend Masters,然后入坑了。最近不务正业学 Java 又回来这里学习了展开660
- Syncd v2.0.0 版本发布,简单高效的自动化部署工具
Syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率。
Syncd发布 v2.0.0,后端API和前端UI分别做了大量的优化和重构,项目更加健壮,并移除对Nginx的依赖,部署更加简单。展开267 - ES6开始之后,通过定义对象的[Symbol.toStringTag]来改变Object.prototye.toString对于对象内部[[class]]属性访问的返回值, 学习地址:
developer.mozilla.org
512 - react 性能优化要点:
1. 数组遍历给定唯一的 key,最好不要是索引(index)。
2. 使用 immutable 定制 react 组件shouldComponentUpdate 生命周期,管理 state 对象和 store 可以减少不必要的渲染。(React.PureComponent 与 React.memo 都是浅对比)
immutable使用:github.com
3. 使用 reselect 避免冗余的计算。
reselect 使用:github.com
4. 服务端渲染 / 预渲染
框架 Next.js:nextjs.org
5. 异步组件 / 组件懒加载
6. 提取 CSS,静态资源合并、压缩加 hash,利用浏览器缓存机制
具体优化分析可以使用 React Developer Tools 、Chrome DevTools 等工具。
上述只是一些思路,具体原因和实现细节,不妨你亲自研究实现一下-。-展开评论11