zoukankan      html  css  js  c++  java
  • 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("
    ");
        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

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

     

  • 相关阅读:
    【SCOI 2011】 糖果
    【POJ 3159】 Candies
    【POJ 1716】 Integer Intervals
    【POJ 2983】 Is the information reliable?
    【POJ 1364】 King
    【POJ 1201】 Intervals
    【POJ 1804】 Brainman
    6月10日省中提高组题解
    【POJ 3352】 Road Construction
    【POJ 1144】 Network
  • 原文地址:https://www.cnblogs.com/jessicaxia/p/13176765.html
Copyright © 2011-2022 走看看