Nodejs是一个基于Chrome V8引擎的JavaScript运行环境

node菜鸟文档

node中文文档

node千峰

七天学会Nodejs

1.Node.js环境的安装

两个版本;LTS和Current
LTS为长期稳定版,推荐安装
Current为新特性尝鲜版,可能存在隐藏bug
node -v 查看版本号

node运行js代码

  • 方法1:window+r---->cmd,然后cd到文件目录在输入命令 node 1.js(文件名)
  • 方法2:找到文件目录,按住shift+鼠标右击------->点击在此处打开powershall窗口

常用终端快捷键

方向键上箭头 快速定位到上一次执行的命令
tab键 快速补全路径
esc键 快速清空当前已输入的命令
cls命令 可以清空终端

2.fs文件系统模块

  • fs.readFile()方法,用来读取指定文件中的内容
  • ==fs.writeFile()==方法,用来向指定的文件中写入内容
安装Node的时候自动把这些也安装了,如下方法导入它就好
const fs=require('fs')

fs.readFile()

fs.readFile(path[,options],callback)
  • 参数1:必选参数,字符串,表示读取文件的路径
  • 参数2:可选参数,表示以什么编码格式来读取文件
  • 参数3:必选参数,文件读取完成后,通过回调函数拿到读取失败和成功的结果
  • 如果读取成功,则err的值为null
    如果读取失败,则err的值为错误对象,data的值为undefined
// 导入fs模块
const fs = require('fs');
fs.readFile('../file/r1.txt', 'utf-8', function (err, data) {// 如果读取成功,则err的值为null// 如果读取失败,则err的值为错误对象,data的值为undefinedconsole.log(err);console.log('---------------');console.log(data);
})

fs.writeFile()

fs.writeFile(file,data[,option],calback)
  • file:必选,文件存放路径

  • 参数2data:必选,表示要写入的内容

  • 参数3:可选,编码格式,默认utf-8

  • 参数4:必选,回调函数

  • 如果文件存在,该方法写入的内容会覆盖旧的文件内容。

  • // 写入文件内容
    const fs = require('fs');// 回调函数只包含错误信息参数(err)
    fs.writeFile('../file/2.txt', '我是写入的数据', function (err) {if (err) {console.log('文件导入失败' + err.message);} else {console.log('文件写入成功');}
    })
    

