zoukankan      html  css  js  c++  java
  • node.js简介

    简介

    node.js是浏览器的js引擎。

    浏览器中有一个js引擎用来解析js代码,只能解析js代码中的ECMAScript,dom和bom的解析依赖的是浏览器本身。

    将这个js引擎单独拿出来,就是node了。

    要让这个引擎运行起来,有人将他做成了一个软件,安装在电脑上,js代码就不用依赖浏览器运行了,在电脑的命令行也能运行js代码。

    为什么要这么做?因为这样的话,js就能写后台了。

    官网:https://nodejs.org/en/

    中文网:http://nodejs.cn/

    简单的命令

    盘符: # 进入某个盘符
    cd 目录 # 进入某个目录
    cd .. # 回到上一级目录
    dir # 查看当前文件夹中的文件和文件夹
    tree # 查看当前文件夹中的所有文件和文件夹包括子文件夹及其文件,树状结构
    cls # 清屏
    ipconfig # 查看当前电脑的网管信息
    systeminfo # 查看当前电脑的配置信息
    md 文件夹名 # 新建文件夹    make dir   directory
    rd 文件夹名 # 删除文件夹
    xcopy 文件夹 新文件夹名 # 复制文件夹,并起新的名字
    type nul> 文件名 # 新建文件
    copy 文件名 新文件名 # 复制文件,并起新的名字
    echo 内容 > 文件名 # 给文件中写入内容
    move 文件路径 新的路径 # 将文件移动到新的路径
    ren 文件名 新的文件名 # 将文件重命名
    del 文件名 # 删除一个文件

    在vscode中,自带了命令行,可以直接在编辑器中执行命令:

    ctrl+` # 打开编辑器的命令行
    或者: 在文件上右击 “用命令打开”

    导入导出

    在实际开发中,一般是每个人完成一个功能,然后将多个功能组合在一起,从而完成整个项目。我们将这个过程叫做模块化开发。每个文件都是一个单独的模块。

    每个人开发的功能都是一个单独的文件,要将多个文件组合在一起,需要将这多个文件导出,然后在一个最终的项目文件中导入。

    导出:

    每个文件都有一个对象:module。这个对象中有一个属性叫做exports,值也是一个对象,默认是一个空对象。当前文件默认导出的就是这个exports对象,导出的内容都写在这个对象中。

    module = {
        exports:{
            name:"张三"
        }
    }

    这个对象默认是存在的,所以不用重新赋值,直接添加内容即可。例:

    module.exports.name = '张三';
    module.exports.age = 20;

    导入:

    将另一个文件中导出的内容接收起来。

    var res = require(要导入的文件); // 返回值就是文件导出的内容:module.exports对象

    内置模块

    在node中,模块分三种:

    1. 内置模块,node系统自带的一些文件模块

    2. 自定义模块,自己的一些文件

    3. 第三方模块,雷锋写好的,下载来使用

    fs模块

    这个模块主要用来操作文件:读取、写入文件。

    node系统自带的,直接引入进来使用。

    const fs = require("fs");

    写入文件

    异步写入

    fs.writeFile(被写入的文件,写入的内容,写入完成后执行的回调函数); // 这个操作是异步的

    使用说明:

    1. 文件存在则写入,文件不存在则创建文件写入。

    2. 文件中没内容就直接写,有内容会覆盖写入。

    例:

    const fs = require("fs");
    fs.writeFile("./test.txt","hello node",function(){
        console.log("写入完成!");
    });
    console.log(123);

    执行结果:

    异步写入结果
     

    同步写入

    fs.writeFileSync(被写入的文件,写入的内容); // 这个操作是同步的

    执行结果:

    同步写入结果
     

    读取文件

    异步读取

    fs.readFile(要读取的文件,[读取文件编码方式],读取成功后执行的回调函数);

    使用说明:

    1. 可选项参数是读取文件使用的编码方式,可以写utf-8

    2. 回调函数中需要两个参数,参数1为错误对象,读取成功为undefined,读取失败为错误信息;参数2为读取的结果。如果没有编码方式,读取的是一个buffer,使用16进制来描述二进制数据,需要转为字符串查看。

    例:

    var fs = require("fs");
    /*fs.readFile("./a.txt",(err,data)=>{
        if(err){
            console.log("读取失败,错误为:",err);
            return 
        }
        console.log("读取成功,数据为:",data.toString());
    });*/
    fs.readFile("./a.txt","utf-8",(err,data)=>{
        if(err){
            console.log("读取失败,错误为:",err);
            return 
        }
        console.log("读取成功,数据为:",data);
    });
    console.log(123);

    读取结果:

    异步读取文件结果
     

    同步读取

    fs.readFileSync(要读取的文件[,读取文件的编码]);

    使用说明:返回读取的结果

    例:

    var fs = require("fs");
    /*
    var data = fs.readFileSync("./a.txt");
    console.log("读取成功,数据为:",data);
    */
    var data = fs.readFileSync("./a.txt","utf-8");
    console.log("读取成功,数据为:",data);
    console.log(123);

    读取结果:

    同步读取文件结果
     

    http模块

    node做后端,没有现成的服务器,需要使用http这个模块。

    引入模块:

    const http = require("http");

    利用这个模块做服务器:

    // 创建服务器,返回这个服务的名称
    http.createServer(function(){
        // 处理客户端的请求
        console.log("有请求");
    });
    // 监听端口
    http.listen(9988);

    启动文件,服务器就启动了,一直是阻塞状态,等待客户端的请求进来:

    启动服务器结果
     

    创建服务器的回调函数有两个参数:参数1是请求的信息,参数2是响应信息:

    http.createServer(function(request,response){
        // 处理客户端的请求
        console.log(request);
        response.end("你的请求成功");
    });

    request中包含所有请求的信息,请求行,请求头,请求空行,请求主体,如下图:

    请求信息
     

    response是服务器给客户端响应的信息,可以自己设置,常用的属性和方法:

    res.write(data): 给浏览器发送请求体,可以调用多次,从而提供连续的请求体
    res.end();   通知服务器,所有响应头和响应主体都已被发送,即服务器将其视为已完成。
    res.end(data); 结束请求,并且响应一段内容,相当于res.write(data) + res.end()
    res.statusCode: 响应的的状态码 200 404 500
    res.statusMessage: 响应的状态信息, OK Not Found ,会根据statusCode自动设置。不能赋值中文
    res.setHeader(name, value); 设置响应头信息, 比如content-type
    res.writeHead(statusCode, statusMessage, options); 设置响应头,同时可以设置状态码和状态信息

    注意:必须先设置状态码,再设置响应头,最后设置响应主体,顺序不能乱。 

    例:

    const http = require("http");
    const server = http.createServer();
    server.on("request",function(req,res){
        // 设置状态行和响应头
        // 语法:res.writeHead(状态码,状态文本,{响应头});
        res.writeHead(404,'ccc',{'content-type':'text/html'});
        res.end("ok");
    });
    server.listen(9988,function(){
        console.log("服务器启动成功");
    });

     

  • 相关阅读:
    Linux 3.2中回写机制的变革
    Linux字符设备与块设备的区别与比较
    分布式文件系统:原理、问题与方法
    为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
    Linux IO barrier
    磁盘IO:缓存IO与直接IO
    【珍藏】高性能IO模型浅析
    souretree+上面提交代码和gerrit上面出现Cannot+merge的时候的解决方法
    vscode快速生成自定义HTML模板
    在jq里面设置样式的高度height、设置隐藏和显示的小功能
  • 原文地址:https://www.cnblogs.com/jiaxingjun-1006/p/11529722.html
Copyright © 2011-2022 走看看