`
wangmuming1122
  • 浏览: 11266 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

《Node.js实战(第2季)》试读感想

 
阅读更多

                                                 《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版)PDF&源码.zip

    node.js实战(第2版)PDF【内容可以编辑】& 对应的源码。

    Node.js 实战

    《Node.js 实战(双色)》通过8 个实例讲解了Node.js 在实战开发中的应用,涉及Node.js 常用框架、非关系型数据库、关系型数据库、运维命令和网络安全等内容。章节按照从简单到复杂的难度排序,每一章都通过一个有趣...

    node.js实战

    node.js实战,node.js实战node.js实战node.js实战node.js实战node.js实战

    node.js实战 pdf+源码

    本书是Node.js实战教程,涵盖了未开发产品级Node应用程序所需要的一切特性、技巧以及相关理念。

    Node.js实战第2版

    Node.js实战(第2版) 是Node.js的实战教程,涵盖了为开发产品级Node应用程序所需要的一切特性、技巧以及相关理念。 从搭建Node开发环境,到一些简单的演示程序,到开发复杂应用程序所必不可少的异步编程。第2版介绍了...

    Node.js(node-v16.15.1-win-x64.zip)

    Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...

    Node.js英文书籍2015出版共9本(一次下载)

    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...

    Node.js(node-v16.15.1-win-x86.zip)

    Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...

    微信小程序云开发(SpringBoot+node.js项目实战)

    微信小程序云开发(SpringBoot+node.js项目实战)

    Node.js(node-v16.15.1.pkg)

    Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...

    koa 与 node.js 开发实战2

    它扩充了JavaScript的应用范围,使JavaScript也能像其他语言一样操作各种系统资源,因此,前端工程化开发的大量工具都开始运行在Node.js环境中。由于Node.js采用事件驱动、非阻塞I/O和异步输出来提升性能,因此大量I...

    Node.js开发实战教程(慕课版)-习题参考答案.doc

    Node.js开发实战教程(慕课版)-习题参考答案.doc

    Node.js开发实战详解源代码

    Node.js开发实战详解源代码Node.js开发实战详解源代码Node.js开发实战详解源代码

    koa 与 node.js 开发实战完整版

    它扩充了JavaScript的应用范围,使JavaScript也能像其他语言一样操作各种系统资源,因此,前端工程化开发的大量工具都开始运行在Node.js环境中。由于Node.js采用事件驱动、非阻塞I/O和异步输出来提升性能,因此大量I...

    Nodejs实战第2季

    Nodejs实战第二季,Nodejs实战,通过7个实例分别讲解了Node.js在实战开发中的应用,这些章节既涉及Docker、Koa 等最新技术,也涉及OAuth2、命令行工具、消息队列、单元测试、编写C/C++模块等实战中经常会遇到的问题...

Global site tag (gtag.js) - Google Analytics