好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Express作为Node.js的开发框架

Express作为Node.js的开发框架

跻身于脚本语言世界的一等公民的行列,官网: http://www.nodejs.org 。

    Express作为Node.js的开发框架,目前也是最稳定,使用最广泛,而且Node.js官方推荐的唯一一个Web开发框架,毫无疑问首选开发框架就是它了,官网: http://expressjs.com 。

    那么接下来,构建一个node.js+express的开发环境将是一切的开始。

    系统环境:windows8(32位),windows7(32位)

     1.安装node.js。

       进入官网的下载地址: http://www.nodejs.org/download/  。

       选择Windows Installer或者选择 Windows Installer (.msi) 32-bit,下载安装包。

       下载完成后,双击安装,点击Next(如下图)。

     

       必然是为“I accept the terms in the License Agreement”打上勾(如下图)。

  

       选择安装路径(如下图)。

  

        查看并可修改将被安装的功能(如下图)。

       默认安装:

           Node.js运行环境,必装,不解释。

           npm包管理器,用来安装第 三方的P ack age,Express就是 。

           Online document shortcuts就是在安装中,会在开始菜单的Node.js项下产生一个在线文档的链接。

           Add to PATH就是在安装完后,将Node.js的安装目录添加到环境变量Path中,那么,在命令行中的任何路径下运行node命令。

           建议:请保持默认安装。

  

       接下来,选择“Instal”,进行安装。

  

 安装完成后,在命令行中输入node -v,看到版本号,则安装成功。

  

     2.安装node.js。

       通过nmp包管理器进行安装,安装分为:

           全局安装:自动安装到“C:\Users\[当前用户]\AppData\Roaming\npm”下,并且自动将路径添加到环境变量“Path”中。

           本地安装:安装到当前目录下,不会将路径添加到环境变量“Paht”中。

       为了方便使用并且能在命令行中的任意路径下运行“ express ”命令,首选全局安装。

       OK!现在就在命令行中输入“npm install -g express”。

       注:"-g"就是全局安装选项,没有这个就是本地安装。

       稍等片刻后安装完成,然后就可以在命令行中输入“express --help”,查看帮助信息。

  

至此,环境安装完成。

^-^

 

NodeJs:基于Provider模式的推送服务器实现

 

背景

企业应用中会有这样的需求,显示最新的xxx信息,如:销售信息、考核信息和公告信息等等。大的方向有两种模式:push和polling。因为刚学NodeJs,因此就用NodeJs简单的实现一下。

思路

整个系统可以分为两部分:一、通信;二、最新消息获取。

通信部分可以采用: http://socket.io/ 。

最新消息获取部分为了支持一定的可扩展性,可以定义一个Provider接口,接口签名如下:

1、method:getFreshMessage(callback),示例:

 1  provider.getFreshMessage( function   (message) {
  2      socket.emit('message' , message);
  3  });

2、event:message,示例:

 1  provider.on('message',  function   (message) {
  2      io.sockets.emit('message' , message);
  3  });

实现(  代码下载 )

我们可以实现一个基于文件的Provider,思路是监听文件的变化。

FileProvider.js

  1   var  fs = require('fs' );
   2   var  events = require('events' );
   3  
  4   var  FileProvider =  function   (fileName, listener) {
   5       var  me =  this  ;
   6  
  7      me.fileName =  fileName;
   8  
  9       if   (listener) {
  10          me.on('message' , listener);
  11       }
  12  
 13      fs.watchFile(me.fileName,  function   (curr, prev) {
  14          me.getFreshMessage( function   (message) {
  15              me.emit('message' , message);
  16           });
  17       });
  18   };
  19  
 20  FileProvider.prototype =  new   events.EventEmitter();
  21  
 22  FileProvider.prototype.getFreshMessage =  function   (callback) {
  23       var  me =  this  ;
  24  
 25      fs.readFile(me.fileName, 'utf8',  function   (err, data) {
  26           callback(data);
  27       });
  28   };
  29  
 30  module.exports = FileProvider;

app.js

  1   var  io = require('socket.io').listen(8888 );
   2   var  FileProvider = require('fresh.message' ).FileProvider;
   3   var  filePath = 'E:/node_study/socket_study/message.txt' ;
   4  
  5   var  provider =  new   FileProvider(filePath);
   6  
  7  provider.on('message',  function   (message) {
   8      io.sockets.emit('message' , message);
   9   });
  10  
 11  io.sockets.on('connection',  function   (socket) {
  12      provider.getFreshMessage( function   (message) {
  13          socket.emit('message' , message);
  14       });
  15  });

index.html

  1   <!  DOCTYPE html  > 
  2   <  html   xmlns  ="http://www.w3.org/1999/xhtml"  > 
  3   <  head  > 
  4       <  meta   http-equiv  ="Content-Type"   content  ="text/html; charset=utf-8"   /> 
  5       <  title  ></  title  > 
  6   </  head  > 
  7   <  body  > 
  8       <  div  ></  div  > 
  9   </  body  > 
 10   </  html  > 
 11   <  script   src  ="socket.io/socket.io.js"  ></  script  > 
 12   <  script  > 
 13       var   socket   =   io.connect(  '  http://localhost:8888  '  );
  14       socket.on(  '  message  '  ,   function   (message) {
  15           document.body.innerHTML   =   message;
  16       });
  17   </  script  > 

运行效果

备注

NodeJs确实是一种值得玩味的平台,简单的学习就可以开发出强大的应用。

 

 

标签:  javascript ,  web

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Express作为Node.js的开发框架的详细内容...

  阅读:32次