《Node.js实战(第2季)》试读感想
Node给JavaScript带来的意义:
作为后端JavaScript的运行平台,Node保留了前端浏览器JavaScript中那些熟悉的接口,没有改写语言本身的任何特性,依旧基于作用域和原型链,区别在于它将前端中广泛运用的思想迁移到了服务器端。
Node.js基于Javascript语言,所以我们不用再单独新学一门新的陌生的语言,从而减低了学习的门槛。它让很多研发可以很方便的迁移到开发Node.js运用中来。
Nodejs并没有重新开发运行时环境,而是选择了目前最快的浏览器内核V8做为执行引擎,保证了Nodejs的性能和稳定性。
Nodejs的开发非常高效,而且代码简单,得益于Nodejs的单线程机制。而Nodejs的另一个特点异步编程,让Nodejs处理IO密集型应用有了明显的优势。用Nodejs比Java做Web开发要高效10倍,比PHP的代码还要简单。
Nodejs的社区在壮大,不仅包的数量在快速增加,而且包的质量也要明显好于其他语言的。很多明星级的包,都是简单而灵巧的,为了开发者的使用习惯而设计。我最常用到的工具包,如socket.io, moment.js, underscore.js, async.js, express.js, bower.js, grunt.js, forever.js…,确实在改变我以前的编程习惯。运用这些包也很方便,我们以async为例:
var async = require('async'); asyncSeries(function(error,results){ if(error) { console.log('error:'+error) } else { console.log(results) } }) function asyncSeries(callback) { async.series({ method1: function(callback) { callback('','method1') }, method2:function(callback) { callback('','method2') }, method3:function(callback) { callback('','method3') } },function(error,results){ callback(error,results); }) }
运行结果:
{ method1: 'method1', method2: 'method2', method3: 'method3' }
事件的编程方式具有轻量级、松耦合、只关注事务点等优势,但是在多个异步任务的场景下,事件与事件之间各自独立,如何协作是一个问题。
从前面代码示例可以看到,回调函数无处不在。这是因为在JavaScript中,我们将函数作为第一等公民来对待,可以将函数作为对象传递给方法作为实参进行调用。
与其他的Web后端编程语言相比,Node除了异步和事件外,回调函数是一大特色。纵观下来,回调函数也是最好的接受异步调用返回数据的方式。但是这种编程方式对于很多习惯同步思路编程的人来说,也许是十分不习惯的。代码的编写顺序与执行顺序并无关系,这对他们可能造成阅读上的障碍。在流程控制方面,因为穿插了异步方法和回调函数,与常规的同步方式相比,变得不那么一目了然了。
在转变为异步编程思维后,通过对业务的划分和对事件的提炼,在流程控制方面处理业务的复杂度与同步方式实际上是一致的。
下面的代码用NODE.JS实现了一个简单的http服务器,运行起来会在3000端口监听http请求,当有http请求来的时候会返回Hi There! 仅此而已.
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(Hi There!\n'); }).listen(3000, '127.0.0.1'); console.log('Server running at http://127.0.0.1: 3000/');
本书试读章节个人认为可以在衍生讲一些关于Node.js下RabbitMQ的库的知识,如:了amqp库。
使用 npm install amqp --save 来安装node-amqp库,推荐使用全局安装!
客户端代码:
var ampq = require('amqp'); var util = require('util'); var connection = ampq.createConnection(); var bStop = false; connection.on('ready', function () { connection.queue('moneyQueue', { durable: true, autoDelete: false }, function (queue) { console.log('Queue ' + queue.name + ' is open!'); queue.subscribe(function (message, header, deliveryInfo) { if (message.data) { var messageText = message.data.toString() console.log(messageText); if (messageText === "quit") bStop = true; } }); }); }); (function keepItRunning() { if (!bStop) setTimeout(keepItRunning, 1000); else connection.end(); })();
如果有在多一些这方面的内容,我个人感觉就更好了!
相关推荐
《Node.js实战(第2版)》是一本深入探讨Node.js技术的实战指南,适合有一定JavaScript基础并希望进一步掌握Node.js开发的读者。本书详细介绍了如何利用Node.js的强大功能进行后端开发,以及如何与其他技术栈配合,...
《Node.js实战》是一本深度剖析Node.js技术的实战教程,旨在帮助读者掌握构建高效、可扩展的服务器端应用所需的知识和技能。本书的核心内容围绕JavaScript的非阻塞I/O模型,利用Node.js的异步事件驱动架构,来实现高...
《Node.js硬实战 115个核心技巧》是一本深度挖掘Node.js技术的书籍,旨在帮助开发者掌握Node.js的核心技能并提升实际开发能力。Node.js是基于Chrome V8引擎的JavaScript运行环境,它以其非阻塞I/O、事件驱动的特性在...
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript开发者可以在服务器端执行代码,打破了传统的JavaScript只能在浏览器端运行的限制。这本《Node.js开发实战详解》电子书,显然是为了帮助那些...
Node.js实战(第2版) 是Node.js的实战教程,涵盖了为开发产品级Node应用程序所需要的一切特性、技巧以及相关理念。 从搭建Node开发环境,到一些简单的演示程序,到开发复杂应用程序所必不可少的异步编程。第2版介绍了...
Full Stack Javascript - Learn Backbone.js, Node.js and MongoDB (APress 2015).epub Learning Node.js for Mobile Application Development (Packt 2015).pdf Microsoft Press Node.js for .NET Developers (2015...
在本资源中,你将学习如何结合 Vue.js 和 Node.js 进行实战项目的开发,具体是构建一个播放器应用。Vue.js 是一个轻量级的前端JavaScript框架,它以其组件化、易上手和高性能而受到广泛欢迎。Node.js 则是一个基于...
Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...
Node.js 是一个开源、跨平台的 JavaScript 运行环境,它允许开发者在服务器端执行 JavaScript 代码。Node.js 使用 V8 引擎,这是 Google 为 Chrome 浏览器开发的高性能 JavaScript 和 WebAssembly 引擎。Node.js 的...
Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...
* 广泛的第三方模块生态系统: Node.js 有一个庞大的第三方模块生态系统,提供了大量的类库和框架来帮助开发者快速构建应用程序。 Node.js 的缺点包括: * 学习曲线陡峭: Node.js 的异步机制和事件驱动机制需要...
Node.js 是一个开源、跨平台的 JavaScript 运行环境,它让开发者可以在服务器端执行 JavaScript 代码。Node.js 使用了 Google V8 引擎,这个引擎是为 Chrome 浏览器设计的,因此 Node.js 具有高性能和高效性的特点。...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,打破了传统的客户端脚本语言限制。在"Node.js开发实战详解"这个资源中,你将深入学习如何利用Node.js的强大功能...