这几个月JS可以说是红遍了半边天,从传统意义上的纯前端语言蔓延到了后端开发领域,从单纯处理显示效果到现在可以处理一定的业务逻辑,前端和后端的界限显得越来越模糊。这其中更是以Node.js和Angular作为典型代表。两者虽然除了都用Javascript作为语言之外并没有什么交集,但却都是代表全民JS时代来临的见证。
这回参加试读活动的几本书中,很欣喜的看到Node.js和AngularJS都在其中。在试读了这两本的样章之后,不得不说现在的翻译的质量越来越高了。从最早的语句都不通顺、专有名词解释生涩到现在文笔流畅、逻辑通顺、理解毫无障碍,不得不感谢出版社编辑和译者付出的辛勤劳动。
从内容编排上来说,单从样章所显示的内容,我更加喜欢《用AngularJS开发下一代Web应用》。《了不起的Node.js》的样章中只介绍了Node.js的安装方式和一些基础的Javascript知识,令人读来非常意犹未尽。但是AngularJS的样章中基本略过了如何获取最新版本的AngularJS和如何用IDE进行开发这些骗稿费环节,上来就是一个Hello World的例子,如何将Hello一词通过变量赋值的方式显示。初看这个例子我并不觉得AngularJS有什么奇特的地方,但是作者随后的解释让我彻底改变了这种想法:1、这个赋值并不是通过定位DOM改变InnerHTML的方式实现的,也没有添加任何的监听器;2、JS对变量赋值的也仅仅是赋值而已,并没有写任何监听器和回调函数;3、Controller没有用到任何原生Javascript之外的方法,也没有构造函数。
我承认我当时瞬间被击倒了,我没有见过可以如此干净利落的将DOM和JS逻辑分离的如此彻底的赋值方式。在定义Javascript方法的时候完全不需要知道将来要改变哪个DOM的值,只是单纯完成赋值操作而已。在DOM中只是注册了一个ng-controller属性,就可以完成对greeting变量的调用。对于JS与DOM的传值交互,在不借助后台代码的情况下,我们通常能做的只有设置一个隐藏的div,由此作为媒介进行传值。这种方式在我看来非常丑陋,但是在更多情况下不得不采取这种方式。
接下来又看到了angular的MVC模型和数据绑定,然后跟着demo做了一个购物车页面。给我的感觉是,使用angularJS就像在使用JSTL或者ASPX的标签控件一样。但是很快发现angular和后两者有一个非常大的区别,那就是打开网页源代码可以发现,JSTL和ASPX页面的标签在最终都会在以HTML的方式在浏览器中显示,而angular则会保留用到的angular标签。也就是说,解析标签的工作不是像JSLT和ASPX那样在服务器端进行的,而是在浏览器端进行解析。用Angular写的HTML页面本身就是一个模板。由浏览器端通过解析JS完成页面的显示。
在我看来,这种方式可能会对SEO造成一定的影响,因为搜索爬虫并不会去执行JS(不知道google会不会给angular提供特殊支持)。但是在Web App当道的背景下,SEO的影响可以忽略不计。
最令我感动的是,这本书讲解的例子会非常详细的解释例子中新增的代码,只要是从头往下看的,基本不会出现突然出现一个新的知识点导致无法完成理解的情况。在讲解完代码之后,就是作者对于这个功能点的看法和一些反思,这些都凝聚了作者自己的干货不说,关键是非常好的把握到了读者看到这一页时的知识水平,虽然我此时写的angular代码不多,但是作者的罗列的问题基本都击中了我对功能理解上的死角,促使我去思考问题,尝试着用自己的理解去解释问题。
总而言之,这本书不论是在自身文章编排和指引读者思考上都做得十分到位,再加上译者流畅的文笔,使得这本书读来每翻一页都能填补自己知识理解上的空白。再加上不堆砌代码截图,使得我由衷的认为,这本书真尼玛满满的都是干货!
分享到:
相关推荐
【推荐系统算法合集】 推荐系统是现代在线服务中不可或缺的一部分,它利用用户的行为和兴趣数据,为用户提供个性化的内容或产品推荐。这篇文章主要探讨了推荐系统的基本原理和分类,特别是协同过滤算法,这是推荐...
干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 干货满满前端最全的初级前端面试题 ...
c++ 结构体 有用 干货满满
语法笔记hive干货,没有废话,基础语法,自己学习中记录的基础简单内容,入门级别,分桶,分区,查询,常用命令等。
满满干货-产品经理面试.doc
7-人才地图绘制5步走,满满的全是干货!
满满干货!手把手教你如何用AI帮你写作.pdf
合肥大数据资产运营公司 笔试干货满满;超全笔试题及面试题 ,最新大数据笔面经验,以前没有,只此一家。2022年4月最新,
这里,我们定义了两个名为 `a` 和 `b` 的结构体变量,它们都是 `student` 类型的。 结构体的输入输出 我们可以使用 `cin` 和 `cout` 进行结构体的输入输出,例如: ```c cin >> a.num >> a.name >> a.sex >> a.age...
一张图将整个ReentrantLock流程看懂,干货满满 一张图将整个ReentrantLock流程看懂,干货满满 一张图将整个ReentrantLock流程看懂,干货满满 一张图将整个ReentrantLock流程看懂,干货满满 一张图将整个...
`put()`方法在队列满时会阻塞,`take()`方法在队列空时会阻塞,从而实现线程同步。阻塞队列是线程间通信和协作的有效工具。 这些线程同步技术各有优缺点,开发者应根据具体需求选择合适的方法。例如,对于轻量级...
多次机器学习与大数据竞赛Top5的经验总结,满满的干货.zip
满满干货!手把手教你实现基于eTS的分布式计算器 本资源的主要内容是介绍如何基于 HarmonyOS 应用开发框架和 eTS 语言来实现一个分布式计算器。下面我们将从组件化、声明式描述和状态管理三个维度来解析分布式...
在Shell中,单引号和双引号都是用于字符串的限定符,但是它们有着不同的作用。单引号用于限定字符串的边界,而双引号用于解释字符串中的特殊字符。 Hadoop Hadoop是大数据技术的核心组件之一,提供了强大的数据...
满满的干货:分享二十个Python学习资源材料。这些资源为Python学习者提供了丰富的学习材料和交流平台。无论是初学者还是有经验的开发者,都可以通过这些资源不断提升自己的Python编程能力和实践经验。同时,随着...
- **实例变量**:在类的实例方法中声明的变量,每个实例都有自己的副本,彼此独立。 **示例**: ```python class MyClass: class_var = "I am a class variable." def __init__(self): self.instance_var = "I ...
Python程序完整代码-干货满满,30个Python源代码! 以下是从给定的文件信息中生成的相关知识点: 1. 数制转换:Python中可以使用bin()、oct()、hex()函数分别将十进制数转换为二进制、八进制和十六进制。 2. 字符...