开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
今日推荐开源项目:《大地图 Minecraft-Overviewer》
今日推荐英文原文:《Why Should I Even Bother With Full-Stack Development?》

今日推荐开源项目:《大地图 Minecraft-Overviewer》传送门:GitHub链接
推荐理由:相信玩了有些时日的 Minecraft 世界都已经在不少地方被玩家改造过了,而想要一口气看清这些变化在游戏内似乎并不是那么容易。这个项目可以为你的世界生成一个美观的可交互的 html 地图,可以轻松的一览地表全貌,看看自己已经完成的建筑或者是大家瞎造的奇观都很方便,虽然一个服务器里的大家都有弃坑的时候,但是 MC 服务器里的地图就像现实世界里的团队合影一样,是大家一起相聚过的证据。
今日推荐英文原文:《Why Should I Even Bother With Full-Stack Development?》作者:Frank Zickert
原文链接:https://codeburst.io/why-should-i-even-bother-with-full-stack-development-142b9c4c7c3f
推荐理由:同时掌握前后端的技能并非坏事,最起码多一分能力就能多一分工资

Why Should I Even Bother With Full-Stack Development?

Writing code has long been the biggest challenge of software development. How do you combine if-then-else-structures with loops to solve a business problem?

The user interface design was done on the side. The developer was the decisive factor. What she was able to build was what the software looked like. Some developers had talent concerning user interfaces. Some did not.

This changed with the rise of the internet. Graphical user interfaces moved into focus. Even more importantly, those user interfaces did not need to be programmed. The Hypertext Markup Language (HTML) and Cascading Style Sheets (CSS) enabled designers to build websites. These designers were technically skilled. Of course. But they did not need to be programmers.

At the time, JavaScript was not mandatory. Not very long ago, the company I am working for distinguished “front-end” developers. In those who do the graphical design with HTML and CSS (only). And in those who are capable of working with JavaScript.

JavaScript development was a hacky concept. Front-end developers manipulated the Document Object Model (DOM). That is the page’s hierarchical structure of the HTML-elements. They added, removed, and changed the classes and the other attributes of an HTML-element. Seen from the eyes of a software engineer, this was all hacky! It did not have anything to do with the craft of software engineering.

Would you let a JavaScript developer implement business logic? Would you let her do something you consider critical for the success of your business?

For heaven’s sake, no!

Implementing business logic was left to the back-end developers. These developers took the styled HTML and inserted it into the business logic that they wrote. PHP became popular for making it quite easy to render HTML on the server-side.

But something happened!

Maybe caused by the introduction of HTML5 and “Asynchronous JavaScript and XML” (AJAX). Maybe caused by the advent of Ecma Script. Websites started to act and behave more like applications. An increasing proportion of the business logic was closely coupled to the user interface. With the greater responsibility, frameworks evolved in JavaScript. Front-end developers lost their hacky image and became software engineers, too.

Supposedly, front-end development became more of software engineering than back-end development is today! Back-end got reduced to work with databases, provide the data through APIs and take care of DevOps. They cope with all the things that require interconnectivity and integration. Working with different APIs sometimes is… hacky! They need to make sure that all the details work together. They implement specific code for a very specific API.

But moving business logic to the front-end did not free the capacities at the back-end. For plausibility, security, and integrity, all the logic still had to run at the server-side. Because the front-end could be edited by attackers. The code had to be duplicated!

Of course, writing code twice comes with problems. There is the avoidable effort of doing things twice. And there is the risk of inconsistencies between the logic at the front-end and the back-end side.

Full-stack development promises to avoid duplicate code and thus, prevent those inconsistencies.

There is a good chance that this promise will be kept.

JavaScript runs on any modern browser. With Node.js, it runs on the server, too.

React.js removed the boundaries between HTML and JavaScript. It uses the Javascript Syntax Extension (JSX) that complements basic Javascript source code with HTML.

Styled-Components added a convenient way of styling your React-components. There’s no need for global style sheets anymore.

With Infrastructure-Components, you can write REST-services, as well as database schemes and queries. You can even configure your serverless infrastructure.

The following picture depicts how the React.js-stack (including libraries) covers pretty much the full technology stack.

Full-Stack React

Now, you can use React from the very front-end of your application to the back-end and even DevOps. Within the same code. Without duplicates.

The technology stack has never been so homogenous. From that perspective, it has never been easier before to become a full-stack developer.

With the technology stack moving closer together, the demand for full-stack developers even rises. Consider isomorphic React apps. These are apps that use the same React-components to run on the server and the client-side. If you considered yourself as either a pure front-end or a back-end developer, you would not be up for that challenge.

This is less of a programming challenge. It is not about learning many different programming languages. This is rather a challenge to the skills and the mindset.

Creating intuitive user interfaces requires more than HTML, CSS, and JavaScript. You need to have the ability to craft compelling user experiences.

Writing business logic requires more than combining if-then-else-structures with loops. You need to understand the implications of the logic you implement.

Writing full-stack applications requires you to understand software architectures. You need to understand how to compose your software. The code of your front-end and back-end might be identical. But it matters whether the code runs on the front-end or the back-end. It matters for performance, security, and sometimes even meaning.

The demand for full-stack developers does no longer result from the businessmen’s urge to hire fewer developers who can do more. The demand for full-stack developers stems from the increasing power of the tools. React is no longer a front-end library. Today, you can use React to write back-end software and to configure your infrastructure.

Full-stack development does no longer require multiple programming languages. But it still requires versatile skills. It requires you to think and act like a full-stack developer.
下载开源日报APP:https://openingsource.org/2579/
加入我们:https://openingsource.org/about/join/
关注我们:https://openingsource.org/about/love/