1. Sync和Async
Sync表示同步的意识,程序至上而下执行,Async异步,不用等待上面的运行完成再运行下面的操作。
Sync Example:
var fs=require("fs"); var data=fs.readFileSync('sample.txt'); console.log(data.toString()); console.log("程序执行结束")
执行结果:
Async Example:
var fs=require("fs"); fs.readFile('sample.txt',function(err,data){ if(err) return console.error(err); console.log(data.toString()); }); console.log("非阻塞实例代码运行成功");
执行结果:
2.NodeJS 执行JS脚本 可参考如上Sync, Async Examples.
3.NodeJS创建简单http Server
var http = require('http') http.createServer(function(req,res){ var url=req.url if(url==='/') { res.setHeader('Content-Type','text/plain;charset=utf-8') res.end('起始页') }else if(url==='/next'){ res.setHeader('Content-Type','text/plain;charset=utf-8') res.end('成功跳转') }else if(url==='/tiaozhuan'){ res.statusCode=302 res.setHeader('Loction','/next') console.log('跳转请求') res.end() } }) .listen(3000,function(){ console.log('Server is running') })
执行后可以运行http://127.0.0.1:3000/next的结果:
4.node使用模板引擎
我们先来看下html模板:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{{title}}</title> </head> <body> <p>大家好,我叫:{{ name }}</p> <p>我今年{{ age }}岁了</p> <h1>我来自{{ province }}<h1> <p>我喜欢:{{each hobbies}}{{ $value }}{{/each}}</p> <script> var foo = '{{title}}' </script> </body> </html>
再看下js对模板的调用:
var template =require('art-template') var fs=require('fs') fs.readFile('./res/tpl.html',function(err,data){ if(err){ return console.log('读取内容失败了') } var ret=template.render(data.toString(),{ name:'Jack', age:18, province:'北京市', hobbies:[ '写代码', '唱歌', '打游戏' ], title:'个人信息' }) console.log(ret) })
最后看下node下执行完的效果:
5. nodeJS url模块使用:
var url=require('url') var obj=url.parse('/pinglun?name=火箭队&message=下赛季加油',true) console.log(obj) console.log(obj.query) console.log(obj.pathname)
其中url.parse是将路径转化为对象
obj.query 获取查询字符串对象
obj.pathname 单独获取不包含查询字符串的路径部分(该路径不包含?之后的内容)
我们来看下执行效果:
6. nodeJS 实现Get,Post
Get:
var http=require('http'); var url=require('url'); var util=require('util'); http.createServer(function(req,res){ res.writeHead(200,{'Content-Type':'application/json;charset=utf-8'}); /* res.end(util.inspect(url.parse(req.url,true))); */ var params=url.parse(req.url,true).query; res.write("web site name:"+params.name) res.write(" "); res.write("website url:"+params.url); res.end(); }).listen(3000);
运行完后访问 http://localhost:3000/user?name=test&url=https://www.baidu.com, 效果如下:
Post:
var http=require('http'); var querystring = require('querystring'); var util=require('util'); var postHTML= '<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' + '<body>' + '<form method="post">' + '网站名: <input name="name"><br>' + '网站 URL: <input name="url"><br>' + '<input type="submit">' + '</form>' + '</body></html>' http.createServer(function(req,res){ var body=""; req.on('data',function(chunk){ body+=chunk; }); req.on('end',function(){ body=querystring.parse(body); res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'}); if(body.name&&body.url){ res.write("网络名:"+body.name); res.write("<br>"); res.write("网站URL:"+body.url); }else { res.write(postHTML); } res.end(); }) }).listen(3000);
完后运行,访问效果如下: