欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

NodeJs(一)

发布时间:2024/7/5 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 NodeJs(一) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

NodeJs简介

  Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 

中文文档:http://nodejs.cn/api/

环境变量

    当我们在命令行窗口打开一个文件,或调用一个程序时,系统会首先在当前目录下寻找文件程序,如果找到了则直接打开。
如果没有找到则会依次到环境变量path的路径中寻找,直到找到为止,如果没找到则报错。

I/O(Input/Output)

    I/O操作指的是对磁盘的读写操作

Node基础

    Node是一个对ES标准一个实现,Node也是一个JS引擎,通过Node可以使js代码在服务器端执行
    Node是一款使用js编写的web服务器,底层是C++编写,node中js引擎使用的使用的是chrome的v8引擎
    Node的特点:
        1、非阻塞、异步的I/O
        2、事件和回调函数
        3、单线程(主线程单线程,后台I/O线程池)
        4、跨平台
    Node仅仅对ES标准进行了实现,所以在Node中不包含DOM和BOM
    Node中可以使用所有的内建对象
        String、Number、Boolean、Math、Date、RegExp、Function、Object、Array
    而BOM和DOM都不能使用,但是可以使用console,也可以使用定时器(setTimeOut()、setInterval())
    Node可以在后台来编写服务器,Node编写服务器都是单线程的服务器
        -进程:进程就是一个一个的工作计划
        -线程:线程是计算机最小的运算单位
    传统的服务器都是多线程的:每进来一个请求,就创建一个线程去处理请求
    Node的服务器是单线程:Node处理请求时是单线程,但是在后台拥有一个I/O线程池

模块化   

 ES5中没有原生支持模块化,我们只能通过script标签引入js文件来实现模块化

    在node中为了对模块管理,引入了CommonJS规范
    模块的引用:使用require()函数来引入一个模块
    模块的定义:在node中一个js文件就是一个模块
        默认情况下在js文件中编写的内容,都是运行在一个独立的函数中,外部的模块无法访问
        导出变量和函数:
            -使用exports
                exports.属性=属性值
                exports.方法=函数
            -使用module.exports        
                module.exports.属性 = 属性值;
                module.exports.方法 = 函数;
                module.exports = {};
    模块的标识:模块的标识就是模块的名字或者路径
        node中通过模块的标识来寻找模块的
        对于核心模块(npm中下载的模块),直接使用模块的名字对其进行引入
            var fs=require("fs")
        对于自定义的文件模块,需要通过文件的路径来对模块进行引入

  包(package)

    将多个模块组合为一个完整的功能,就是一个包
    包结构
        -bin:二进制的可执行文件,一般都是一些工具包这中才有
        -lib:js文件
        -doc:文档
        -test:测试代码
        package.json:包的描述文件,包含了包各种相关信息:name、version、dependencies、main、bin

npm(Node Package Manager Node的包管理器)

    通过npm可以对node中的包进行上传、下载、搜索等操作。npm会在安装完node以后自动安装。
    npm的常用指令
        npm -v:查看npm的版本
        npm version:查看所有模块的版本
        npm init:初始化项目(创建package.json)
        npm i/install 包名:安装指定的包
        npm i/install 包名 --save:安装指定的包并添加依赖
        npm i/install 包名 -g:全局安装(一般是某些工具)
        npm i/install:安装当前项目所依赖的包
        npm s/search:包名 搜索包    
        npm r/remove:包名 删除一个包

文件系统(File System)

 缓冲区

        Buffer和数组的结构非常类似,Buffer是用来存储二进制数据的
        Buffer的方法
            -Buffer.from(字符串):将一个字符串中内容保存到一个Buffer中
            -buf.toString():将buffer转换为一个字符串
            -Buffer.alloc(size):创建一个指定大小的buffre对象
            -Buffer.allocUnsafe(size):创建一个指定大小的buffer对象,可以包含敏感数据

fs模块

        在Node通过fs模块来对系统中的文件进行操作,fs模块是node中已经继承好了,不需要在npm下载,直接引入即可。
        引入fs:var fs =require("fs"),fs模块中的大部分操作都提供了两种方法,同步方法(带sync)和异步方法。
        写入文件:1、同步写入 2、异步写入 3、简单写入 4、流式写入
        读取文件:1、同步读取 2、异步读取 3、简单读取 4、流式读取
        方法:
        -打开文件
            fs.open(path,flags[,model],callback)
            fs.openSync(path,flags[,model])
            注:flag为读取文件的方式,r只读,w可写

        -读写文件
            fs.write(fd, string[, position[, encoding]], callback)
            fs.writeSync(fd, string[, position[, encoding]])
            
            fs.read(fd, buffer, offset, length, position, callback)
            fs.readSync(fd, buffer, offset, length, position)
        
        -关闭文件
            fs.close(fd,callback)
            fs.closeSync(fd)
            
        - 简单文件读取和写入
            fs.writeFile(file, data[, options], callback)
            fs.writeFileSync(file, data[, options])

            fs.readFile(path[, options], callback)
            fs.readFileSync(path[, options])

        - 流式文件读取和写入
            - 流式读取和写入适用于一些比较大的文件
                fs.createWriteStream(path[, options])
                fs.createReadStream(path[, options])

转载于:https://www.cnblogs.com/hucheng1997/p/11152777.html

总结

以上是生活随笔为你收集整理的NodeJs(一)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。