首页 > 编程语言 >node 学习笔记

node 学习笔记

时间:2022-11-01 08:47:14浏览次数:48  
标签:node fs console log err res 笔记 学习 http

1.通过node执行js
1.复制文件所在路径
2.node +路径

2.node 读写文件

1.引入file模块
读取文件
2.fs.readFile(‘./read/hell.txt’,function(error,data){
if(error){
console.log(“读取文件失败”);
}
else{
console.log(data.toString());
}

})
使用 fs 核心模块的readFile对文件数据进行读取,再跟上一个大括号放入所需的参数

写文件

fs.writeFile(‘./files/2.txt’, ‘Node.js’, function (err) {
//1.如果文件写入成功,则err的值等于null
//2.如果文件写入失败,则err的值等于一个错误对象
console.log(err);
//判断文件是否写入成功
if (err) {
return console.log(‘文件写入失败!’+err.message);
}
console.log(‘文件写入成功!’);
})
使用 fs 核心模块的writeFile对文件数据进行写入,再跟上一个大括号放入所需的参数

第一个参数就是要写入的文件路径,./ 表示路径在当前目录m,…/ 则是进入上一层目录查找,

在这里我使用的是当前目录./

第二个参数就是要写入的数据,注意使用引号

第三个参数是一个回调函数 来展示我们的数据是否写入成功

3.fs模块路径拼接

相对路径读取可能会出错,可以用绝对路径

//__dirname 表示当前文件所处的目录
console.log(__dirname);

fs.readFile(__dirname + '/files/1.txt', function(err, dataStr) {
if (err) {
return console.log('读取文件失败!', +err.message);
}
console.log('读取文件成功!' + dataStr);
})

4文件路径path模块

1.合并路径
path.join([...paths])
2.从路径字符串解析出文件名
path.basename(path, [ext])

参数一:必选参数,表示一个路径字符串
参数二:可选参数,表示文件扩展名
不加参数二,返回完整文件名,如test.html
加参数二,只返回文件名,如test
3.获取路径中的扩展名部分
path.extname(path)

参数:路径字符串
返回一个扩展名字符串

案例:拆分html文件
`const fs = require('fs')
const path = require('path')

// \s表示空白字符,\S表示非空白字符,表示匹配前面的任意次
const regExpStyle = /','')
fs.writeFile(path.join(__dirname,'./index.css'),str,(err)=>{
if(err) return console.log('创建JS文件失败:',err.message)
console.log('CSS文件创建成功!')
})
}
resolveJS = (str)=>{
str = str.match(regExpScript)[0]
str = str.replace('','')
fs.writeFile(path.join(__dirname,'./index.js'),str,(err)=>{
if(err) return console.log('创建JS文件失败:',err.message)
console.log('JS文件创建成功!')
})
}
resolveHTML = (dataStr) => {
let styleLink = "",
scriptLink = ""
dataStr = dataStr.replace(regExpStyle,styleLink).replace(regExpScript,scriptLink)
fs.writeFile(path.join(__dirname,'./newIndex.html'),dataStr,(err)=>{
if(err) return console.log('创建新的HTML文件失败:',err.message)
console.log('HTML文件创建成功!')
})
}
`
5.http模块

Node中的Http
Node中提供了http模块,其中封装了高效的http服务器和http客户端
http.Server是一个基于事件的http服务器,内部是由c++实现的,接口是由JavaScript封装
http.request是一个http客户端工具。 用户向服务器发送数据。

创建简单服务器

`const http = require('http');
function a(){
console.log("dajiahao");
}
var server = new http.Server();
server.on('request',(req,res)=>{
console.log(req.url);
//设置应答头信息
res.writeHead(200,{'Content-Type':'text/html'});
res.write('hello we are family
');
res.end('server already end\n');
});
//显示了三次这也证明了TCP的三次握手
server.on('connection',()=>{
a();
});
server.on('close',()=>{
console.log('server will close');
});
//关闭服务为了触发close事件
server.close();
server.listen(80);

`

req对象属性

res 方法
res.setHeader("Content-Type", "text/html;charset=utf-8");

response.write(data,[encoding]) 向请求客户端发送相应内容,data是buffer或字符串,encoding为编码

response.end([data],[encoding]) 结束响应,告知用户所有发送已经完成,当所有要返回的内容发送完毕,该函数必须被调用一次,如果不调用,客户端永远处于等待状态

res.end(content);

在本地web服务器里打开html文件

