node.js入门

Node.js是一个开源的JavaScript运行环境,可在服务器端运行JS代码。文章介绍了Node.js的安装、运行方式以及模块化特性,详细讲解了内置模块如path、url和fs的常用方法,如path.join()、url.parse()和fs.readFile()等,还涉及http模块用于创建HTTP服务器的基本操作。
摘要由CSDN通过智能技术生成

目录

一、定义

二、安装

三、运行

四、nodejs的模块化

五、nodejs的内置模块

六、导入

七、path模块

1、path.join()

2、path.resolve()

八、Url模块

1、url.parse()

 2、url.format()

3、 url.resolve()

九、fs模块

1、fs.readFile()

2、fs.readFileSync()

3、fs.writeFile()

4、fs.writeFileSync()

5、fs.appendFile()

6、fs.appendFileSync()

十、http模块


一、定义

什么是node呢?

Node.js是一个开源、跨平台的jsvascript 运行环境。

javascript的运行是在浏览器里面的,因为浏览器里有js的解析引擎,解析引擎是用来解析js代码,并运行,我们单独把浏览器里面的解析引擎拆下来,安装在我们的自己的电脑上。这样的话,我们不需要浏览器,也可以在电脑上运行js代码了。

官方说法:node.js是基于Chrome的v8  javascript引擎的运行环境,node.js才用事件事件驱动、非阻塞I/O模型,使其轻量化和高效。node.js的包管理生态是npm,npm是现在世界上最大的开源程序包库。

二、安装

下载地址:下载 | Node.js (nodejs.org)

版本识别号:v18.16.0

LTS:稳定版 官方推荐 建议安装

Current:最新版本 官方新出的api 体验

主版本号.子版本号.修订版本号  -----  18.16.0   (子版本号为偶数的版本是稳定版本,奇数的版本是非稳定版本,修订版本号变化代表的只是内部bug的一些处理)

建议安装的是LTS的偶数版本

三、运行

方式一:直接在node命令行中写,缺点是不能保存只能查看

方式二:打开本地.js文件,node 文件名       (tab自动补全)        回车

四、nodejs的模块化

node.js的内置模块也叫作node.js的核心模块,它是node.js自带的模块,在下载了node.js后就会有的,并不需要从外部引入。

node.js关于模块的分类

  • 内置模块
  • 自定义模块 (我自己写的插件)
  • 第三方模块(在npm上别人发表的开源软件)

五、nodejs的内置模块

模块作用常用

path模块

用于解析本地文件路径

path.join()  

path.resolve()

url模块

用于解析http请求路径

url.parse()  

url.format()

url.resolve()

fs (flie system)模块

用于操作文件的

fs.readFile()

fs.readFileSync()  

fs.writeFile()  

fs.writeFileSync()  

fs.appendFile()   fs.appendFileSync() 

fs.unlink()

http模块

用于开启http服务器和发送http请求

http.createServer()

创建好的服务.listen()

六、导入

// 我们需要使用哪个模块就导入哪个模块
// 导入模块的语法就是require('模块名')
// 返回值:这个模块里面所有方法和属性的集合
const http = require('http')
const path = require('path')
const url = require('url')
const fs = require('fs')

七、path模块

1、path.join()

    path.join()
    将所有的给定的本地文件路径片段连接在一起
    规范化生成的路径
    == 语法:path.join('/目录1','/目录2','/目录3/目录4',...)
    返回值:'/目录1/目录2/目录3/目录4'

    path、join() 拼接的时候传的是相对路径,拼接好后就是相对路径
    path、join() 拼接的时候传的是绝对路径,拼接好后就是绝对路径

2、path.resolve()

    使用的方式和join一样
    区别:resolve拼接好之后都是绝对路径

八、Url模块

1、url.parse()

作用:把字符串形式的url网络路径解析成对象

