书籍作者:累计评价 0 | ISBN:9787121371837 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:6018 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书涉及很多平台、框架和类库等,主要有前端使用的Angular,后端使用的Spring Boot框架、Spring Security安全框架,数据库涉及MongoDB、Elasticsearch和Redis。此外,还会学习函数式编程、响应式编程(RxJS)、Redux等理念,Swagger、JaVers等工具及Rest、WebSocket、微服务等概念。一本书是无法深入这些技术细节的,这也不是本书的目标。希望通过本书,可以帮助读者开启一扇门,真正掌握这些让人眼花缭乱的编程语言、框架、平台、IDE等技术背后的编程思想。
推荐序
认识王芃是因为他的文章。
对我这样的惫懒中年人来说,要坚持不懈地写文章实在是有点难,每每提笔都难以成章——宁可靠写程序来麻醉自己。这,或许是另一种形式的“中年危机”?
但同样已届中年的王芃却能笔耕不辍,他不仅擅长写文章、写书,还经营着一家公司,让人叹服。
对于程序员来说,道路千万条,热忱第一条。无论你是希望像我一样在技术的道路上一条道走到黑,还是像王芃一样“技术、业务、管理”兼修,首先要具备的就是对技术的满腔热忱。
全栈,是技术领域的一条 Hard Way,选择它,你就要付出很多额外的努力——并非是996,而是通过更多、更努力的思考(工作955,思考7×24)。其回报则是在多年之后,每当别人提起你时都会不禁赞叹:“瞧那位 Hardcore 的程序员!”没有付出就没有回报。相对于少数几条 Hard Way 来说,世界上还有无数条 Easy Way。如果你对 Hard Way 有着恐惧或犹疑,那么,请放下这本书,随便拿起一本“21天精通×××”。
如果这都没有吓跑你,那么我要向你透露一个价值连城的秘密——“全栈并不难”。至少,对勤于思考的人来说,全栈是一个自然而然的结果,并不需要额外的代价。你之所以曾经觉得全栈难,是因为眼界受到限制。
现在,请听我说。
武侠小说里常常会说打通任督二脉之后功力大增,为什么打通任督二脉如此重要?因为它们统率着全身的经脉,它们是一切经脉的根本。相对于其他经脉来说,任督二脉很简单,但也最难打通。
全栈也是如此。经过多年的发展,技术体系变得非常庞杂——看看层出不穷的技术知识图就知道了,但是你是否曾注意到很多同样的思想被到处套用?不仅在同一个技术体系内如此,跨体系的套用其实更加明显。比如 RxJS 的事件流、后端的 MessageQueue 与现在大热的 Serverless 架构在深层思想上有着千丝万缕的联系。有了这种眼光,你不仅可以更轻松地跨领域学习,更重要的是,你会拥有极为难得的预见力。而技术预见力,能让你领先别人三年——哪怕半路在树下睡一觉都不用怕——果然是我这种惫懒中年人的上佳之选啊。当然,如果你是仍有着雄心壮志的青年,应该会更明白预见力的价值,有朝一日,你的预见力甚至不会再局限于技术。
与通常的理解不同,在我看来,全栈,不是特定技术的组合,而是一种思维方式,一种眼界。即使这本书讲的是 Angular + SpringBoot,即使我是在 Angular 领域的 Google 开发者专家,我仍然要郑重提醒你——阅读时请跳出具体的技术,努力从更高的层次上理解它。
全栈,就是技术的任督二脉。它把大量的技术思想贯穿在前后端这两条主线中。它们既有区别,又有联系。既不会抽象到让你找不到具体的例子去理解这些思想,也不会狭隘到让你只知其然而不知其所以然。所以,如果你曾是个前端开发者,那么请了解下 Java 的“注解”及其对 Spring 演化的影响,思考下“POJO + 注解”的模式为什么会流行起来。如果你曾是个后端开发者,那么请了解一下 RxJS 在前端的应用,及其与 MessageQueue 的共同点,了解下Filter 和 Interceptor 的共同点及其背后的思想。而无论你是前端开发者还是后端开发者,思考下 Java 与 TypeScript 这两种语言背后的设计思想都会让你受益匪浅。
总之,不要囿于门户之见。没有前端工程师,也没有后端工程师,一个有技术追求的程序员,首先要是一个工程师。工程师的思维与热忱,才是你最宝贵的财富。
是为序。
雪狼——汪志成
ThoughtWorks 高级咨询师,Google Developer Expert
二十年码农,全栈工程师,儒生,Angular 中文文档译者
2019.05.14
前言
全栈的目的并不是一个人搭建起一个复杂的商业应用,在现代软件大工程化的今天,这个目标既没有必要,也没有价值。全栈的概念对笔者来说是一个不断扩充视野、持续学习的过程,通过不同语言、不同框架、不同平台的学习,知道什么是好的软件设计,什么是好的 UI/UE设计,什么是好的编程习惯;了解在不同的模型中,对同一个问题是怎样解决的,有什么优点和缺点。
让人眼花缭乱的编程语言、框架、平台、IDE 等,其实就是开发人员的工具箱。学会这些工具的使用不只是为了成为一个熟练的技术员,更重要的是,知道现实世界的问题是什么,对应的解决方案有哪些,然后才是选择合适的工具高效地解决问题。如今,在开源成为一个趋势的时代,对比其他行业来说,我们在使用这些工具的同时,还可以看到打造这些工具的开发者是如何思考问题、解决问题的。这个学习过程可以让我们打开眼界,也可以让我们在面对未知领域时有自信去探索。
如今,很多优秀的编程思想都会被各个平台吸收,比如约定优于配置、函数式编程、响应式编程,以及以注解方式为代表的元数据编程模型等。Java这么成熟的平台也在不断地吸收新的元素,让自己更“酷”一些:Java 1.5引入了注解,Java 8引入了Collectors、Stream等函数式编程的元素。而一个好的框架也一定会得到多个平台、语言的支持,比如响应式编程的框架 Rx,最初只是微软为 .Net 平台开发的一套框架,但现在已经可以用18种编程语言实现了。
很多时候,随着接触的技术面的拓宽,你会发现在一个陌生平台或框架中,有太多令你会心一笑的东西,因为理念是相通的。在Angular中Interceptor的概念和Spring中Interceptor的概念如出一辙。如果你熟悉RxJS,那么对于Spring Reactor就很快可以使用了,这是因为背后的思想是一样的。所以说,随着你见识的提高,对于新知识的掌握速度也会越来越快。
本书涉及很多平台、框架和类库等,主要有前端使用的 Angular,后端使用的 Spring Boot 框架、Spring Security 安全框架,数据库涉及MongoDB、Elasticsearch 和 Redis。此外,还会学习函数式编程、响应式编程(RxJS)、Redux 等理念,Swagger、JaVers 等工具及 Rest、WebSocket、微服务等概念。
但一本书是无法深入这些技术细节的,这也不是笔者的目标。这本书想做的是希望帮助读者开启一扇门,读者读完本书后,如果觉得某个自己没有接触过的框架也不是那么可怕了,那么笔者的目的就达到了。不再对某个领域望而却步,其实就为你拓开了一片新天地。行万里路,读万卷书,这个道理在技术领域也是一样的,各种平台、框架、语言就像是路上的各种自然景观或人文景观,笔者愿意和你一起领略这多彩多姿的景色、升华自己的思想。
说句实话,虽然本书名字中有“全栈”,但是笔者以为“全栈”这个词还是有失偏颇的,给人的感觉好像样样通、样样松。确实,如果只是每方面都涉猎一些,确实无法做到各方面都精通,在某一个领域成为专家需要坚持不懈地进行学习和总结。但是任何一个领域学到一定程度时,就会发现在其他平台或编程语言上有类似的理念和思想,这些是相通的,已经超越语言和平台了。而这些恰恰又是在某个领域继续深入需要的一个台阶,持续学习的一个必要因素是不惧新的知识,而全栈学习就是要穿越这扇门,本书的目的就是想和你一起穿越这扇门。
作 者