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

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

     

  • 相关阅读:
    英语 年份 读法
    香农第二定理的理解
    为什么正规子群在环里的对应概念叫理想,而不叫正规子环呢?
    vue 时间组件限制选择范围
    ubuntu 设置 shell脚本双击运行
    单元测试规范
    vue-element-admin项目配置运行
    SqlServer表字段查询
    git提交部分文件
    Asp.NetCore+Elasticsearch+Kibana日志记录
  • 原文地址:https://www.cnblogs.com/jessicaxia/p/13176765.html
Copyright © 2011-2022 走看看