总体介绍

  《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. ASP.NET MVC中的模型装配 封装方法 非常好用

    下面说一下 我们知道在asp.net mvc中 视图可以绑定一个实体模型 然后我们三层架构中也有一个model模型 但是这两个很多时候却是不一样的对象来的 就拿微软的官方mvc例子来说明 微软的视图实 ...

  2. 【html】button按钮的一些问题

    问题: button 按钮在不设置 type 属性时,在不同的浏览器作用不一样.举个例子: html: <!doctype html> <html lang="en&quo ...

  3. 【转】JavaScript中的对象复制(Object Clone)

    JavaScript中并没有直接提供对象复制(Object Clone)的方法.因此下面的代码中改变对象b的时候,也就改变了对象a. a = {k1:1, k2:2, k3:3}; b = a; b. ...

  4. css3整理--filter

    只在chrome的少数版本的浏览器中有实现,兼容性差,不适宜应用. filter语法: elm { filter: none | <filter-function > [ <filt ...

  5. How to Debug Enterprise Portal Code in Dynamics AX 2009

    转载 To set up debugging for pages1. Log into the server that is running the AOS.2. Open the Microsoft ...

  6. redis的主从复制部署和使用

    reids一种key-value的缓存数据库目前非常流行的被使用在很多场景,比如在数据库读写遇到瓶颈时缓存且读写分离会大大提升这块的性能,下面我就说说redis的主从复制 首先需要启动多个redis实 ...

  7. Android不规则点击区域详解

    Android不规则点击区域详解 摘要 今天要和大家分享的是Android不规则点击区域,准确说是在视觉上不规则的图像点击响应区域分发. 其实这个问题比较简单,对于很多人来说根本不值得做为一篇博文写出 ...

  8. oracle 查询月份差

    select to_char(add_months(trunc(sysdate),-1),'yyyymm') from dual;

  9. 【Android】Activity生命周期(亲测)

    测试手机:Nexus 5   系统:4.4 一.测试 测试代码: package com.example.androidalarm; import android.app.Activity; impo ...

  10. java实现二叉树查找树

    二叉树(binary)是一种特殊的树.二叉树的每个节点最多只能有2个子节点: 二叉树 由于二叉树的子节点数目确定,所以可以直接采用上图方式在内存中实现.每个节点有一个左子节点(left childre ...