zoukankan      html  css  js  c++  java
  • nodejs基础一

    Node.js是一个基于Chrome V8引擎的JavaScript运行。

    js的运行环境

    运行js有两种:

    .js文件方式

    交互(REPL):

      node  回车进入交互模式

      .exit 退出交互模式

    模块化: 作用  复用  解决命名冲突

    module 

    一个js文件就是一个模块   模块之间互不影响

    global是nodejs里面的全局对象

    例如:global.a=a;

    引入模块     var a = require(模块的路径)

    导出模块    module.exports =a;

    导出多个变量的时候可以写成对象的模式

    exports 默认指向module.exports

    如果exports指向了新的对象,那么就没有了导出的效果

    浅拷贝

    var obj ={ ...obj}  //浅拷贝(es6)

    var obj2 = Object.assign({},obj); //浅拷贝(es5)

    浅拷贝解决了对象引用时候互相影响的问题,采用浅拷贝的时候就不再会影响原来的对象。

    补充:

    node.js采用commonjs规范

    .json也是一个单独的模块

      相当于四个空格

    换行

    引入模块如果省略扩展名 是按照 .js .json .node 的顺序引入的

    npm  看文档说明

    npm init -y 会产生package.json包管理文件 里面的script标签对象 , npm run +key值运行,可以用来自定义命令。

    npm i 或者 yarn命令会根据package.json重新下载node_modules文件

    模块的分类:

    1.自定义模块

    2.内置模块:(类比手机自带的软件不用下载)

    ①http、https(面试题:http和https的区别)

    //引入内置的http模块
    const http = require("http");
    //引入第三方模块 第三方下载 npm install 卸载 uninstall  / yarn add 卸载remove
    const chalk = require("chalk");
    //创建一个http服务器
    var ser = http.createServer((req,res)=>{
        //响应头里写入编码问题 响应的writeHead的方法响应头
        res.writeHead(200,{'Content-type':'text/html;charset=utf-8'})
        res.end("hello,dd冬冬");
        //end方法返回一个消息
    })
    //这个服务器监听到3000端口
    console.log(chalk)
    ser.listen(3000,()=>{
        console.log(chalk.green("listen 3000...."))
    })

    ②fs文件操作模块(内置模块)

    同步sync 读写文件 :fs.readFileSync("文件的路径","utf-8")    fs.writeFileSync("文件的路径","内容","utf-8")  fs.appendFileSync("文件的路径","追加的内容",utf-8"

    //同步读文件
    // var str =fs.readFileSync("./a.txt","utf-8");
    // console.log(str);
    
    
    // 异步读取文件
    // fs.readFile("a.txt","utf-8",(err,data)=>{
    //     if(!err){
    //         console.log(data)
    //     }
    // })
    
    // 流的方法读取文件
    var rs =fs.createReadStream("./a.txt");
    var str ="";
    rs.on("data",(thunk)=>{//读取一块内容的时候,就发送data事件
        str += thunk;
    })
    rs.on("end",()=>{//当读取完所有数据的时候,就发生end事件
        console.log(str);
    })

    异步async读写文件fs.readFile("文件的路径","utf-8",(err,data)=>{if(!err){ data就是读出的内容}})    fs.writeFile("文件的路径","写入的内容" ,"utf-8",callback)  fs.appendFile  ("文件的路径","写入的内容" ,"utf-8",callback)  

    const fs =require("fs");
    //同步写入文件
    // fs.writeFileSync("./a.txt","冬冬","utf-8");
    
    // 异步写入文件
    // fs.writeFile("./a.txt","篮球","utf-8",(err)=>{
    //     if (!err) {
    //         console.log("write ok");
    //     }
    // })
    
    //流的方式写入文件
    var ws =fs.createWriteStream("./a.txt");
    ws.write("你好呀","utf-8");
    const fs =require("fs");
    // 同步追加写入
    // fs.appendFileSync("./a.txt","啊哈哈","utf-8");
    
    // 异步追加写入
        fs.appendFile("./a.txt","章冬冬","utf-8",(err)=>{
            if(!err){
                console.log("write ok");
            }
        });

    流stream

    fs.createReadStream: 

    fs.createReadStream

    fs.on("data",(thunk)=>{}) fs.on("end",()=>{})

     fs.createWriteStream:

    fs.createWriteStream
    ws.write("文件的内容","utf-8")

    拷贝(copy)pipe 管道 

     rs.pipe(ws)  文件的拷贝

    const fs =require("fs");
    var rs =fs.createReadStream("./a.txt");
    var ws =fs.createWriteStream("./acopy.txt")
    rs.pipe(ws);//rs通过管道传输给ws

    fs.renameSync   重命名

    3.第三方模块:(类比手机里要下载后再使用的软件)

  • 相关阅读:
    USES_CONVERSION的使用和注意
    UniCode 下 CString 转 char* 的方法
    mfc获取控件在对话框上的位置
    MFC的CListCtrl双击获取单元格的行列
    MFC总结之CListCtrl用法及技巧(二)
    python(19)编码问题
    xpath提取目录下所有标签内的内容,递归 //text()
    Linux命令(14)文件和文件夹权限管理:chmod
    linux命令(13) 删除指定文件夹下后缀名相同的文件
    git(5) windows下 pycharm + git(github) ,在本地方便管理
  • 原文地址:https://www.cnblogs.com/dongdong1996/p/12082278.html
Copyright © 2011-2022 走看看