Nodejs学习笔记之express

刚接触nodejs,看的书籍是《Node.js入门经典.2013.pdf》,

写下学习笔记,以后参考好用

本地环境  win7  nodejs v0.10.29  express 4.9.0

环境搭建,略。


01.Hello World之中文乱码,学习一门语言第一个当然是Hello World!,当然后续肯定会有中文乱码问题

var http = require("http");
http.createServer(function(req,res){
	res.writeHead(200,{"Content-Type":"text/html;charset:utf-8"});
	res.write('<!doctype html><html><head><meta  charset=utf-8" /><title>node</title></head><body>');
	res.end("Hello World! 我的NodeJs!\n</body></html>");
}).listen("3001","127.0.0.1");
console.log("Server running at http://127.0.0.1:3001/");



乱码问题解决方案
1.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2.response.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
我这里2个都写了,如果还未解决,看看你的那个js文件的编码集是不是utf8,如不是转成utf8即可。


02.npm模块安装,太多描述意义不大,可参考文章末尾提供的书籍
安装模块
node install [moduleName] [-g全局安装]
使用模块
var model = require("modelName");
查找文档
npm docs [model_name]
npm bugs [model_name]查看项目bug
npm edit [model_name]  阅读源代码


03.http服务器,解析
//创建新的web服务器
var http = require("http");
http.createServer
//截取url模块
var url = require('url');
var reqUrl = "www.baidu.com:8080/abc/cc.jsp";
url.parse(reqUrl).hostname;
url.parse(reqUrl).port;
url.parse(reqUrl).pathname;



04.express jade模块构建站点
jade模版使用,略
关于express使用之中遇到的问题个人对某些代码的理解
express [projectname]  创建默认工程
cd [projectname]
npm install  安装依赖module
贴下一段代码,文章末尾有下载连接
app.js
//1.声明依赖module
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views')); //设置views的目录
app.set('view engine', 'jade');  //设置模版类型

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users); //这里引用了自己定义的users.js这个模块

//添加路由, 注意路由要添加在404的前面,否则会404(我这个版本是这样的)
app.get("/about",function(req,res){
	res.send('Hello World!');
});
app.get("/contact",function(req,res){
	res.render('contact.jade',{title:'no title'});
});
app.get("/product",function(req,res){
	res.render('product.jade',{title:'no title'});
});

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}


// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});

module.exports = app;
app.listen(3000);
console.log('server start...');



users.js代码
var express = require('express');
var router = express.Router();


/* GET users listing. */
router.get('/', function(req, res) {
  res.send('respond with a resource');
});


router.get('/:id', function(req, res) {
  var id = req.params.id;<span style="white-space: pre;">	</span>//request参数接收
  var user = [];
  if(id==1){
<span style="white-space: pre;">	</span>  user = {id:1,name:'张三'};
  }else if(id==2){
<span style="white-space: pre;">	</span>  user = {id:2,name:'李四'};
  }else{
<span style="white-space: pre;">	</span>  user = {name:'用户不存在'};
  }
  res.render('user.jade',{title:'用户信息',user:user});
});
module.exports = router;


然后运行node app.js 效果图如下




本工程源码下载

http://download.csdn.net/detail/wang_situ/8013463






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值