我的第一部原创《JavaScript 全栈开发》正式上市了!
在经过了漫长的创作、审校过程之后,《JavaScript 全栈开发》终于迎来了在各大平台上正式出版的日子,以下是这本书的基本信息:
出品方:
异步社区:https://www.epubit.com/bookDetails?id=UB77a9c6bfcfd2f
卷积传媒:https://zhuanlan.zhihu.com/p/377544177购买链接:
京东网:https://item.jd.com/10032000128331.html
当当网:http://product.dangdang.com/639340832.html
这本书作为我人生第一部成为了印刷品的原创作品,于我个人来说,自然是意义非凡,毕竟著书立言一直以来都是许多读书人毕生追求的理想之一。而作为一个自认为非常老派的读书人,在理想达成之日当然也免不了要俗套地撰文一篇,以表纪念。
此时此刻,不禁想起了早年间的求学之路。作为一个无生活自理能力的小脑瘫痪患者,我的本科专业基本是靠远程教育的形式完成的。在这一路上,我深受一大批中文优秀计算机专著作译者的恩惠。例如。我永远都记得阅读 K&R 的《C程序设计语言》时那种醒醐灌顶的感觉,读 Scott Meyers 的 Effective 系列时得到培育的专业素养。我也永远要感激侯捷老师那些译笔生辉的作品,除此之外,吴军博士的《浪潮之巅》、《硅谷之谜》等系列著作也帮助我打开了视野,找到了自己的人生定位。当然,受人恩惠,当求回报,我在日常写代码以求糊口之余,也一直希望自己有朝一日能追随这些前辈的垂范,著书育人,践行科学之信仰,弘扬实干之风气,如真能为当下技术土壤的培育尽到丝毫责任,此生可不虚此行了。
具体到《JavaScript 全栈开发》,整个创作过程最初的起心动念来自于某年某月某日在 Facebook 上看到的一张名为“如何成为全栈工程师”的图,图中堆叠着一摞足足半人多高的书籍,其中除了最基本的、与 HTML、CSS 相关的书籍之外,还有介绍浏览器端编程的 JavaScript 语言及其框架的书若干本,在服务器端使用的语言(例如 Java、C# 等)及其框架的书又是若干本,最后再加上关于 MySQL、SQLite3 这类数据库的以及关于 Apache 服务器的书,一共十几本,颇为壮观。总而言之,那张图无看起来无论如何都不想像是要鼓励初学者的样子。问题是,这到底是想吓唬谁呢?
诚然,时下的全栈工程师确实是一个要求不低的热门职业。该职业要求程序员们必须了解一个互联网应用从前端(包括浏览器及其他客户端)到后端(包括 HTTP 服务、数据库等)涉及到的所有技术栈。但“全栈”并不一定等同于“全能”。在大多数情况下,全栈工程师在职场中的优势并不在于他一人能干完所有的事,这在现代互联网应用项目的开发中几乎是不可能的,做几倍的 996 工作量都不现实,毕竟这类项目的开发通常是一个非常复杂的系统工程,需要团队合作。而学习过软件工程理论读者一定都知道,项目的规模越大,沟通成本就越高,全栈工程师真正的优势是他的技术视野。这其中的道理很简单,大型开发团队的沟通成本是非常巨大的,如果隶属于不同技术栈的程序员彼此不能理解对方的技术问题,各说各话,前端和后端是一定会掐架的。而如果团队之中存在着几位全栈工程师,这个问题就可以得到很好的解决,因为他们懂产品、懂设计、懂前端、懂后端,自然彼此都能听得懂。而且,全面的技术视野也有助于做出更加全面客观的技术架构和决策,从而对所在组织产生很大的正面影响。
所以,要想成为全栈工程师,最重要的任务是要扩展自己了解的技术栈,而不是去成为一个事必躬亲的全能超人。至少在我个人看来,在 Node.js 运行平台成功地将前端领域的王者 —— JavaScript 语言扩展到后端之后,之前图中所罗列的那些书中至少有一半与编程语言相关的问题完全是可以用一本全面介绍 JavaScript 的书来解决的。为了验证这一设想,我尝试着开始了之后长达十个月的创作。从 2019 年 9 月 16 日动笔,到 2020 年 7 月 22 日完成初稿,我自己也没想到写这样一本小书竟然花了近一年的时间,以及需要花费我如此之多的体力,背伤如影随形,汗水日日如雨,实现理想之路从来不会畅行无阻,今日回首,一切依然都是值得的。毕竟在我把自己关在家里埋头写作的这段时间里,外面的世界发生了如此巨大而剧烈的变化,暴虐的自然,丑陋的世界让人感慨万千。我应该庆幸自己选择了“读书写作”这条通往桃花源的小径,“问今是何世,乃不知有汉,无论魏晋”某种程度上真是何等的幸运,不然,请抬头看看如今世上有那么多莫名其妙的愤怒和亢奋。在那经历了无数分岔的小径尽头,我们能听到陶渊明、博尔赫斯那轻声细语的传世之言。惭愧呀!在大师面前,我依然是何等的浮躁,何等的肤浅,何等的不自信。
幸运的是,由于之前参与过十本计算机英文著作的翻译工作,也参与审阅过别人撰写的相关作品,我对计算机专著该有的样子并不陌生。撰写这类作品的最重要之处在于如何在细节严谨性与教学引导性之间找到合适的平衡点。如果没有教学引导性,缺乏轻重缓急的内容安排和一个循序渐进的过程,初学者就很可能会不得其门而入。而如果缺乏足够的、可以立刻上机测试的代码实例细节,也很可能会让初学者觉得兴趣黯然,导致学习过程形同嚼蜡。这就需要作者有丰富的教学经验以及带队经验。有了前者,我们就能熟悉教学心理,知道先教什么,后教什么,之间如何承前启后,将人一步一步引入到这么技术的运用中来。而有了实际带队经验我们就会知道新手在具体实践中会遇到那些情况,并且能准确的预料到学生在运行什么代码时会遇到什么问题,而在这种情况下往往是一点就通,不用长篇大论,事倍功半。
同时做到以上两个方面并不容易,我也只能尽力而为,并为此做了两项安排:
- 尽可能用单一项目的成型过程贯穿全书,通过项目本身的开发实践来引导读者循序渐进地学习JavaScript 的标准语法及其在浏览器端、服务器端的开发思路、设计理念。目的是鼓励读者在实际项目需求的驱动之下亲手将书中的示例代码输入到计算机中,并逐步修改它们,同时观察代码的执行过程,验证其结果是否符合预期。如果符合预期,就总结当下的经验,如果不符合预期,则去思考应该做哪些调整来令其符合预期。如此周而复始,让学习达到事半功倍的效果。
- 让这本书只专注于讨论如何使用 JavaScript 语言本身与其宿主环境提供的接口,不过多地涉及时下琳琅满目的开发框架。这样做主要是基于两个方面的考虑:第一,介绍 JavaScript 语言及其宿主环境本身就已经足以撑起一本结构完整、内容丰满的书了。如果再加上众多开发框架的介绍,只会冲淡这本书的主题,并使其臃肿不堪。第二,JavaScript 社区的开发框架不仅琳琅满目,选择众多,而且新陈代谢极为快速。这意味着,即使这本书介绍了客户端的 React 框架、服务端的 Express 框架、桌面端的 Electron 框架,很有可能等到这本书写完并最终出版之时,开发者们已经有了更好的选择。所以授之以鱼不如授之以渔,我们真正应该让读者掌握的是“快速学习新框架”的能力,这需要我们了解这些框架的设计思路,理解为什么决定开放那些接口给用户,为什么对用户隐藏那些实现,这就需要读者自己具备开发框架的能力。
以上安排也意味着读者在阅读这本书之前应该要具备一些与 HTML 与 CSS 相关的基础知识。并且最好能对基于浏览器/服务器架构的应用程序的设计原理、最底层 API 的使用方式、前后端的分工原则有着刨根究底的好奇心和一定的耐心。事实上,编程这件事无非就是使用编程语言表达自己的意图罢了,我们在学会基本单词,语法之后,对着名家名作模仿学句即可,正如在学习汉语时说的“读书破万卷,下笔如有神”,积少成多,不断顿悟,悟道为所用,如此坚持下去,久而久之,自然会驾轻就熟,行文如流水,自成风格了。到了那时候,我们哪还会在乎什么招式,格式,最后都是无招胜有招了。当然,这不是不讲规矩,而是我们的任何想法,写法都很自然地落在规矩之内。
王国维说过:“出乎其外,别有高致,进乎其内,固有生气”,读书学习求一乐,潇洒应对,亦可穿越于世间,求得一席之地以安身立业。我由衷地希望这本书能为读者日后进入更为深入的开发领域创造一个良好的开端。
我的第一部原创《JavaScript 全栈开发》正式上市了!的更多相关文章
- 急速JavaScript全栈教程
3 天前 · 3k 次阅读 急速JavaScript全栈教程 javascript node.js mongodb 140 自从一年前发布了Vuejs小书的电子书,也有些日子没有碰过它们了,现在 ...
- JavaScript 全栈工程师培训教程(来自阮一峰)
来源于:https://twitter.com/ruanyf http://www.ruanyifeng.com/blog/2016/11/javascript.html 全栈工程师培训材料,帮助学习 ...
- JavaScript 全栈工程师培训教程 - 阮一峰
http://www.ruanyifeng.com/blog/2016/11/javascript.html https://github.com/ruanyf/jstraining 我现在的技术方向 ...
- “云”端的语雀:用 JavaScript 全栈打造商业级应用
作者| 不四(死马)蚂蚁金服 语雀产品技术负责人 语雀是什么? 语雀是一个专业的云端知识库,面向个人和团队,提供与众不同的知识管理,打造轻松流畅的工作协同,它提供各种格式的在线文档(富文本.表格.设 ...
- Python全栈开发记录_第一篇(循环练习及杂碎的知识点)
Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看.(该篇代码行数大约:300行) 知识点1:优先级:not>and 短路原则:a ...
- JavaScript全栈教程
这是小白的零基础JavaScript全栈教程. JavaScript是世界上最流行的脚本语言,因为你在电脑.手机.平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaSc ...
- 老男孩python3.5全栈开发第9期+课件笔记(1-15部全 共125天完整无加密)
点击了解更多Python课程>>> 老男孩python3.5全栈开发第9期+课件笔记(1-15部全 共125天完整无加密)大小:236G 此课程为老男孩全栈开发最新完结课程,适合零基 ...
- Sentry 监控 - 全栈开发人员的分布式跟踪 101 系列教程(第一部分)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- 一文读懂NodeJS全栈开发利器:CabloyJS(万字长文)
目录 0 修订 0.1 修订说明 0.2 修订历史 1 基本概念 1.1 CabloyJS是什么 1.2 CabloyJS核心解决什么问题 1.3 CabloyJS的开发历程 2 数据版本与开发流程 ...
随机推荐
- 一个DDOS病毒的分析(二)
一.基本信息 样本名称:hra33.dll或者lpk.dll 样本大小: 66560 字节 文件类型:Win32的dll文件 病毒名称:Dropped:Generic.ServStart.A3D47B ...
- 一个DDOS木马后门病毒的分析
http://blog.csdn.net/qq1084283172/article/details/49305827 一.样本信息 文件名称:803c617e665ff7e0318386e24df63 ...
- DexHunter的原理分析和使用说明(一)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53710357 Android通用脱壳工具DexHunter是2015年下半年,大牛 ...
- 如何让c语言使用结构体近似模拟c++中的类
如今统治市场的主流编程语言,如c++,java,大都是面向对象类型的编程语言. 而众所周知,c语言是面向过程的编程语言,但是它拥有一个类似于类的结构,叫做结构体,主要的区别在于结构体无法定义函数. 因 ...
- UVA11520填充正方形
题意: 给你一个n*n的矩阵,让你往里面添加大写字母,矩阵有的字母已经给填好了,然后要求是每个格子都不能与他相邻的格子的大写字母相同,如果有多个答案,输出从上到下,从左到右所连接的成的那个n ...
- 每天一道面试题LeetCode 26--删除排序数组中的重复项(python实现)
题目1:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. ...
- Junit单元测试&反射&注解
内容索引 1. Junit单元测试 2. 反射 3. 注解 Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码的.关 ...
- 从effective C++中窥探C++11特性
这几天在看effective C++3rd,这本书算是比较经典的一本入门C++的书了.虽然年代比较久远书中讲的好多模式已经被的新特性取代了,但是从这些旧的模式中可以了解到一些C++新特性设计的初衷,也 ...
- Spring Cloud Alibaba Nacos Config 实战
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持.使用 Spring Cloud Alibaba Nacos Config,您可 ...
- 25.Qt Quick QML-500行代码实现"合成大西瓜游戏"
"合成大西瓜"这个游戏在年前很火热,还上过微博热搜,最近便玩了一阵还挺有意思的,所以研究了一下小球碰撞原理,自己亲自手写碰撞算法来实现一个合成大西瓜游戏.并支持任意大小布局,你想玩 ...