zoukankan      html  css  js  c++  java
  • Node.js相关总结

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

           node在解析JavaScript,依靠的是什么?

           依靠的是谷歌浏览器中的v8引擎,所以不需要考虑兼容性,node因为是直接用v8引擎去解析,所以没有window对象

    二、那么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还有很多内置的方法,如比较常用的有读文件、写入文件等等。

    node.js的常用方法

    引入模块:var  fs = require('fs')

    fs模块的常用方法:

    / fs.writeFile(file,str,'utf8',function(err){  
    //如果写入成功,这个err为null
    //     if(err){
    //         throw err;    //如果错误,将错误抛出
    //     }
    
    //     // 如果文件不存在,会帮你去创建对应的文件,但是不会创建文件夹
    // })
    
    // 同步写文件
    // fs.writeFileSync(file, data[, options])
    
    // 异步的追加文件
    // fs.appendFile(path, data[, options], callback)
    
    // 同步的追加文件
    // fs.appendFileSync(path, data[, options])
    
    // 异步的创建文件夹
    // fs.mkdir(path,function(err){
    //     console.log(err);   //node会报错,但是错误都不会抛出,不会影响后续代码的执行
    // })
    
    // 同步的创建文件夹
    // fs.mkdirSync(path[, options])
    
    // 异步读文件夹
    // fs.readdir(path[, options], callback)
    //里面的文件以数组的形式表示出来,进行判断,判断是否是文件夹
    // 如果是文件夹,继续读文件夹,如果是文件,直接读文件,然后展示
    
    // 同步的读文件夹
    // fs.readdirSync(path[, options])
    
    // 异步判断文件或者文件夹是否存在
    // fs.access(path[, mode], callback)   能否判断文件夹是否存在
    // fs.access("./data",function(err){   //这个方法是可以判断文件和文件夹是否存在
    //     console.log(err);
    //     console.log('OK');
    // })
    
    // 同步判断文件或者文件夹是否存在
    // fs.accessSync(path[, mode])
    
    //同步读文件
    fs.readFile(file,'utf8',function(err,data){
                response.end(data);
            })
    //异步读文件
    fs.readFilesync(file,'utf8',function(err,data){
                response.end(data);
            })

    五、服务器的搭建

    var http = require("http");   //引入http的模块,用来提供服务
    
    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.end("<h2>hello world</h2>");  
            //结束,结束必须有,不然表示这个请求和响应没有完成
    
            //接口
        if(request.url == "/login.html" && request.method == "GET"){
                response.end("这个是登录界面")
        }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   停止

    简略版(基本硬式步骤)

    var http = require("http");
    var server = http.createServer();
    server.on("request",function(request,response){
    
    })
    server.listen(8888);
  • 相关阅读:
    系统维护相关问题
    Python环境维护
    哈希表解决字符串问题
    论文笔记二:《A Tutoral on Spectral Clustering》
    论文笔记之哈希学习比较--《Supervised Hashing with Kernels》《Towards Optimal Binary Code Learning via Ordinal Embedding》《Top Rank Supervised Binary Coding for Visual Search》
    Java中String、StringBuffer、StringBuilder的比较与源 代码分析
    浙大pat1040 Longest Symmetric String(25 分)
    浙大pat1039 Course List for Student(25 分)
    浙大pat---1036 Boys vs Girls (25)
    百炼oj-4151:电影节
  • 原文地址:https://www.cnblogs.com/gyix/p/10475733.html
Copyright © 2011-2022 走看看