• node.js小整理(一)


    node.js是一个基于Chrome v8引擎的JavaScript运行环境

    之前我们编写的JavaScript代码都是在浏览器中运行的,所以我们可以直接在浏览器中敲代码,然后直接运行。现在学习node.js,代码不能直接在浏览器运行,而要在node环境中运行

    node特点与优势

        特点:事件驱动、无阻塞的io模型

        优势:轻量高效

    命令行模式和Node交互模式

         命令行模式:看到类似C:>是在Windows提供的命令行模式,如下

               

                在命令行模式下 可以输入node 文件名.js执行一个文件

                 cd        // 切换目录                        cd 文件夹       // 进入目标文件

                 cd ..    //  返回上一级                    d:                  //  进入D盘

                 md  新建文件夹名称    // 新建文件夹 (当前路径指向哪里 文件夹就存储在哪里 比如C:UserAdministrator> md h  新建的文件夹h存储在C盘的User下的Administrator中)  

                 rd 文件夹名称  //删除文件夹

          node交互模式:看到 是在node交互模式下,如下

                 

                 在node交互模式下 我们可以输入JavaScript代码立刻执行

        这两种模式下运行的javascript代码有不同之处:node交互环境会把每一行javascript代码自动打印出来,但是直接运行javascript文件却不会,除非加上console.log自己打印出来

    进入当前文件夹运行javascript代码的两种方法:

    •  找到当前项目文件夹并打开——>Shift+鼠标右键——>点击在此处打开命令窗口——>node+空格+文件名.js运行文件
    •  Windown+r打开cmd命令面板——>输入cd+指定文件夹(cls可以清除当前屏幕)

    模块系统:

      一个文件就是一个模块,模块有作用域,在一个模块中的变量和函数对象都属于这个模块,对外是不可见的。node属于模块化的开发

      node.js常用模块:

    • http模块  引用:var http = require("http")  作用:可编写一个http协议客户端程序(浏览器),也可以编写一个基于http协议的服务端程序(apache)
    • url模块  引用:var url = require("url")  作用:将url地址各部分转换为js对象属性
    • querystring模块  引用:var querystring = require("querystring")  作用:将查询字符串转换为对象
    • fs模块  引用: var fs = require("fs")  作用:读取文件

              异步读文件:readFile(path,utf8,回调函数)           

    var fs = require("fs");
    fs.readFile("test.js",utf8,function(err,data){  //test.js必须在当前目录下
      if(err){
         throw err;
      else{
         console.log(data)
      }
    });

       同步读文件:readFileSync(path,utf8)

    var fs = require("fs")
    var data = readFileSync("text.html",utf8);
    console.log(data);

     异步写文件

    fs.writeFile("文件路径","写入的内容",utf8,(err)=>{  //如果文件不存在,会自动创建文件  但是不能创建文件夹
    console.log(err); //当输出为null表示成功
    }

    同步写文件

    fs.writeFileSync("文件路径","同步写入",utf8)

      在fs模块中,提供同步方法是为了方便使用,那么到底使用同步还是异步呢?node环境执行的javascript代码是服务端代码,所以绝大部分需要在服务器运行反复执行业务逻辑的代码,必须使用异步代码

    下面了解一下下几个概念

     IO:也就是input和output电脑的输入输出,由于网络中传输的都是字符串,io在服务器中可以理解为读写操作

     并发:在一段时间内有几个程序都是属于启动到运行完毕之间的状态

    异步分两种:异步io和异步非io

       异步io:想要了解这个概念,首先知道进程和线程,进程是为运行当中的应用程序所提供的运行环境,一个运行当中的应用程序,至少会有一个进程所对应。线程是用来运行程序中的代码的,一个线程只能在一个时间内做一件事。node是单线程的异步操作 是用异步代替了多线程(多线程调试复杂) 异步的io操作:ajax 网络操作 fs

      异步的非io操作:setTimeout setInterval(只有这两个)

       node程序运行过程:主线程一直在循环,知道队列里面没有代码,程序就结束了 子线程一直在线程池里休息,用来执行异步的io操作  子线程:a.在线程池里休息  b.异步io进来,解决异步io操作  c.子线程会把异步io的操作结果callback到队列中  d.继续回线程中休息

     事件驱动:node执行代码时,会把代码放入队列中,事件循环程序把队列同步代码先执行,同步代码执行后才会执行异步代码

     一个简单服务器的搭建  

    const http = require("http"); //引入http模块
    http.createServer(function(req,res){ //开启本地http服务 监听相应端口
      res.writeHead(200,{"Content-Type" : "text/html;charset=utf8"})
      res.end("我是一个服务器");  //结束请求 只能有一个
    }).listen(3000);

       

  • 相关阅读:
    HEVC软件记录
    怪诞行为学
    docker学习实践之路[第一站]环境安装
    centos系统(ssh)登录缓慢(输入账户密码后需要等待若干时间)
    CentOS7.x编译安装nginx,实现HTTP2
    vs 2017 IIS EXPRESS 增加局域网访问
    nginx在centos 7中源码编译安装【添加grpc的支持】
    docker学习实践之路[第五站]mysql镜像应用
    docker学习实践之路[第四站]利用pm2镜像部署node应用
    docker学习实践之路[第三站]node站点部署
  • 原文地址:https://www.cnblogs.com/jrrrrr/p/9300452.html
Copyright © 2020-2023  润新知