node.js学习要点
2014-02-24 16:23
330 查看
安装过程请自己百度,并且假设读者你已经基本掌握js知识,本文只写一下学习node.js的要点
1、 hello world
创建hello.js, 用node hello.js命令启动服务
在浏览器中输入 http://localhost:12345/hello.js 访问
2、获取GET请求
在浏览器中输入http://localhost:12345/hello.js?r=adc&q[0]=2&q[1]=3
得到如下结果:
3 获取post参数
在浏览器输入http://localhost:12345, 出来输入表单,输入test, get点击提交按钮,得到如下结果
4 读写文件
整个文件读:
整个文件写:
使用文件流读写文件
r :以读取模式打开文件。
r+ :以读写模式打开文件。
w :以写入模式打开文件,如果文件不存在则创建。
w+ :以读写模式打开文件,如果文件不存在则创建。
a :以追加模式打开文件,如果文件不存在则创建。
a+ :以读取追加模式打开文件,如果文件不存在则创建。
使用管道读写文件
详见Nodejs读写文件介绍
5 上传文件
详细参考http://wangdf-jee.iteye.com/blog/1396734
使用Express框架上传文件更简单,详细见:http://stackoverflow.com/questions/17218506/file-upload-to-a-node-js-server
6 操作数据库
mysql
mongodb
详见 https://github.com/mongodb/node-mongodb-native
7 常用框架
Express
英文文档 http://expressjs.com/
中文文档 http://express.jsbin.cn/
rrestjs
中文文档http://rrestjs.duapp.com
Geddy
英文文档 http://www.geddyjs.org/
作者的弄了一个很好玩的微信公众号:中国IT热点,微信ID: xiunen_z, 二维码如下:
1、 hello world
创建hello.js, 用node hello.js命令启动服务
var http = require("http"); http.createServer(function(req, res){ res.writeHeader(200,{"Content-Type":"text/html"}); res.write('hello world'); //输出hello world res.end(); //调用end函数结束输出 }).listen(12345);//监听12345端口
在浏览器中输入 http://localhost:12345/hello.js 访问
2、获取GET请求
var http = require("http"); var url = require("url"); var querystring = require("querystring"); http.createServer(function(req, res){ res.writeHeader(200,{"Content-Type":"text/html"}); res.write(req.url); //req.url获取请求的URL var url_obj = url.parse(req.url); //解析url获取参数,url_obj.pahtname console.log(url_obj); var queries = querystring.parse(obj.query); //获取请求的参数对象 console.log(queries); res.end(); }).listen(12345);
在浏览器中输入http://localhost:12345/hello.js?r=adc&q[0]=2&q[1]=3
得到如下结果:
3 获取post参数
var http = require("http"); var querystring = require("querystring"); http.createServer(function(req, res){ res.writeHeader(200,{"Content-Type":"text/html"}); res.write('<form method="post" action="/post?r=test"><input type="text" name="name"><input type="password" name="pwd"><input type="submit"></form>'); var post_data = ""; req.setEncoding("utf8"); req.addListener('data', function(postDataChunk) {//监听post提交 post_data += postDataChunk; console.log("data:"+post_data); }); req.addListener('end', function() {//post提交完毕 var queries = querystring.parse(post_data); console.log(queries); }); res.end(); }).listen(12345);
在浏览器输入http://localhost:12345, 出来输入表单,输入test, get点击提交按钮,得到如下结果
4 读写文件
整个文件读:
var fs = require("fs"); fs.readFile("a.txt",function(err,data){ //a.txt是要读的文件名,data是读出来的文件内容 if(err) throw err; console.log(data); });
整个文件写:
var fs = require("fs"); fs.writeFile("b.txt","hello world", function(err){ //b.txt表示写入的文件名,如果没有,就会创建这个文件,“hello world”是写入的内容,会覆盖掉老内容 if(err) throw err; });
使用文件流读写文件
var fs = require("fs"); var fReadStream = fs.createReadStream("a.txt",{flags:"r",encoding:"utf8",mode:0666}); fReadStream.on('data',function(data){ console.log("data:"+data); }); fReadStream.on('end',function(){ console.log("read end"); }); var fWriteStream = fs.createWriteStream("b.txt",{flags:"a",encoding:"utf8",mode:0666}); fWriteStream.write("write append"); fWriteStream.end();flags 可以是以下值。
r :以读取模式打开文件。
r+ :以读写模式打开文件。
w :以写入模式打开文件,如果文件不存在则创建。
w+ :以读写模式打开文件,如果文件不存在则创建。
a :以追加模式打开文件,如果文件不存在则创建。
a+ :以读取追加模式打开文件,如果文件不存在则创建。
使用管道读写文件
fReadStream.pipe(fWriteStream); fWriteStream.on('close',function(){ console.log('copy over'); });
详见Nodejs读写文件介绍
5 上传文件
var http = require("http"); var formidable = require('formidable'); var fs = require("fs"); http.createServer(function(req, res){ res.writeHeader(200,{"Content-Type":"text/html"}); switch(req.url){ case "/x": var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files){//get upload files with parameter files //files.f 可以获得name="f"的文件的相关信息 }); break; default: res.write('<html>'); res.write('<head>'); res.write('</head>'); res.write('<body>'); res.write('<form action="x" method="post" enctype="multipart/form-data">'); res.write('<input type="file" name="f">'); res.write('<input type="submit">'); res.write('<form>'); res.write('</body>'); res.write('</html>'); } res.end(); }).listen(12306);
详细参考http://wangdf-jee.iteye.com/blog/1396734
使用Express框架上传文件更简单,详细见:http://stackoverflow.com/questions/17218506/file-upload-to-a-node-js-server
6 操作数据库
mysql
var http = require("http"); var sys = require("sys"); var mysql = require("mysql"); var conn = mysql.createConnection({ host:"localhost", user:"root", password:"123", database:"node_test", port:3306 }); conn.connect(); conn.query("select * from test",function(err, rows, fields){//sql语句,可以是增删改查的sql,rows是返回的结果,fields是列相关的信息 if(err){ console.log("error"); conn.end(); } console.log(rows); console.log(fields); }); conn.end();详细参考:http://blog.fens.me/nodejs-mysql-intro/
mongodb
var mongodb = require("mongodb"); var server = new mongodb.Server("127.0.0.1",27017,{}); var db = new mongodb.Db("node_test",server,{}); db.open(function(err, client){ if(err){ return false; } var collection = new mongodb.Collection(client,'user'); collection.insert({x:1,y:"hello world",_id:123456});//插入 collection.insert({x:2,y:"hello somebody",_id:123456});//插入或更新 collection.remove({x:1});//删除 //update可以有四个参数,第一个是要跟新的对象的查询参数,第二个是要跟新的key以及对应的value,第三个是upsert:true|false,是否在没有查找到对象时插入新对象,第四个multi:true|false, 是否更新多列 collection.update({x:2},{$set:{y:"hello kitty"}}); collection.find({x:1}).toArray(function(error, items){//查询,items为查询结果数组 console.log(items); }); });
详见 https://github.com/mongodb/node-mongodb-native
7 常用框架
Express
英文文档 http://expressjs.com/
中文文档 http://express.jsbin.cn/
rrestjs
中文文档http://rrestjs.duapp.com
Geddy
英文文档 http://www.geddyjs.org/
作者的弄了一个很好玩的微信公众号:中国IT热点,微信ID: xiunen_z, 二维码如下:
相关文章推荐
- Node.js 学习(七)Node项目部署工具之forever
- Node.js学习 - Function
- Node.js学习笔记
- node.js 学习笔记001 :Hello,world !
- Vue.js 学习要点总结(一)
- 从零开始学习Node.js例子四 多页面实现数学运算
- Node.js学习笔记之一
- 重零开始学习Node.js--02
- Node.js 简单学习
- 从零开始学习Node.js例子九 设置HTTP头
- Node.js学习-----------搭建一个简单的HTTP服务器
- node.js 和 express 框架学习笔记(2)
- Node.js文档学习笔记(1)
- Node.js学习——helloworld
- node.js学习-1
- node.js 学习问题小结
- Node.js学习资料整理
- Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)
- 【收藏学习笔记】使用supervisor提高node.js调试效率
- 推荐几个学习Node.js的站点