刚接触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