总体介绍

  《Node.js+MongoDB+AngularJS Web开发》,于2015年6月出版,是一本翻译过来的书,原书名为《Node.js,MongoDB and AngularJS Web Development》,总的来说是一本讲述如何用Javascript进行B/S架构全栈开发的书。

  该书主要讲解4种技术(框架),分为6个部分29个章节。4种技术即Node.js、MongoDB、Express、AngularJS,业内称为MEAN;6个部分我个人理解为: 基础(引言)、Node.js、MongoDB、Express、AngularJS、综合案例。29个章节看起来比较多,但每个章节都不长,全书560页,平均每个章节也就19页。

  因为Express算是Node.js的插件,Node.js算是使用javascript的服务端语言,AngularJS是前端JS比较知名的MVVM框架,MongoDB是一个很灵活的NoSQL数据库(脚本同样使用Javascript),所以说只使用Javascript就能兼顾B/S前端、后台、数据库三方面的开发。

  我个人看到AngularJS(下面简称ng)部分23章,考虑到ng已经要推2.0了,且该书ng部分感觉讲的不是很好,下面的部分可能会停滞或者直接看综合案例部分。

  本书开始来看感觉是一本应用书,但是某些部分让我觉得这本书是字典书,嗯,这不是褒义。下面我从各个部分来说明一下我对这本书的理解和建议。

引言

  引言共两章,第1章简单介绍了Web开发主要要素以及本书后面四部分技术的用途,第2章主要是Javascript基础入门。

  这部分没什么好说的,第1章全是概念、原理类的东西,可以知道该书某些部分比较非常枯燥。第2章共计22页,使用了大量的图表来说明Javascript的语法。

  我看该部分的时候基本是跳着看,建议除非JS能力比较匮乏否则还是跳着看比较好。

Node.js

  Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。(摘自百科)

  现在Node.js已经是4.3.1/5.6.0版本,而本书中还是0.10版本作为示例。

  看完本书Node.js部分后我觉得其部分设计貌似和C语言及Linux编程比较像,如文件系统部分中读写文件的标记、流的管道输送部分、子进程。部分同行可能会对其中的异步操作理解有些问题,但基本上用多了就会明白其中的好处。

  本书中的示例大部分都可以在新版本Node.js通过,其中第9章的HTTP集群我没有实现其中描述的效果,下载了源码也没有实现,这个留待以后有空研究。

MongoDB

  Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。(摘自百科)

  这是我第一次接触NoSQL数据库,NoSQL指的是“不仅是SQL(Not Only SQL)”。使用JSON的二进制形式BSON来存储数据,因为少了SQL表结构的限制,所以比较灵活。区别于SQL的表和列,MongoDB中使用集合以及文档组织数据。

  本书的MongoDB版本同样落后,这导致一些接口不一致。如db.addUser变成了db.createUser。但是大部分表格,如用户账户的数据库角色表还是可用的。

  该部分内容除了第17章还算简单,不过我个人的看法是看的快忘的也快。第17章的高级概念估计得在实际项目中用到才能理解到位。

Express

  Express是基于 Node.js 平台,快速、开放、极简的 web 开发框架。(摘自官网)

  本书中Express也只有两章,我因为对B/S架构算是比较熟悉的,所以这里也是跳着看的。建议同样有B/S经验的同行看看模板引擎、自定义中间件部分就差不多了。

AngularJS

  AngularJS是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入,等等。(摘自百科)

  AngularJS简称ng,个人理解ng这类MVVM框架使得前端开发变得有些像后端开发了,优点显而易见:包含模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等所有功能,这些对于软件管理的意义都是比较大的,但是缺点也很明显,ng太笨重了,我现在下到的版本压缩后也有151KB,未压缩则有1M+。现在ng把许多模块打散分离出去用来减少核心的大小。

  本书中ng使用的是1.2版本,同样开篇就是一大堆理论,最后再介绍ng的使用。其中第20章把ng的每个设计都描述一遍,然后后面几章再详细介绍这些设计实际应该如何运用。

  现在2.0版本也快出了,虽然我还没有实际项目的使用经验,不过现在已有许多地方表示2.x较1.x改动相当大,估计2.x一些接口都与1.x不同。

综合案例

  这部分应该是本书最像应用书的部分了,该部分还没有研究,待后续补充。

