zoukankan      html  css  js  c++  java
  • 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);

       

  • 相关阅读:
    开源项目
    [Accessibility] Missing contentDescription attribute on image [可取行]失踪contentDescription属性图像
    Android 布局 中实现适应屏幕大小及组件滚动
    EF 错误记录
    EasyUI 加载时需要显示和隐藏 panel(面板)内容破版问题
    IE 报表缩放后页面破版
    VS 2017 引入nuget 问题
    SSRS 报表显示页面 asp net session丢失或者找不到 asp net session has expired or could not be found()
    log4net 配置
    网站
  • 原文地址:https://www.cnblogs.com/jrrrrr/p/9300452.html
Copyright © 2011-2022 走看看