node.js的学习整理

中文网站 http://nodejs.cn/
英文官网 https://nodejs.org/en/
node.js是一个基于Chorme V8引擎运行环境的JavaScript程序,是谷歌浏览器中加载执行的浏览器引擎。 所谓的浏览器引擎是执行编译前端代码的计算机程序。比如汽车引擎的作用是汽油转换为动力,而浏览器引擎就是代码编译为 浏览器显示执行的效果
node.js将浏览器中定义的引擎程序单独的剥离出来,形成一个独立的运行环境,让JavaScript代码不再依赖浏览器,而是可以脱离浏览器独立运行。node.js实际上就是脱离了浏览器独立运行的JavaScript程序,也就是外部js文件

node.js的作用
当JavaScript在浏览器运行时:可以操作ECMAScript(语法)、DOM(文档元素) 、BOM(浏览器)
当JavaScript在node环境下运行:可以操作ECMAScript(语法)、I/O操作( input / output)、可以操作系统中的文档和后端的数据库等
实际当中前端程序不能通过浏览器直接操作硬盘中的文件或直接操作数据库内容,不是JavaScript程序没有这个功能,而是出于安全考虑不允许执行这样的操作,是浏览器不允许。node.js脱离了浏览器环境,有一个独立的运行环境,就允许执行 I/O 操作,可以直接操作硬盘中的文件以及数据库程序

node.js 的特点
①标准的异步编程,不会阻塞正常同步程序的执行
②合理分配资源,让计算机更加合理的执行程序,提高程序的执行效率,缩短程序的执行时间
③合理的处理高并发,可以同时处理更多的需求,执行更多的程序请求访问
数据的计算处理使用java 或者python来处理
并发就是同时执行的内容,比如双十一的 0点秒杀