语法:ur.parse(urlDtring[,parseQueryString[,slashesDenoteHost]])

  • urlString:表示url网络地址,是一个字符串
  • parseQueryString:是否解析查询字符串,默认是false
  • slashesDenoteHost:如果为true,表示// 后面和前面是主机名(如果是完整的地址true和false就没有区别)
const url = require('url')
let str = 'https://blog.csdn.net/weixin_50863323/article/details/131810865?spm=1001.2014.3001.5502'
console.log(url.parse(str))

 输出:

 2、url.format()

作用:  把url对象合并成url地址字符串

语法:  url.format(url对象)

返回值:  url地址字符串

3、 url.resolve()

作用:把两端url片段,组合成一个完整的url

返回值:url地址字符串

console.log(url.resolve('https://www.baidu.com', '/api/gerLis?a=1'))

九、fs模块

1、fs.readFile()

专门用来"异步"读取文件内容的方法

语法:fs.radFile('你要读取的文件路径','读取文件的格式(选填)',读取成功后的回调函数)

第二个参数是字符集格式  一般是utf-8

const fs = require('fs')

fs.readFile('./text.txt', 'utf-8', function (err, data) {
    // 这个函数是在文件读取完成后执行的函数
    // 接受两个参数
    // error =>读取失败的时候 返回的失败信息
    // data => 读取成功的时候 读取的内容
    console.log('文件读取失败', err)
    console.log('文件读取成功', data)
    
})

2、fs.readFileSync()

专门用来"同步"读取文件内容的方法

语法:fs.radFileSync('你要读取的文件路径','读取文件的格式(选填)')

返回值:就是读取成功的时候读取的内容(data)

如果读取失败,直接打断整个程序,报错

const fs = require('fs')
let data = fs.readFileSync('./text.txt','utf-8')
console.log(data)

3、fs.writeFile()

专门用来"异步"写入文件的方法

语法:fs.writeFile('你要写入的文件路径','你要写入的内容',写入的成功回调函数)

这个方法在写入的时候,是完全覆盖的写法,原先的内容没有了

如果你要写入的文件不存在,那么会自动创建一个文件,并覆盖式写入

const fs = require('fs')
fs.writeFile('./text111.txt', 'hi', () => {
    console.log('写入成功')
})

4、fs.writeFileSync()

专门用来"同步"写入文件的方法

语法:fs.writeFileSync('你要写入的文件路径','你要写入的内容')

// 导入fs模块
const fs = require('fs')
fs.writeFileSync('./gulugulu.miumiu', '呼吸')

5、fs.appendFile()

解决了fs.writeFile()的缺点

往文件追加写入内容

语法:fs.appendFile('你要写入的文件路径','你要写入的内容',写入的成功回调函数)

const fs = require('fs')

fs.appendFile('./text.txt',"hello(我是追加的)",()=>{
    console.log('追加成功')
})

6、fs.appendFileSync()

十、http模块

node内置模块有一块http模块,这个模块专门用来开启服务器的,就是可以把一个电脑上的命令行窗口,当成一个服务器来使用,只能支持http协议。

http模块创建服务的方法

1  http.createServer(function(){})

返回值:一个服务

当这个服务监听一个端口号的时候,就变成了一个服务器

2  我们需要使用这个服务器监听一个端口号

我创建好的服务.listen(我要监听端口号,监听成功的回调函数(选填))

 实现了一个根据接口的路由,输出相应页面

const http = require('http')
const url = require('url')
const fs = require('fs')
// 1 创建一个服务
let server = http.createServer(function(req,res){
    // 请求路径
    console.log(req.url)
    // 解析请求路径,获取路由信息
    let pathName=url.parse(req.url,true).pathname
    console.log(pathName)
    if(pathName == '/index.html'|| pathName == '/index'){
        let data = fs.readFileSync('./public/index.html')
        res.end(data)
    }else{
        res.end('<h1>404</h1>')
    }
})
// console.log(server)

// 2 监听一个端口号
// 端口号 0-65535 
// 不推荐使用 0-1023 
server.listen(8080,function(){
    console.log('监听8080端口成功')
})

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早睡第一人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值