总结

  本书应该算是一本不错的JS全栈书籍,从理论到实践都有。缺点是每部分开篇经常就是一大堆理论,容易让人失去兴趣,个人觉得有个“Hello world!”的开篇比较好。不过也因为这本书的理论和图表也有不少,所以也可以把本书当成一个字典工具书,当然前提是这本书中的数据还未过时;即使现在书中也有些地方过时了。个人觉得本书入门以及初级都可以看看,中级的可以当字典用用。

《Node.js+MongoDB+AngularJS Web开发》读书笔记及联想的更多相关文章

  1. Flask Web开发读书笔记

    开篇:目前想自学Flask Web开发--基于Python,找了几本书准备啃啃,同时也会分享读书笔记.希望和大家一起进步. Flask是小型框架,可以算是微框架,但是他的功能还是比较多 Flask有三 ...

  2. AngularJS + Node.js + MongoDB开发

    AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero) 一.闲扯 有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能.包 ...

  3. Node.JS + MongoDB技术浅谈

    看到一个Node.JS + MongoDB的小样例,分享给大家.魔乐科技软件学院(www.mldnjava.cn)的讲座 Node.JS + MongoDB技术讲座          云计算 +大数据 ...

  4. ASP.NET Core Web开发学习笔记-1介绍篇

    ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...

  5. 8 步搭建 Node.js + MongoDB 项目的自动化持续集成

    任何事情超过 90 秒就应该自动化,这是程序员的终极打开方式.Automating shapes smarter future. 这篇文章中,我们通过创建一个 Node.js + MongoDB 项目 ...

  6. 用Node.JS+MongoDB搭建个人博客(安装环境)(一)

    Node.JS是什么? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Nod ...

  7. 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢

    安装完Node.js之后,就要为它选择一个有利的IDE用于开发. 相比较了多个IDE之后,定位在webstrom和sublime上. 有一个简单的比较: webstorm功能很丰富,前端开发工具的集大 ...

  8. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  9. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

随机推荐

  1. GNU Radio 之 rtl-sdr

    http://sdr.osmocom.org/trac/wiki/rtl-sdr 我使用的是去年买的一个电视棒(ezcap DVB-TFMDAB),50多元,它的频宽为52Mhz - 2.2GHz ! ...

  2. 2.C#中泛型在方法Method上的实现

    阅读目录   一:C#中泛型在方法Method上的实现 把Persion类型序列化为XML格式的字符串,把Book类型序列化为XML格式的字符串,但是只写一份代码,而不是public static s ...

  3. MYSQL校对规则

    一.前言 有时候遇到这种情况,你用一个like语句查询,查到的结果中有一些并没有包含你查询的关键词的纪录:有时候遇到这种情况,你的数据库自作聪明的大小写不敏感,让你在更新时把大小写不同的两条记录都更新 ...

  4. Django模块学习- django-pagination

    实在是很简单的一个Django 的分页插件. 使用pip instal pagination 即可完成安装. 完成后配置如下: 1. 将安装文件中的 pagination 文件夹拷贝到项目的根目录下 ...

  5. <img> to image_tag

    <img src="clean_wave.jpg?" alt="Clean_wave"><%= image_tag("clean_w ...

  6. Apache+PHP+Mysql 集成环境 几个软件pk

    WampServer 2.5 64位 - 工具软件 - 源码之家 2014年8月25日 - WampServer是Apache+PHP+Mysql 集成环境,拥有简单的图形和菜单安装和配置环境.支持2 ...

  7. 使用NSKeyedArchiver归档

    将各种类型的对象存储到文件中,而不仅仅是字符串.数组和字典类型,有一种更灵活的方法.就是利用NSKeyedAarchiver类创建带键(keyed)的档案来完成. Mac OS X从版本10.2开始支 ...

  8. wordpress表结构

    WordPress仅仅用了10 个表:wp_comments, wp_links, wp_options, wp_postmeta, wp_posts, wp_term_relationships, ...

  9. DNS反射攻击阻止

    刚搭的dns server就有贱人跑dns反射放大攻击,据说bind高版本没洞,但是日志刷刷的跑,感觉也不放心,而且毕竟dns是返回了请求的,所以找了点资料备忘 先设定不受限制的网段 iptables ...

  10. [转]javascript的urlencode

    今天在一个原来使用AJAX自动缩小选择内容的项目上突然发现当输入名称时,如果输入有特殊字符&的时候,选择的内容不会发生变化,也就是说输入的内容在&后面的内容会被截断,经过查证才发现在客 ...