node知识点

  1. 谷歌浏览器内运行一个V8的JS引擎,该引擎负责接收JS代码,优化代码,然后在计算机上执行。

  2. node.js: JS代码用于服务器端脚本而开发的环境。

  • 开源
  • 跨平台:不局限于单一的操作系统或硬件架构
  • JS运行时环境
  1. node.js如何工作?
  • V8引擎:包含一个内存堆(数据存储)和调用堆栈(管理函数执行顺序的数据结构)。
  • Libuv:执行输入/输出(I/O)操作的C语言库。Libuv是跨平台的(可以在任何操作系统上运行),并且专注于异步I/O。
  • Event Loop:事件循环运行时,会检查调用栈是否为空。如果调用栈不空,它就会允许正在进行的进程继续。但如果调用栈为空,它就会将回调队列中的第一条指令发送给 JavaScript 引擎。然后,引擎会将该指令(函数)放入调用栈并执行。

  1. node.js是基于谷歌V8引擎的JS运行环境。(后端) 在前端中运行环境为浏览器。

  2. 查看node版本号: node -v

  3. 在node.js中执行js代码:

     1. 进入终端
     2. 输入node要执行的JS文件名
    

1.fs文件系统模块

fs模块时Node.js提供, 用来操作文件的模块,提供了一系列方法和属性,用来满足需求。
1. fs.readFile()读物指定文件中的内容

        fs.readFile(path[, options], callback)
        path: 字符串, 表示文件路径
        options: 以什么编码格式来读取文件(默认指定utf8)
        callback: 文件读取完成后, 通过回调函数拿到读取结果(err, dataStr)。
        注意:读取成功,则err为null
             读取失败, err为错误对象,datastr为undefined

2.  **fs.writeFile()指定文件中写入内容**

        fs.writeFile(file, data[, options], callback)
        file: 指定一个文件路径的字符串,表示文件的存放路径。
        data: 写入的内容
        options: 什么格式写入文件内容 
        callback: 文件写入完成后的回调函数

join() 将数组转化为字符串,是关于数组的方法。
split() 将字符串切割成数组,是关于字符串的方法。


处理文件路径问题:
在使用fs模块操作文件时,如果提供的操作路径以./或…/开头的相对路径时,很容易出现路径动态拼接错误的问题。
原因: 是因为代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径。
解决: 使用fs模块操作文件时,给出完整路径—绝对路径

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

2.path路径模块

处理路径的模块。

  1. path.join() 多个路径片段拼接为完整的路径字符串。

     path.join([...paths])
     ...paths<string>路径片段的序列
     返回值<string> 
    
  2. path.basename() 获取路径中最后一部分,通常获取路径中的文件名。

     path.basename(path[, ext])
     path<string>, 表示一个路径的字符串
     ext<string>, 表示文件扩展名
     返回:<string>表示路径中的一部分
    
  3. path.extname() 可以获取路径中的扩展部分

     path.extname(path)
     path<string>, 表示一个路径的字符串
     返回:<string>返回得到扩展名的字符串
    

3.http模块

用来创建web服务器的模块。

  1. 创建web服务器的基本步骤:

     1. 导入http模块
     2. 创建web服务器实例
     3. 为服务器实例绑定request事件,监听客户端请求
     4. 启动服务器
    

// 1. 导入HTTP模块
const http = require('http')

// 2. 创建web服务器实例
const server = http.createServer()

// 3. 为服务器实例绑定request事件,触发回调函数,
// 里面有req请求对象(包含客户端相关数据和属性), 
// res参数(向客户端返回相应内容) res.end()向客户端发送指定的内容,并结束这次请求的处理过程
server.on('request', function(req, res){
    console.log('someone visit web server');
})

// 4. 启动服务器
server.listen(80, function(){
    console.log('server running at http://127.0.0.1');
}) 

注意: 当调用res.end()方法,向客户端发送中文内容的时候,会出现乱码问题
解决办法: res.setHeader(‘Content-Type’, ‘text/html; charset=utf-8’)


  1. 根据不同的url响应不同的html内容

     基本步骤:
     1. 获取请求的url地址
     2. 设置默认的响应内容
     3. 判断用户请求的是否为 / 或者 /index.js
     4. 判断用户请求的是否是/about.html
     5. 设置Content-Type 响应头,防止中文乱码
     6. 使用res.end() 把内容响应给客户端
    

4.模块化

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。

加载模块: 使用require(),可以加载需要的内置模块、用户自定义模块、第三方模块使用。

当使用require()方法加载其他模块时,会执行加载模块中的代码。


向外共享模块作用域中的成员:

module对象: 每一个 .js自定义模块中都有一个module对象,它里面存储了和 当前模块有关的信息

module.exports 对象:(默认为空对象)
在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。
外界用require()方法导入自定义模块时,得到的就是module.exports所指向的对象。

exports对象: 和module.exports指向一样,但是最终以module.exports所指向对象为主。


  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于构建高性能、可扩展的网络应用程序。它允许我们在服务器端使用JavaScript编写和运行代码,并且具有以下重要的知识点: 1. 异步编程:Node.js采用非阻塞I/O模型,通过事件驱动和回调函数实现异步编程。这使得可以处理大量并发请求而不会阻塞应用程序。 2. 模块化:Node.js支持模块化开发,通过模块系统可以将代码分割成小的、可复用的模块。内置的模块系统提供了大量的核心模块,同时也可以使用第三方模块。 3. 事件驱动:Node.js使用事件驱动的架构,通过触发和监听事件来实现异步处理。核心模块`events`提供了事件的处理能力。 4. 文件系统操作:Node.js提供了对文件系统的操作能力,可以读写文件、创建和删除目录等。核心模块`fs`用于处理文件系统相关操作。 5. 网络通信:Node.js可以创建网络服务器和客户端,通过核心模块`http`和`https`实现HTTP和HTTPS协议的通信。 6. 第三方库和框架:Node.js拥有庞大的第三方库和框架生态系统,如Express.js、Koa.js、Socket.io等,可以加速开发过程。 7. 数据库连接:Node.js可以连接各种数据库,如MySQL、MongoDB、PostgreSQL等。通过相应的驱动程序或ORM框架,可以实现与数据库的交互。 8. 安全性:Node.js有一些内置的安全机制,如防止跨站脚本攻击(XSS)和SQL注入攻击。同时也可以使用第三方模块增强安全性。 这些是Node.js的一些重要知识点,希望对你有帮助!如果你还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值