Node.js

作者: LorenaLu | 来源:发表于2017-05-12 09:04 被阅读0次

    官网:https://nodejs.org/en
    cmd里面输入:node -v npm -v 或者在文件空白处Shift+右键打开终端
           进入node Ctrl+c两次退出 退出多行模式Ctrl+D
    node+脚本名称

    Paste_Image.png Paste_Image.png

    Windows里面新建的文件不能叫node.js
    1、nodejs介绍:
    (1)简单的说 Node.js 就是运行在服务端的JavaScript。
    (2)Node.js 是一个基于 Chrome V8 引擎的JavaScript 运行环境。
    (3)Node.js 使用了一个事件驱动、非阻塞式I/O 的模型,使其轻量又高效。
    (4)Node.js 的包管理器 npm,是全球最大的开源库生态系统。node所有的模块,都可以在npm中找到并下载使用。
    (5)Node.js全面支持ES6。
    2、nodejs环境配置:环境包下载地址:https://nodejs.org/en/download/
    3、基础使用:运行node文件方法:方法一:在终端中,进node文件所在的文件夹,使用node+文件名称,即可执行该文件;方法二:使用编译器提供的运行工具执行文件
    4、设置一个基础的http服务器:引入http模块,根据请求路径返回不同的值
    (1)引入http模块:var http = require("http");
    (2)创建请求服务:1)回调函数两个参数req:请求对象res:响应对象;2)获取请求路径req.ur ;3)向浏览器发送数据res.write(‘要发送的数据’);4)断开浏览器和服务器的链接 res.end(‘要发送的数据,必须是字符串’)

    var server = http.createServer(function (req, res) {
     /*
     * req: 请求对象(来自浏览器)
     * res:响应对象(服务器返回的数据)
     * */
     // 获取请求内容
     // url:请求的地址
     // method:请求方法}
    

    (3)监听服务器端口:server.listen(端口号)

    示例代码
    
    var http = require("http");
    var server = http.createServer(function (req, res) {
     /*
     * req: 请求对象(来自浏览器)
     * res:响应对象(服务器返回的数据)
     * */
     // 获取请求内容
     // url:请求的地址
     // method:请求方法
     console.log(req.url);
     // 判断访问的是否是根目录
     if (req.url == '/quan') {
     res.write('root');
     } else if (req.url == '/index.html') {
     res.write(''<a>首页</a>');
     } else {
     res.write('404');
     }
     // 向前台响应内容
     // 向前台发送内容(可以发送多条内容)
     res.write('ahahaha');
     res.write('ooooo\n');
     // end()方法:1、结束这次响应;2、返回内容
     // 只接受字符串
     res.end('hello');
    });
    server.listen(8080);
    

    5.http模块接收GET请求

    // 如果客户端请求的是:index.html\login.html,则发送对应的页面
    // 如果请求的是login接口,则获取接口参数,验证用户名和密码
    
    var http = require('http');
    var fs = require('fs');
    var url = require('url');
    
    var server = http.createServer(function (req, res) {
    
        var urlObj = url.parse(req.url, true);
        console.log(urlObj);
        if (urlObj.pathname == '/index.html') {
            var rs = fs.createReadStream('./index.html');
            rs.pipe(res);  
        } else if (urlObj.pathname == '/login.html') {
            fs.createReadStream('./login.html').pipe(res);
        } else if (urlObj.pathname == '/login') {
            console.log('触发路由');
        //    判断:user字段值是123,pass字段值是321,表示通路成功,向前端返回登陆成功的数据,否则返回登录失败的数据
            if (urlObj.query.user == '123' && urlObj.query.pass == '321') {
                res.write('{"des" : "登陆成功"}');
    
                res.end();
            } else {
                res.write('{"des" : "登陆失败"}');
                res.end();
            }
        }
    
    });
    
    server.listen(8888, function () {
        console.log('success');
    })
    

    6.http模块接受post请求参数

    var http = require('http');
    var url = require('url');
    var fs = require('fs');
    var qs = require('querystring');
    var server = http.createServer(function (req, res) {
        /*
        var urlObj = url.parse(req.url, true);
        if (urlObj.pathname == '/enter.html') {
            fs.createReadStream('./enter.html').pipe(res);
        } else if (urlObj.pathname == '/login') {
            // console.log(urlObj.query);
        //    post提交数据是通过管道流的方式提交给服务器的
            req.on('data', function (chunk) {
                // console.log(chunk.toString());
                // 因为通过chunk获取到的数据是一个参数字符串,所以需要借助querystring下的parse方法把参数字符串换换位对象,以方便获取到客户端传上来的参数。
                var str = chunk.toString();
                var obj = qs.parse(str);
                console.log(obj);
            });
        } else if (urlObj.pathname != '/favicon.ico') {
           var path = '.' + urlObj.pathname;
    
            var bol = fs.existsSync(path);
            if (bol) {
                var rs = fs.createReadStream(path);
                rs.pipe(res);
            }
    
        }
    
        */
    
        var urlObj = url.parse(req.url);
        var path = '.' + urlObj.pathname;
        var bol = fs.existsSync(path);
        if (bol) {
            fs.createReadStream(path).pipe(res);
        } else {
            res.statusCode = 404;
            fs.createReadStream('./notFound.html').pipe(res);
        }
    });
    
    server.listen(8888, function () {
        console.log('success');
    });
    

    相关文章

      网友评论

        本文标题:Node.js

        本文链接:https://www.haomeiwen.com/subject/zwdmtxtx.html