nodejs的运行方式
方式1: cmd方式,在cmd中执行node程序
方式2: 在编辑器中运行node程序,查看 — 终端,快捷键 ctrl + ` 反引号,ctrl + j
方式3: powerShell,window操作系统提供的模拟cmd的程序。在任意位置按住 shift + 鼠标右键,选择在当前位置运行powerShell窗口
只要使用3种方式中的任意一种运行node程序即可

在cmd命令行或者终端中可以运行node.js命令,也可以运行 Linux 命令
要执行运行node程序必须要将盘符路径切换到正确的路径
切换盘符的方法:盘符:再按回车
切换文件夹路径的方法:cd路径再按回车
一些需要了解的命令:

dir            查看当前文件夹中的所有内容
cd..           返回上一级文件夹目录
tree           以树状结构显示当前文件夹中的所有内容
md+文件夹名称                             在当前路径下新建文件夹,效果与鼠标右键---新加文件夹--命名效果相同。window系统下的可视化操作本质上就是在执行md命令
rd+文件夹名称                             删除文件夹,效果与鼠标右键---删除效果相同。window系统下的可视化操作本质上就是在执行rd命令(只能删除空文件夹)
rd /s/q+文件夹名称                        强行删除文件夹以及文件夹中的内容,但是内容不能正在使用
xcopy+要复制的文件夹名称+新的文件夹名称     复制文件夹,会选择要复制生成新的是文件还是文件夹,会将复制文件夹中的所有内容都复制
copy+要复制的文件名+复制之后新的文件名      复制文件
type+文件夹路径>你要创建的文件名称          在指定的路径中创建文件,会有权限问题
type+文件名称                             读取文件中的内容
ren+原始文件名+新文件名                    修改文件名称
echo+要写入的内容>你要写入的文件名称        将指定的内容写入到执行的文件中。写入内容是全覆盖写入,会覆盖之前的内容
del+文件名                                删除文件
move+要移动的文件名+要移动的文件夹路径      移动文件

ipconfig   查看当前电脑的 ip 信息, 要有权限
ping  域名/端口  测试网速
cls  清屏
systeminfo  查看当前电脑的配置信息

执行node.js
执行方式1:在cmd 中任意文件夹路径下输入node回车,进入node环境,可以编辑任意的js程序代码。执行结果与在控制台中输入JavaScript程序的执行结果完全相同。退出node环境是ctrl+c连续执行两次
执行方式2:执行外部js文件中的程序内容①切换盘符路径至你要执行的外部js文件所在的文件夹②输入node文件名称.扩展名,按回车执行文件。node文件名如果不写扩展名,如果没有命名冲突的文件也可以执行,但是最好养成好的编程习惯,文件名和扩展名都写

在node.js中,开发模式执行的是模块化开发。所谓的模块化,类比相似于封装的函数或者构造函数,也就是node.js把功能开发好了,我们只要加载使用就可以了。模块化有严格的语法规范和语法格式,必须严格按照规范语法执行才能正常使用。需要使用哪个功能,只要加载对应的模块,就可以使用模块定义的功能
node.js的模块化分为3种形式
①内置模块,是node.js自己开发定义的模块功能,只要通过加载就可以直接使用了
②第三方模块,是别人开发好的模块,需要加载导入之后才能使用
③自定义模块,是我们自己开发的模块功能,需要导入之后才能使用
类比于手机的APP:
内置模块就是手机本身就具有的APP,类似于闹钟功能,电话功能,短信功能,日历功能这样的手机本身就有的功能软件
第三方模块是别人开发的手机APP,类似于支付宝,淘宝,QQ,微信这些需要再下载安装的APP软件
自定义模块是我们自己开发的手机APP,也需要下载安装才能使用

内置模块之fs模块
不用下载安装,只要加载就可以直接使用,可读取、导入外部文件的内容,可以操作系统中的文件
建立一个 fs 模块对象 / 导入fs模块并且执行,导入的是fs模块,在变量中存储,变量fs就可以执行模块的功能。类似通过构造函数生成实例化对象,实例化对象中可以调用构造函数封装的函数方法
const 实例化对象 = new FS();
实例化对象中就可以调用构造函数中的函数方法 fun1() fun2()…
fs变量就可以调用 fs模块中定义的方法
const fs = require(‘fs’);

功能1:fs对象.readFile() 对文件读取功能
语法格式:fs对象.readFile( 要读取文件的路径 , 编码格式(选填) , 读取完毕执行的函数 )
参数1:要读取文件的路径,可以是绝对路径—url地址,可以是相对路径—从执行的外部js文件开始的相对路径
参数2::读取完毕执行的函数,参数中可以定义两个形参,形参的名称可以是任意的符合命名规范的字符。一般第一个形参是err,第二个形参是data。第一个形参中存储的是,读取文件失败的报错信息,如果读取成功,报错信息是null 。第二个形参中存储的是读取文件成功的数据信息,如果读取失败,读取的数据信息是undefined。如果读取成功,默认的编码格式是Buffer 格式的数据。以十六进制数据显示的二进制数据流一般定义的是utf-8格式
总结:
参数1:需要读取文件的路径,一般是从当前外部js文件开始的想对路径
参数2:编码格式, utf-8。在cmd中执行如果utf-8显示是乱码可以试试gbk,但是实际项目不会在cmd中显示,都是在浏览器中运行,必须要设定为utf-8
参数3:读取结束执行的回调函数,回调函数的参数1报错信息,读取成功时是null。回调函数的参数2数据信息,读取失败时是undefined
在这里插入图片描述
功能2:fs对象.writeFile() 对文件写入内容功能
语法格式:fs对象.writeFile( 要读取文件的路径 , 要写入的内容 , 写入完毕执行的函数 )
写入文件操作,有文件写入,没有文件创建文件也要写入,这个方法执行起来一定不会报错。如果是已经存在的文件,执行时会覆盖之前存在的内容,执行结果是定义的写入的内容。写入完毕执行的函数没有任何自动存储信息的形参,只是简单的执行程序。函数可以写一个空函数,但是必须要有
node.js程序都是异步执行的,也有同步执行的方式,语法格式、功能、参数与异步是完全一致的,但是一般不使用同步形式
fs对象.readFileSync()
fs对象.writeFileSync()

内置模块之http模块
作用就是通过node.js来搭建一个服务器,加载http模块,按照语法和步骤执行模块功能,node.js就会搭建一个服务器。类似实现了一个apache或者 nginx的功能,但是目前还是本地的服务器,还不能通过其他电脑来访问,只能当前电脑访问
①加载http模块,const http = require(‘http’);
②通过http模块对象,来执行http模块的功能。先创建一个http服务,使用的是http模块提供的功能
创建服务器对象,还要做相关的设定
语法格式:const server = http.createServer(function(req , res){}),函数可以定义两个参数
req : 存储的是每次发送的请求信息,也就是在地址栏输入的信息。没有请求,不会有信息存储
req.url是每次访问请求的地址,地址是127.0.0.1:8080之后的内容,例如 127.0.0.1:8080/index.html。req.url就是/index.html,可以根据不同的请求路径读取不同的文件内容,显示在页面中
res : 存储是每次请求返回的响应内容
res.end(内容),向浏览器返回本次请求的响应内容,也就是向浏览器返回一个html页面的程序代码,程序代码往往是通过fs模块读取的文件内容
在这里插入图片描述
定义server服务器的监听端口,监听端口的数值范围是0 - 65535,根据自己的实际情况设定端口
server.listen( 8080 , function(){} )
如果端口被占用,会有报错信息,只要更换设定的监听端口即可
listen EADDRINUSE: address already in use :::8080//监听的端口已经被使用
执行成功之后光标会一直闪烁,证明端口一直在被监听。如果有任何对这个端口发起的请求,都会有相应的执行内容
在createServer函数中,来定义如果,有请求发送,要执行的对应的程序内容
请求地址是本地地址 127.0.0.1:8080 或者 localhost:8080
cmd或者编辑器的控制台不要关闭,一旦关闭就等于终止服务器的运行

// ①加载http模块,生成http模块对象
const http = require('http');
// 加载fs模块,读取写入文件内容
const fs = require('fs');
// ②使用http模块功能,创建一个本地的服务器
// 2-1,创建服务器对象
const server = http.createServer(function(req,res){
    // 根据路径地址,读取文件内容,显示在页面中
    if(req.url === '/index.html'){
        // 如果请求访问的是 index.html 文件,那么就要读取 index.html 文件的内容。读取文件的内容使用的方式是fs模块
        fs.readFile('./index.html' , 'utf-8' , function(err,data){
            // 如果路径正确,读取成功 err 应该是 null
            // 如果不是null,证明读取错误,要报错
            if(err !== null){
                return console.log(err);
            }
            // 如果是读取成功,向页面输出,读取的文件内容也就是HTML文件的代码内容。代码内容,实际上是通过node.js搭建的服务器,交给浏览器来执行html文件的程序内容
            res.end(data);
        })
    }
    // 如果是其他地址,执行其他的判断,读取相应路径的文件,显示文件内容
    if(req.url === '/cart.html'){
        // 根据请求的地址,访问相应的路径下的文件
        fs.readFile('./cart.html' , 'utf-8' , function(err,data){
            // 如果读取文件有误,输出错误信息
            if(err !== null){
                return console.log(err);
            }
            // 如果读取正确,返回相应的响应体
            res.end(data);
        })
    }
});

// 2-2,设定服务器的监听端口
server.listen(8080 , function(){
    console.log('监听端口成功');
})


// 总结
// ①功能:通过 node.js的内置fs模块和内置http模块,搭建一个简易的本地服务器
// ②步骤思路:
//      1,加载 http和fs内置模块
//        const http = require('http');
//        const fs = require('fs');

//      2,创建服务器对象
//        const server = http.createServer(函数)

//      3,设定服务器的监听端口
//        server.listen('端口',function(){监听成功})

//      4,确定服务器监听端口成功,之后,在丰富完善createServer(函数)
//        createServer(function(参数1,参数2){})
//          参数1:请求内容
//          参数2:响应内容
//          通过 参数1.url 来判断请求的地址
//          通过 参数2.end() 来返回响应内容
//       createServer(function(req,res){
//          if(req.url === '/路径地址'){
//              根据这个路径地址,读取响应文件内容
//              fs.readFile('路径' , 'utf-8' , function(err,data){
//                  if(err !== null){
//                      如果报错信息不是null,证明读取文件有错误
//                      return console.log(err)
//                  }
//                  如果报错新消息,是null,证明读取成功,向服务器发送响应内容
//                  res.end(data);
//              })
//          }
//          有其他的请求,判断其他的路径地址,读取相应的文件,返回相应的请求内容
//       })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值