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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

O'Reilly创始人谈Web 3.0:我们将再次经历1999年互联网泡沫时期

来源:巴比特资讯原文作者:OReilly创始人Tim O’Reilly最近有很多关于 Web3 的讨论,作为在17年前定义“Web 2.0”的人,我经常被要求发表关于Web3的评论。但我通常会避免去这样做,因为大多数对未来的预测都被证明是错误的…

Liunx之nginx代理

一、代理 正向代理 正向代理,也就是传说中的代理,他的工作原理就像一个跳板(VPN),简单的说: 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢&#xff…

23-redis

23-redis 文章目录23-redis今日内容Redis1. 概念1.1.什么是NOSQL1.1.1. NOSQL和关系型数据库比较1.1.2. 非关系型数据库的优势:1.1.3. 关系型数据库的优势:1.1.4. 总结1.2.主流的NOSQL产品1.3 什么是Redis1.3.1 redis的应用场景2. 下载安装3. 命令操作1.…

大科学时代,指数级增长的科学仍然拥有前所未有的朝气与活力

湛庐文化出品 2021年12月来源:集智俱乐部作者:王大顺、AL. Barabsi译者:贾韬、汪小帆 编辑:邓一雪 导语科学家什么时候能够迎来事业巅峰?科学创新的生命周期是多久?职业生涯中出现突破性进展的迹象是否存在…

7 文件上传

#文件上传app.route("/file",methods[GET,POST])def file(): if request.method POST: file_v request.files.get(F) file_v.save(file_v.filename) #保存文件 file_v.filename是当前保存的文件名 return render_template("file.ht…

05-异常,线程

声明:此博客来自于黑马程序员学习笔记,并非商用,仅仅是为了博主个人日后学习复习用,如有冒犯,请联系qq208820388立即删除博文,最后,来跟我一起喊黑马牛逼黑马牛逼黑马牛逼 【异常、线程】 文章…

元宇宙加速近眼显示产业化

来源:中国电子报今年以来,“元宇宙”概念持续升温,被视为元宇宙入口的AR/VR设备也被推至风口浪尖。AR/VR硬件成为国际科技巨头抢食元宇宙蛋糕的重要一环,苹果、Meta、三星、微软、任天堂纷纷宣布布局AR/VR硬件设备的计划。行业机构…

对xml操作的主要方法[轉]

set objDomserver.CreateObject("MicroSoft.XMLDom") #取得xml数据#方法1 取得xml文件的xml数据 objDom.load("c:\test.xml")#方法2 取得xml数据串的数据 objDom.loadxml("<people><man name"sd"/></people>") #…

centos系统部署rancher1.6版本并部署服务

1. centos上部署docker. 请参考 博客 2. 用docker安装rancher1.6 sudo docker run -d -v /mnt/rancher/db:/var/lib/mysql --restartunless-stopped -p 8080:8080 rancher/server3.浏览器登录做设置 3.1 浏览器打开 1.117.92.32:8080 #直接就登录了 3.2 第一次进入&am…

喻国明:“元宇宙”背后的未来图景

近来&#xff0c;互联网领域最受追捧的热点非“元宇宙”莫属。国内外各大科技公司纷纷布局相关领域、加码相关赛道。普华永道预计&#xff0c;元宇宙市场规模在2030年将达到1.5万亿美元。可以说&#xff0c;一时间&#xff0c;“元宇宙”这个概念在科技圈和资本圈获得了无出其右…

JVM学习笔记-01-JVM的学习方式

JVM学习笔记-01-JVM的学习方式 文章目录JVM学习笔记-01-JVM的学习方式JVM探究最新JVM教程IDEA版【Java面试速补篇】-01-JVM的学习方式 JVM探究 请你谈谈对JVM的理解&#xff1f;java8虚拟机和之前的变化更新?什么是OOM&#xff0c;什么是栈溢出StackOverFlowError?怎么分析…

android一体机-迅为10.1寸用于售货机、人机界面、自动终端、触摸控制

迅为10.1寸触控一体机工业人机界面HMI电容显示屏嵌入式工控触摸屏 行业应用&#xff1a;用于售货机、人机界面、自动终端、触摸控制系统等 触摸屏类型&#xff1a;电容屏&#xff08;五点触摸&#xff09;分辨率&#xff1a;1024*600 RGB信号 内置&#xff1a;WIFI/蓝牙、4G全网…

年终盘点:2021年AI领域值得关注的十件事

来源&#xff1a;科技日报几年前提到人工智能&#xff0c;人们的第一反应是全球流行、网络热门、预见未来&#xff0c;但如今&#xff0c;人工智能早已褪去神秘色彩&#xff0c;语音识别、图像识别、智能阅片、病毒测序、药物设计……皆已成为唾手可得的应用。尤其值得一提的是…

JVM学习笔记-02-JVM的体系结构

JVM学习笔记-02-JVM的体系结构 文章目录JVM学习笔记-02-JVM的体系结构1. JVM的位置2. JVM的体系结构3.垃圾回收GC4.JVM调优视频链接-最新JVM教程IDEA版【Java面试速补篇】-02-JVM的体系结构 1. JVM的位置 2. JVM的体系结构 3.垃圾回收GC 4.JVM调优

02 复习流程语句 以及跳转语句

f open("02 流程复习",modew,encoding"utf-8")f.write("\t\tpython 流程控制语句\n" "python 流程控制语句的三种结构 1、顺序结构 2、选择语句 3、循环语句\n" "1、顺序语句 就是根据写的代码一句一句的往…

P vs. NP 五十年:AI正在解决不可解问题

来源&#xff1a;AI科技评论作者&#xff1a;Lance Fortnow编译&#xff1a;Don编辑&#xff1a;青暮P和NP问题一直是计算机领域的老大难问题&#xff0c;那么在近50年间&#xff0c;人们对这个问题有什么深入的研究呢&#xff1f;让我们在本文中深挖这个世纪难题。在1971年5月…

JVM学习笔记-03-类加载器及双亲委派机制

JVM学习笔记-03-类加载器及双亲委派机制 文章目录JVM学习笔记-03-类加载器及双亲委派机制1. 类加载器视频链接-最新JVM教程IDEA版【Java面试速补篇】-03-类加载器及双亲委派机制 JVM架构图 1. 类加载器 友情提示&#xff1a;百度下&#xff1a;双亲委派机制 下面是一些相关的…

86年后,终于有人完成「真人版」薛定谔的猫实验,量子纠缠了活体动物

来源&#xff1a;机器之心编辑&#xff1a;泽南、小舟首先要回答的问题&#xff1a;实验是量子的还是经典物理的&#xff1f;你一定听说过薛定谔的猫&#xff0c;它是著名物理学家埃尔温 薛定谔在 1935 年提出的一个思想实验&#xff1a;将一只猫关在装有少量镭和氰化物的密闭…

《C#与.net高级编程》——第一支柱:C#的封装

This关键字的作用: 解决当传入参数的名字和类型数据字段的相同时产生的作用域歧义。 构造函数链 1 class Motorcycle2 { 3 public int driverInterIntensity;4 public string driverName;5 //构造函数链6 public Motorcycle(){}7 public Motorcycle(int inte…

JVM学习笔记-04-java历史-沙箱安全机制

JVM学习笔记-04-java历史-沙箱安全机制 文章目录JVM学习笔记-04-java历史-沙箱安全机制视频链接-最新JVM教程IDEA版【Java面试速补篇】-04-java历史-沙箱安全机制 java中的安全模型(沙箱机制) JVM架构图