` var http = require('http');
var fs = require('fs');//引入文件读取模块

var documentRoot = 'E:/PhpProject/html5/websocket/www';
//需要访问的文件的存放目录

var server= http.createServer(function(req,res){

 var url = req.url;
 //客户端输入的url,例如如果输入localhost:8888/index.html
 //那么这里的url == /index.html 

 var file = documentRoot + url;
 console.log(url);
 //E:/PhpProject/html5/websocket/www/index.html 

 fs.readFile( file , function(err,data){
 /*
     一参为文件路径
     二参为回调函数
         回调函数的一参为读取错误返回的信息,返回空就没有错误
         二参为读取成功返回的文本内容
 */
     if(err){
         res.writeHeader(404,{
             'content-type' : 'text/html;charset="utf-8"'
         });
         res.write('<h1>404错误</h1><p>你要找的页面不存在</p>');
         res.end();
     }else{
         res.writeHeader(200,{
             'content-type' : 'text/html;charset="utf-8"'
         });
         res.write(data);//将index.html显示在客户端
         res.end();

     }

 });

}).listen(8888);

console.log('服务器开启成功');`

Express web服务
提供了简洁的路由定义方式
对获取http请求参数进行简化处理
对模板引擎支持程度高,方便渲染动态HTML页面
拥有中间件机制有效控制http请求
拥有大量第三方中间件功能进行扩展

6node模块化

Common.js
由于 module.exports 单词写起来比较复杂,为了简化向外共享成员的代码,Node 提供了 exports 对象。 默认情况 下 , exports 和 module.exports 指向同一个对象 。最终共享的结果,还是以 module.exports 指向的对象为准

Node.js 中的模块化规范
① 每个模块内部,module 变量代表当前模块。
② module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口。
③ 加载某个模块,其实是加载该模块的 module.exports 属性。require() 方法用于加载模块。

npm 包管理工具

使用 npm 包管理工具下载的包,共分为两大类,分别是:项目包 全局包

  1. 项目包
    那些被安装到 项目 的 node_modules 目录 中的包,都是项目包。
    项目包又分为两类,分别是:
    开发依赖包(被记录到 devDependencies 节点中的包,只在开发期间会用到)
    核心依赖包(被记录到 dependencies 节点中的包,在开发期间和项目上线之后都会用到)
  2. 全局

在执行 npm install 命令时,如果提供了 -g 参数,则会把包安装为 全局包 。
全局包会被安装到 C:\Users\用户目录\AppData\Roaming\npm\node_modules 目录下。

express 框架简述
Express 的作用和Node.js 内置的 http模块类似,是专门用来创建Web服务器的。Express的本质:就是一个npm 上的第三方包,提供了快速创建Web服务器的便捷方法。

标签:node,fs,console,log,err,res,笔记,学习,http
From: https://www.cnblogs.com/teahouse/p/16846524.html

相关文章

  • 学习python第二天
    ##字符串的操作##tyep查看对象的类型#name="wode"#print(type(name))###常用的类型:strintfloatbool##布尔型:bool##Ture1##flse0#print()#字符串......
  • 深度学习基础课:全连接层的前向和后向传播推导(中)
    大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序线上课程资料:本节课录像回放加QQ群,获得......
  • SpringBoot笔记:Hello World
    SpringBoot简化了Spring应用的初始框架搭建和开发过程,利用SpringBoot框架可以快速的进行Spring应用的开发,SpringBoot具有以下特性:能够快速创建基于Spring的应用程序。提......
  • STM32 USB学习笔记6
    主机环境:Windows7SP1开发环境:MDK5.14目标板:STM32F103C8T6开发库:STM32F1Cube库和STM32_USB_Device_Library现在来分析哈USB器件库代码,先来看usbd_core文件,其头文件只......
  • MongoDB 索引笔记
    索引(Index)合适的索引可以大大提高数据库搜索性能集合层面的索引支持复合键索引可以对多个字段进行排序复合索引:(A,B,C)可以支持的索引:{A},{A,B},{A,B,C}......
  • 深度学习-yolo-多(单)目标检测
    代码是在吴恩达深度学习作业的基础上完成的。问题1:下载的yolo.h5无法使用开始想原来下载的不行我就换个地方下载呗,就绕到gitlfs去了,然后发现这个条路好像不大行得通......
  • 《代码大全2》阅读笔记2
    第一部分是打好基础。这部分主要是关于软件构建的前期工作,以及一些基本概念的介绍,包括如何选择编程语言和构建实践方法,以及如何理解软件开发的过程。软件开发本质上是工程......
  • 程序员修炼之道第四章读书笔记与感悟
      程序员修炼之道第四章读书笔记与感悟与其他工程技术一样,软件工程是一项充满细节的工作,跟踪这些细节需要集中精力。并且能够持续地做出大大小小的改进。最大的弱点就......
  • 学习java的第二天
    java语法学习注释,标识符,关键字写代码时一定写注释这是一个良好的习惯单行注释:“//”这是一个当行注释多行注释:"/*+回车"这是一个多行注释文档注释:"/**+......
  • 有用的内置Node.js APIs
    前言在构建你的第一个Node.js应用程序时,了解node开箱即用的实用工具和API是很有帮助的,可以帮助解决常见的用例和开发需求。有用的Node.jsAPIsProcess:检索有关环境变量......