分类「译文」(共 5 篇文章)

原文 https://medium.com/@tosho.trajanov/front-end-developers-are-software-engineers-too-3641375ffe50#.dre250ty9

在网上,我经常能够看到有人提问,为什么前端开发者做的工作比后端简单许多,而需求量却越来越大?我只能说,这完全不是像他们想象的那么简单。前端开发者如此受欢迎是因为他们与后端开发者一样,同样是工程师,他们做的工作同样很复杂。下面从很多不同的方面说明了这一点。

当我一开始学习 React 的时候,记得我读了很多与它相关,却有着不同技术的文章。

我想特别指出,其中有一篇提到 React 的生态圈非常混乱,以至于让开发者觉得在使用 React 之前必须掌握其它所有与之相关的类库。

和一些有着 8 个月 React 使用经历的人一样,我仍然只是浮于整个生态圈的表面,甚至不知道这个庞大的系统是如何工作的。

但我花费在 React 中的时间已经足以让我明白,什么时候适合使用另外一个相关技术——Redux(一个 Flux 架构的实现),以及我为什么要使用它。

近年来,React 已经成为开发者们建立从单页应用(SPA)到移动应用的一个新工具。但是自从我开始逐步深入 React 后,我发现所有看似非常酷的 Node 模块实际上对开发有非常不利的影响。它们不遵循任何规则,组件的体积巨大。它们为几乎所有的组件都使用了状态,也包括那些根本就不作输出的组件。任何有着足够经验的人都明白,维护这样的代码会有多麻烦,以及如果每次都渲染全部组件的时候,这在浏览器上加载会有多慢。在这篇文章中,我会带你探索 React 的最佳实践,包括如何设置 React 以及如何让它变得足够快。

在你开始阅读前请注意:React 是一个函数式编程(Functional Programming,FP)库,如果你不知道函数式编程是什么,请阅读其它相关文章。

这几年函数式编程逐渐火了起来。例如 Clojure、Scala 和 Haskell 这些编程语言已经吸引了很多对新技术着迷的程序员们的眼球,因为他们在某些方面有着巨大的优势。Immutable.js 的目标是把其中的一些优势通过简单直观的 API 带到 Javascript 中来。请跟着我们通过这篇文章来学习这些(benefits)并运用到你的项目中。

介绍:不可变(immutability)和 Immutable.js

尽管函数式编程的特变不仅仅在于其不可变,但很多的函数式语言都把不可变作为一个重点。例如 Clojure 和 Haskell,都对数据如何改变和何时能够改变做出了严格的编译时限制。正因这一点,许多开发者便放弃了这些语言。对于那些能够忍受住最初的煎熬的人们来说,解决问题的新方式开始变得多样起来。特别是对于初次接触的人来说,数据结构是函数式范式的主要的争议点。

近几年,“回调地狱(Callback Hell)” 一词经常被提及,成为 Javascript 并发管理中最为讨厌的设计之一。它让你忘记了代码本来应有的样子,以下便是 Express 中验证和处理一个交易的例子:

app.post("/purchase", (req, res) => {
    user.findOne(req.body, (err, userData) => {
        if (err) return handleError(err);
        permissions.findAll(userData, (err2, permissions) => {
            if (err2) return handleError(err2);
            if (isAllowed(permissions)) {
                transaction.process(userData, (err3, confirmNum) => {
                    if (err3) return handleError(err3);
                    res.send("Your purchase was successful!");
                });
            }
        });
    });
});
Copyright © 2017 dremy.cn
皖ICP备16015002号