• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
pealy
博客园    首页    新随笔    联系   管理    订阅  订阅

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的结果:

 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下执行完的效果:

 

 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 单独获取不包含查询字符串的路径部分(该路径不包含?之后的内容)

我们来看下执行效果:

 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, 效果如下:

 

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

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

 

 

posted @ 2020-06-22 14:42  jessicaxia  阅读(234)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3