路径动态拼接问题

  • PS D:\新的开始\NodeJs\day1> node .\code\1.js
    ---------------------------------------------------
    [Error: ENOENT: no such file or directory, open 'D:\新的开始\NodeJs\file\r1.txt']
    
  • 我们代码读取的是这个文件fs.readFile(‘…/file/r1.txt’,,
    它会直接用当前目录去拼接代码目录…/file/r1.txt,而不是拼接.\code\1.js,所以报错

  • 解决方法

    • __dirname表示当前文件所处的目录

3.path路径模块

path.join()

可以把多个路径片段拼接为完整的路径字符串 …/会抵消前一级的路径

以后拼接就用这个取代+,因为+容易出问题

const fs = require('fs');
const path = require('path');
// ../会抵消前一级的路径
const newPath = path.join('/a', './b/c', '../', './e');
console.log(newPath);//\a\b\e
// path会自动帮我们把.给屏蔽掉
// fs.readFile(__dirname, +'./5.');会报错,因为拼接的时候有.
fs.readFile(path.join(__dirname, './5.txt'), 'utf-8', function (err, data) {if (err) {console.log('路径错误' + err.message);} else {console.log(data);}
})

path.basename()

获取路径中的文件名,可以获取路径中的最后一部分

path.basename()

获取路径的扩展名部分

const path = require('path');
const fpath = '/a/b/c/index.html';//文件的存放路径
var newFpath = path.basename(fpath);
console.log(newFpath);//index.html
console.log(path.basename(fpath, '.html'));//index
var newname = path.extname(fpath);
console.log(newname);//.html

4.http模块

Nodejs官方提供的,用来创建web服务器的模块,通过http模块提供的http.createServer()方法,就能把一台普通电脑,变成一台Web服务器,从而对外提供Web资源服务,通过IIS,Apach这些第3方服务器软件也行,但是nodez中不需要使用这些

  • 开发期间,自己电脑既是服务器也是客户端,为了方便测试,可以在自己浏览器中输入127.0.0.1这个IP地址,就可以把自己电脑当做一台服务器进行访问了
  • 127.0.0.1对应的域名是localhost
  • 端口号
    • 每个端口号不能同时被多个web服务占用
    • URl中的80端口可以被省略

创建最基本的web服务器

// 导入http
const http = require('http');
// 2.创建web服务器实例
const server = http.createServer();
//3. 为服务器实施绑定request事件,监听客户端的请求
server.on('request', function (req, res) {console.log('Someone visit our web server');
})
//4.启动服务器
server.listen(8080, function () {console.log('server running at http://127.0.0.1:8080');
})
/*
server.listen(80, function () {// 监听的是80端口,则可以省略不写console.log('server running at http://127.0.0.1');
})
*/

req请求对象

req是请求对象,包含了与客户端相关的数据和属性
这里服务器没有向客户端res响应内容默认失败
const http = require('http');
const server = http.createServer();
server.on('request', function (req, res) {var url = req.url;var method = req.method;const str = `你请求的路径是 ${url},请求的方法为 ${method}`;console.log(str);
})
server.listen(80, () => {console.log('server running at http://127.0.0.1');
})

res响应对象及解决响应中文乱码问题

req.url得到的是127.0.0.1后面的内容

const http = require('http');
const server = http.createServer();
server.on('request', function (req, res) {var url = req.url;var method = req.method;const str = `你请求的路径是 ${url},请求的方法为 ${method}`;console.log(str);// 使用res.end方法向客户端发送中文,会出现乱码,需要手动设置内容的编码格式res.setHeader('Content-Type', 'text/html; charset=utf-8')// 调用res.end()方法,向客户端响应一些内容res.end(str);
})
server.listen(80, () => {console.log('server running at http://127.0.0.1');
})

5.Nodejd中的模块化

  • 加载模块:require()方法,可以加载需要的内置模块,用户自定义,第3方模块
  • 使用require()方法加载其他模块时,会执行被加载模块中的代码
  • 使用require导入自定义模块的时候可以省略后缀名
1.js
console.log('我是被加载的模块');//执行2.js,1.js的代码也会被执行
------------------------------------
2.js
const m = require('./1.js');
console.log(m);//{}

模块作用域

  • 默认情况下,node模块有自己的作用域,在模块定义的同学无法被外界访问
  • 防止了全局变量污染的问题

module对象

Nodejs知识点总结及个人学习心得相关推荐

  1. STM32学习心得十七:窗口看门狗(WWDG)实验及旧知识点复习

    记录一下,方便以后翻阅~ 主要内容: 1) 窗口看门狗概述: 2) 常用寄存器和库函数配置: 3) 窗口看门狗实验. 窗口看门狗实验内容: 为了对之前的知识进行总结复习,本人在教学案例的基础上又&qu ...

  2. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  3. 计算机基础与应用(上)笔记总结,计算机基础学习心得体会范文(通用3篇)

    计算机基础学习心得体会范文(通用3篇) 当我们对人生或者事物有了新的思考时,好好地写一份心得体会,这样可以记录我们的思想活动.那么要如何写呢?以下是小编精心整理的计算机基础学习心得体会范文(通用3篇) ...

  4. JEPLUS学习心得之请假单功能的完成——JEPLUS软件快速开发平台

    为什么80%的码农都做不了架构师?>>>    JEPF软件快速开发平台学习心得之请假单功能的完成(一) 首先我也是点一次接触这个软件快速开发平台,我在学习这个平台的同时简单记录下我 ...

  5. 学计算机编程200字感想,计算机学习心得体会

    你们现在是在用电脑教学吗?本文是出国留学网特意为你准备的<课堂计算机学习心得体会>,希望对你能够提供帮助,如果还有更多需要了解的,欢迎访问出国留学网主页了解更多.https://www.l ...

  6. string 转 json_手写Json解析器学习心得

    哦?从"{"开始,看来是个对象了! 一. 介绍 一周前,老同学阿立给我转了一篇知乎回答,答主说检验一门语言是否掌握的标准是实现一个Json解析器,网易游戏过去的Python入门培训 ...

  7. 计算机90学时培训小结,90学时培训学习心得体会

    人道是课难上,复习课更难上.此话着实不假,我在日常教学过程中也深有体会.毋庸讳言,本人在日常教学过程中抑或自以为是--重复知识点加练习,习题加点评,抑或面对复习课一脸茫然,尤其是面对如何上出高效.新颖 ...

  8. 电脑硬件知识学习_关于网络学习心得体会集锦七篇

    关于网络学习心得体会集锦七篇 当在某些事情上我们有很深的体会时,好好地写一份心得体会,通过写心得体会,可使我们今后少走弯路.那么心得体会怎么写才能感染读者呢?以下是小编为大家收集的网络学习心得体会7篇 ...

  9. STM32学习心得十九:电容触摸按键实验及相关代码解读

    记录一下,方便以后翻阅~ 主要内容 1) 电容触摸按键原理: 2)部分实验代码解读. 实验内容 手触摸按键后,LED1灯翻转. 硬件原理图 上图,TPAD与STM_ADC用跳线帽相连,即TPAD与PA ...

最新文章

  1. B站崩了上热搜,A站跟着躺枪!微信、支付宝:跟我们比起来这是小问题
  2. 当AD服务器置于防火墙内时,所需开放的端口
  3. svn版本控制git(github)
  4. Python之collections容器数据类型
  5. 将yolo标注转换为tensorflow_yolov3标注生成train.txt和test.txt同时做数据清洗
  6. Register-SPWorkflowService 远程服务器返回错误: (404) 未找到
  7. wordpress如何让百度快速收录_如何解决百度收录问题 - 百度蜘蛛池
  8. 记录sqlserver中使用变量
  9. Ubuntu根目录空间不足
  10. android mac转数据格式转换,mac环境下Android 反编译
  11. 几种软件滤波算法的原理和比较(带源码)
  12. C#4.0 可选参数和命名参数
  13. Twisted入门教程(10)
  14. Windows磁盘清理方案
  15. C# 调用outlook 收发邮件
  16. c语言扩展编译器,TKStudio内置51编译器SDCC对C语言的扩展(2)
  17. linux文件夹建立软连接,软连接 - Linux软连接创建及一个“坑”
  18. 抖音数字人主播app
  19. (Note)Python 统计列表中各元素出现的次数
  20. 一文带您了解亚细胞定位(Subcellular Localization)

热门文章

  1. 超萌新级的学习心得——网页打开过程
  2. 2020--管理类联考--网课推荐
  3. Domain Adaptive SiamRPN++ for Object Tracking in the Wild
  4. matlab中sum函数对矩阵的求和总结
  5. 22岁高中学历的我 如何做到CTO年薪50万
  6. java 多线程的好处_线程多有什么好处?使用多线程的优势
  7. Xilinx XCKU115 FPGA 加速卡
  8. IBM磁带产品与磁带加密
  9. ios 自动缩小字体_CSS:禁用iPhone上字体大小的自动缩放
  10. Ubuntu安装VMware tools工具