NodeJS 学习笔记

1. Sync和Async

Sync表示同步的意识,程序至上而下执行,Async异步,不用等待上面的运行完成再运行下面的操作。

Sync Example:

var fs=require("fs");

var data=fs.readFileSync('sample.txt');
console.log(data.toString());
console.log("程序执行结束")
View Code

执行结果:

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("非阻塞实例代码运行成功");
View Code

执行结果:

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')
})
View Code

执行后可以运行http://127.0.0.1:3000/next的结果:

NodeJS 学习笔记_第1张图片

 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>
View Code

再看下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)

})
View Code

最后看下node下执行完的效果:

NodeJS 学习笔记_第2张图片

 

 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)
View Code

其中url.parse是将路径转化为对象

obj.query 获取查询字符串对象

obj.pathname 单独获取不包含查询字符串的路径部分(该路径不包含?之后的内容)

我们来看下执行效果:

NodeJS 学习笔记_第3张图片

 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("\n");
    res.write("website url:"+params.url);
    res.end();
    
}).listen(3000);
View Code

运行完后访问 http://localhost:3000/user?name=test&url=https://www.baidu.com, 效果如下:

NodeJS 学习笔记_第4张图片

 

Post:

var http=require('http');
var querystring = require('querystring');
var util=require('util');

var postHTML=
'菜鸟教程 Node.js 实例' +
  '' +
  '
' + '网站名:
' + '网站 URL:
' + '' + '
' + '' 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("
"); res.write("网站URL:"+body.url); }else { res.write(postHTML); } res.end(); }) }).listen(3000);
View Code

完后运行,访问效果如下:

 NodeJS 学习笔记_第5张图片

 

你可能感兴趣的:(NodeJS 学习笔记)