• Node相关


    一、首先我们一起认识node:

      node是一门技术,并不是一门新的语言。是JavaScript运行环境。

    二、那么Node.js与JavaScript的区别是什么?

      本质:

         Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行    

         Node.js是一个可以快速构建网络服务及应用的平台,是用Javascript语言构建的服务平台,可用于后端建立服务器

      区别:     

         Javascript 主要应用前端    是编程语言    客户端编程语言(需要浏览器的javascript解释器进行解释执行)       

         node.js    主要应用后端      1个平台        运行环境(一个基于Chrome JavaScript运行时建立的平台,它是对Google V8引擎进行了封装的运行环境)简单的说node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似javascript的结构语法进行编程,在node.js上运行。

    三、那么node.js有什么优点和缺点呢?

      优点:

        1.事件驱动

        2.异步编程

        3.非阻塞模式的IO

        4.轻量高效

      缺点:

        1.可靠性低

        2.单进程,单线程,只支持单核cpu,不能充分的利用多核cpu服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。

    四、node.js的语法

    node.js的语法就是JavaScript的语法,基本语法与 javascript 一样,这里我们使用exports导出一个函数,然后再另一文件中通过require导入入一个模块例如 :

      在 a.js 中写一个函数var hello=function(){    console.log('hello')}export.hello=hello;

      在 b.js 中 需要用hello这个函数var a=require('a');a.hello()

    什么是模块化?

      把代码全部拆分成模块,主要是方便管理和维护,一个文件就是一个模块。

    在node中,有一些内置的模块(包),通过require函数引入:

      fs 文件系统

      http 创建服务

      path 路径

      querystring 参数模块

      url 地址栏

      当然也可以自定义模块

    当然,node.js还有很多内置的方法,如比较常用的有读文件、写入文件等等。

    var fs = require("fs");
    
    
    // 异步写文件
    var obj = {
        "uname" : "admin",
        "upassword" : "admin" 
    }
    var arr = [];
    // su shu 
    arr.push(obj);
    var obj2 = {
        "uname" : "admin2",
        "upassword" : "admin2" 
    }
    arr.push(obj2)
    
    var str = JSON.stringify(arr);
    fs.writeFile('./data/03.json',str,'utf8',function(err){   //如果写入成功,这个err为null
        // console.log(err);
        if(err){
            throw err;    //如果错误,将错误抛出
        }
        console.log('文件写入成功')
    
    
        // 如果文件不存在,会帮你去创建对应的文件,但是不会创建文件夹
    })
    
    // 同步写文件
    fs.writeFileSync(file, data[, options])
    
    // 异步的追加文件
    fs.appendFile(path, data[, options], callback)
    
    // 同步的追加文件
    fs.appendFileSync(path, data[, options])
    
    fs.appendFile("./data/04.json","hello world","utf8",function(err){
        console.log(err);
        console.log('OK')
    })

    五、用node.js创建服务器

    了解了node.js的相关知识,知道了一些模块和方法,那么如何运用node.js创建一个服务器呢:

    var http = require("http");   //引入http的模块,用来提供服务
    var fs = require("fs");
    
    var server = http.createServer();    //创建一个服务器
    
    
    
    //server监听request事件,callback
    server.on('request',function(request,response){
    
        response.writeHead(200,{"Content-Type" : "text/html;charset=utf8"});
        // 注意:图片,script,css,文本,html都要与之对应
        // response.write("<h1>hello world</h1>");
        // response.write("<h1>hello world</h1>");
        // response.write("<h1>hello world</h1>");
        // // 输出对应的中文的时候,要有对应的格式和对应的编码
    
        // response.write("<h1>你好</h1>");
    
    
    
        // response.end("<h2>hello world</h2>");   //结束,结束必须有,不然表示这个请求和响应没有完成
        // response.end("<h2>hello world</h2>");
    
        // console.log(request.method);
        // console.log(request.url);
    
        if(request.url == "/login.html" && request.method == "GET"){
            // response.end("这个是登录界面")
            fs.readFile("./login.html",'utf8',function(err,data){
                response.end(data);
            })
    
    
        }else if(request.url == "/register" && request.method == "GET"){
            response.end("这个是注册界面")
    
        }
        else if(request.url == "/login" && request.method == "POST"){
            response.end("登录成功")
        }
    
    
        else {
            response.end("404");
        }
    
    
    
    
    });
    
    
    
    // 服务搭建完成,监听端口
    server.listen(8888);    //ctrl+c   停止
    console.log('服务运行在localhost:8888')
  • 相关阅读:
    React中条件渲染
    React 中this.setStat是批量执行的, 它发现做三次是多余的,所以只执行一次
    React 修改获取state中的值
    POJ3417 Network (树上差分)
    POJ3349 Snowflake Snow Snowflakes(Hash)
    Codeforces Round #630 (Div. 2) C. K-Complete Word(字符串)
    Codeforces Round #630 (Div. 2) B. Composite Coloring(数论)
    Codeforces Round #630 (Div. 2) A. Exercising Walk(水题)
    Codeforces Round #629 (Div. 3)/1328 E.Tree Queries(LCA)
    洛谷P5836 [USACO19DEC]Milk Visits S(LCA/并查集)
  • 原文地址:https://www.cnblogs.com/lznzxy/p/10450980.html
Copyright © 2020-2023  润新知