• Windows准备Node.js运行与开发环境


    如何在Windows环境下搭建Node.js开发环境:
    1、下载Node.js windows安装版
    http://www.nodejs.org/download/

    2、正常安装完成后,在系统环境变量已经自动加入了Node、NPM目录;
    1)运行cmd
    2)输入 node -v
    正常显示如:v0.10.17
    3)输入 npm -v
    正常显示如:1.3.8

    3、安装Express
    输入命令:npm install express -gd
    -g代表安装到NODE_PATH的lib里面,而-d代表把相依性套件也一起安装。如果沒有-g的话会安装目前所在的目录(会建立一个node_modules的文件夹)

    完成以上步骤表示开发环境已经搭建完成,以下示例为表示如何创建一个Express结构的开发包。
    1、创建存放源代码的目录,比如 mkdir D:Node.js
    2、进入目录,执行命令:express myexpress
    myexpress表示存放真实项目代码的目录,命令执行成功后会按照express目录结构创建一个空项目。

    此时即可执行 node app.js 运行该空项目。

    特别的,如果运行项目时报:cannot find module 'express'错误,可以通过执行 npm link 尝试修复。

    关于代码:

    引入模块

    var express = require('express');
     var app = module.exports = express.createServer();

    require()是node.js提供的函数,可以让你引入其他模块以调用模块的函数和变量,默认下node.js会在$NODE_PATH和目前js所在目录下的node_modules文件夹下去寻找模块。require也可以用来载入自己写的模块哦~这样涉及到node.js的模块机制,后面有机会就在介绍。

    第二行的express.createServer()就是在建立server,而中间的module.exports也是涉及到node.js的模块机制,以后再说。

    express的app.js的详细配置说明

    express.js继承自connect模块,所以如果你的node_modules文件夹下没有connect模块也是不行的。

    设置views路径和模板

    我们再来看下面两行:

    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');


    上面两行是设置views文件夹,即模板文件夹,__dirname是node.js里面的全局变量,即取得执行的js所在的路径,另外__filename是目前执行的js文件名。所以,app.set(‘views’, __dirname + ‘/views’);是设置views的文件夹。

    app.set('view engine', 'jade');是设置express.js所使用的render engine。除了Jade之外,express.js还支持EJS(embedded javascript)、Haml、CoffeScript和jQuerytemplate等js模板。

    app.use配置

    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));

    express.bodyParser()是Connect內建的middleware,设置此处可以将client提交过来的post请求放入request.body中。
    express.methodOverride()也是Connect內建的,可以协助处理POST请求伪装PUT、DELETE和其他HTTP methods。
    app.router()是route requests,但express.js的官方文件是这句可有可无,并且经过测试还真的是这样,不过还是写上吧。
    express.static()也是一个Connect內建的middleware来处理静态的requests,例如css、js、img文件等。所以static()里面指定的文件夹中的文件会直接作为静态资源吐出来。

    app.configure设置

    app.configure('development', function(){
      app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    });
    app.configure('production', function(){
      app.use(express.errorHandler());
    });

    express.errorHandler()是Connect內建的middleware来協助處理例外。這裡也揭露了app.configure()的令一个用法,第一个參數是node.js的環境設定,如此我們就可以設定在不同的執行環境使用不同程度的dump。PS:node.js是透過NODE_ENV這个環境變數来取得環境設定,e.g.:在命令列,NODE_ENV=production node app.js就可以進入production環境。

    路由和request的处理

    ok,下面是nodejs处理request的内容:

    app.get('/', function(req, res){
      res.render('index', {
        title: 'Express'
      });
    });

    上面的代码意思是,get请求根目录则调用views文件夹中的index模板,并且传入参数title为“Express”,这个title就可以在模板文件中直接使用。

    在express中要处理post请求,需要使用app.post()。如下面的代码:

    app.post('/add', function(req,res){
      res.render('add', {
        sum: req.body.a + req.body.b
      });
    });

    前面我们提到了req.body是express.bodyParser()把POST参数处理后的结果。

    另外除了get和post方法,还有app.all()意思就是所有的请求处理。

    添加listen,启动nodejs服务器

    app.listen(3000);
    console.log(
        "Express server listening on port %d in %s mode",
        app.address().port, 
        app.settings.env);

    到目前为止,我们就基本全明白了express配置了,也就不会像以前那样跟别人都写个hello world却不知道各行代码的含义了。

  • 相关阅读:
    node的http与前端交互示例(入门)
    PC监听鼠标和键盘事件,定时无响应退出
    日常问题记录
    基于node.js的websocket 前后端交互小功能
    基于node.js的websocket上传小功能
    阿里云服务器(Linux)上打开新端口
    云服务器初尝试
    wx小程序知识点(八)
    wx小程序知识点(七)
    点绘,线绘,图绘
  • 原文地址:https://www.cnblogs.com/pzrr/p/3298012.html
Copyright © 2020-2023  润新知