Node.js笔记入门篇

黑马程序员视频地址:

Node.js与Webpack-01.Node.js入门

基本认识

概念

定义:Node.js® 是一个免费、开源、跨平台的 JavaScript 运行时环境, 它让开发人员能够创建服务器 Web 应用、命令行工具和脚本 

作用:使用Node.js 编写服务器端程序

✓ 编写数据接口,提供网页资源浏览功能等等

✓ 前端工程化:为后续学习Vue 和React 等框架做铺垫


下载

官网:

Node.js — 在任何地方运行 JavaScript

v16.19.0(指定版本:兼容vue-admin-template 模板)

Node.js安装包-windows版本.zip - 蓝奏云

Node.js安装包-mac版.zip - 蓝奏云

安装过程:默认下一步即可
注释事项:
1. 安装在非中文路径下
2. 无需勾选自动安装其他配套软件
成功验证:
1. 打开cmd 终端,输入node -v命令查看版本号
2. 如果有显示,则代表安装成功


使用方法

命令:在VSCode 集成终端中,输入node xxx.js,回车即可执行


fs 模块

模块:类似插件,封装了方法/属性

fs 模块:封装了与本机文件系统进行交互的,方法/属性

加载fs模块对象

模块使用前需加载

const fs = require("fs")

 写入文件内容

fs.writeFile("文件路径", "写入内容", error => {
    //写入后的回调函数
})

报错会传值给error,成功则error值为空 


 读取文件内容

fs.readFile("文件路径", (error, data) => {
    //读取后的回调函数
})

error同上,data为读取的内容,类型为Buffer数据流(直接打印会以16进制形式显示) 

 

 若想正常显示内容,需要调用toString方法


path 模块

__dirname 内置变量 

Node.js 代码中,相对路径是根据终端所在路径来查找的,可能无法找到你想要的文件

建议:在Node.js 代码中,使用绝对路径

//内置变量(获取当前模块目录-绝对路径)
__dirname


path.join() 拼接路径

path.join() 会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连接在一起

path.join(片段1, 片段2, ..., 片段n)


 path.resolve() 与path.resolve()的区别

特性path.joinpath.resolve
返回路径类型相对或绝对路径始终为绝对路径
处理绝对路径参数直接拼接重置解析过程
依赖工作目录不依赖依赖(若无绝对路径参数)
主要用途路径拼接与标准化生成绝对路径

URL中的端口号


http 模块

加载http 模块,创建Web 服务对象

const http = require("http")
const server = http.createServer()

设置监听请求事件

设置监听事件(request),回调函数参数req为接收数据参数,res为响应参数 

req.url:获取请求资源路径 

server.on("request", (req, res) => {
  
})

设置响应头

"Content-Type":内容类型

"text/plain;charset=utf-8":普通文本以及中文编码格式

“text/html;charset=utf-8”:超文本以及中文编码格式

server.on("request", (req, res) => {

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

})

结束本次请求与响应

server.on("request", (req, res) => {

  res.end("响应语句")

})

配置端口号并启动web服务

server.listen(3000, () => {
  console.log("web 服务启动成功")
})

本地测试:

浏览器请求http://localhost:3000 测试

(localhost:固定代表本机的域名)

启动成功后会持续监听,等待下一步操作,可以按CTRL+C退出 


案例:返回html超文本文件

const fs = require("fs")
const path = require("path")
const http = require("http")
const server = http.createServer()
server.on("request", (req, res) => {
  if(req.url === "/index.html")
  {
    fs.readFile(path.join(__dirname, "page/index.html"), (err, data) => {
      res.setHeader("Content-Type", "text/html;charset=utf-8")
      res.end(data.toString())
    })
  }
  else
  {
    res.setHeader("Content-Type", "text/plain;charset=utf-8")
    res.end("你要访问的路径不存在")    
  }
})
server.listen(3000, () => {
  console.log("web 服务启动成功")
})


模块化


CommonJS 标准

模块名或路径:

✓ 内置模块:直接写名字(例如:fs,path,http)

✓ 自定义模块:写模块文件路径(例如:./02.js) 

//01.js    导入

const obj = require(__dirname + "/02.js")
console.log(obj)
//02.js    导出

const userName = "User_A001" 
const userGender = "男"

module.exports = {
  name: userName,
  gender: userGender    //name和gender是对外属性名
}


ECMAScript 标准

 注意:

Node.js 默认支持CommonJS 标准语法

使用ECMAScript 标准语法:

在运行模块所在文件夹新建package.json 文件

并设置{ "type" : "module" } 

//package.json    配置文件

{"type": "module"}


默认导出和导入

//01.js    导入

import obj from "./02.js"
console.log(obj)
//02.js    导出

const userName = "User_A001" 
const userGender = "男"

export default {
  name: userName,
  gender: userGender
}


命名导出和导入

//01.js    导入

import {userName, userGender} from "./02.js"
console.log(userName, userGender)
//02.js    导出

export const userName = "User_A001" 
export const userGender = "男"


npm包管理器 

包的概念


npm简介


常用命令(使用时注意路径)

初始化清单文件(得到package.json 文件,有则略过此命令)

npm init -y

下载本地软件包

npm i 软件包名称

安装所有依赖(项目中不包含node_modules,下载package.json 中记录的所有软件包)

npm i

下载全局软件包(-g 代表安装到全局环境中)

npm i 软件包名 -g

删除软件包 

npm uni 软件包名

nodemon包

nodemon是全局软件包

作用:替代node 命令,检测代码更改,自动重启程序

#下载命令:
npm i nodemon -g
#运行命令:
nodemon 待执行的目标js 文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/967934.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

以简单的方式过一生

这本书大体讲述了三方面的内容:工作、生活、人际交往。我目前工作方面的认知需求比较大,就把工作部分的内容看了一下,其他两个方面就略看了,在这里就不展开了。 一、成为结果导向的人: 如何让自己在职场上成为明确结果…

软件工程教育的革命:AI辅助学习与实践

软件工程教育正面临着巨大的挑战。传统的教学模式往往以理论讲解为主,实践机会不足,导致学生难以将理论知识转化为实际技能。此外,繁琐的代码编写和项目搭建过程也常常耗费学生大量时间和精力,影响学习效率。为了解决这些问题&…

访问Elasticsearch服务 curl ip 端口可以 浏览器不可以

LINUX学习 在虚拟机上面的linux上面用docker 部署Elasticsearch项目后,在linux系统内部用curl ip 端口地址的形式可以访问到Elasticsearch。可以返回数据。 但是在本机的浏览器中输入ip 端口,会报错,找不到服务。 ping 和 trelnet均不通。 …

C++引用深度详解

C引用深度详解 前言1. 引用的本质与核心特性1.1 引用概念1.2 核心特性 2. 常引用与权限控制2.1 权限传递规则2.2 常量引用2.3 临时变量保护1. 样例2. 样例3. 测试 三、引用使用场景分析3.1 函数参数传递输出型参数避免多级指针高效传参 3.2 做函数返回值正确使用危险案例 4. 性…

网易易盾接入DeepSeek,数字内容安全“智”理能力全面升级

今年农历新年期间,全球AI领域再度掀起了一波革命性浪潮,国产通用大模型DeepSeek凭借其强大的多场景理解与内容生成能力迅速“出圈”,彻底改写全球人工智能产业的格局。 作为国内领先的数字内容风控服务商,网易易盾一直致力于探索…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue旅游管理网站

开题报告 本论文探讨了一款采用现代Web开发技术构建的台州市旅游综合信息与服务平台的设计与实现。该系统基于SpringBoot框架,以其轻量级、快速开发和强大的企业级应用支持能力为核心后端技术支撑,结合Vue.js前端框架及ElementUI组件库,为用…

python-leetcode-寻找峰值

162. 寻找峰值 - 力扣&#xff08;LeetCode&#xff09; class Solution:def findPeakElement(self, nums: List[int]) -> int:left, right 0, len(nums) - 1while left < right:mid left (right - left) // 2if nums[mid] < nums[mid 1]:left mid 1else:right …

2.11学习记录

web——CTFHub XSS学习 学习资料&#xff1a;xss&#xff08;跨站攻击&#xff09; 原理 1.黑客发送带有xss恶意脚本的链接给用户 2.用户点击了恶意链接&#xff0c;访问了目标服务器&#xff08;正常的服务器&#xff09; 3.目标服务器&#xff08;正常的服务器&#xff09…

macOS 上部署 RAGFlow

在 macOS 上从源码部署 RAGFlow-0.14.1&#xff1a;详细指南 一、引言 RAGFlow 作为一款强大的工具&#xff0c;在人工智能领域应用广泛。本文将详细介绍如何在 macOS 系统上从源码部署 RAGFlow 0.14.1 版本&#xff0c;无论是开发人员进行项目实践&#xff0c;还是技术爱好者…

ASP.NET Core WebSocket、SignalR

目录 WebSocket SignalR SignalR的基本使用 WebSocket WebSocket基于TCP协议&#xff0c;支持二进制通信&#xff0c;双工通信。性能和并发能力更强。WebSocket独立于HTTP协议&#xff0c;不过我们一般仍然把WebSocket服务器端部署到Web服务器上&#xff0c;因为可以借助HT…

【蓝桥杯嵌入式】4_key:单击+长按+双击

全部代码网盘自取 链接&#xff1a;https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码&#xff1a;3ii2 1、电路图 将4个按键的引脚设置为input&#xff0c;并将初始状态设置为Pull-up&#xff08;上拉输入&#xff09; 为解决按键抖动的问题&#xff0c;我们…

五、AIGC大模型_01大模型基础知识

1、基本概念 1.1 定义 目前&#xff0c;谈到大模型&#xff0c;通常都指的是大语言模型&#xff08;LLMs&#xff0c;即&#xff1a;Large Language Models) 大语言模型是具有大规模参数和复杂计算结构的深度学习模型&#xff0c;通常由深度神经网络构建而成&#xff0c;参数…

微服务与网关

什么是网关 背景 单体项目中&#xff0c;前端只用访问指定的一个端口8080&#xff0c;就可以得到任何想要的数据 微服务项目中&#xff0c;ip是不断变化的&#xff0c;端口是多个的 解决方案&#xff1a;网关 网关&#xff1a;就是网络的关口&#xff0c;负责请求的路由、转发…

Spring Cloud工程完善

目录 完善订单服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 完成商品服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 远程调用 需求 实现 1.定义RestTemplate 2.修改order-service中的OrderService 测试运行 Rest…

网络安全网格架构(CSMA) 网络安全框架csf

CSRF:Cross Site Request Forgy&#xff08;跨站请求伪造&#xff09; 用户打开另外一个网站&#xff0c;可以对本网站进行操作或攻击。容易产生传播蠕虫。 CSRF攻击原理&#xff1a; 1、用户先登录A网站 2、A网站确认身份返回用户信息 3、B网站冒充用户信息而不是直接获取用…

数据库系统课设——教务管理系统

目录 前言 一、总体设计 1、知识背景 2、模块介绍&#xff08;需求分析&#xff09; 3、设计步骤 3.1 页面原型设计 3.2 前端页面开发 3.3 后端接口开发 3.4 数据库设计 二、详细设计 1、 系统功能模块划分 2、 数据流程图 3、数据库概念结构设计 4、 数据库逻辑…

论文概览 |《Cities》2024.12 Vol.155(上)

本次给大家整理的是《Cities》杂志2024年12月第152期的论文的题目和摘要&#xff0c;一共包括73篇SCI论文&#xff01;由于论文过多&#xff0c;我们将通过两篇文章进行介绍&#xff0c;本篇文章介绍第1--第30篇论文! 论文1 Digital economy and risk response: How the digita…

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息?

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息? 如下图所示,我们打开一个子程序,可以看到程序中的寄存器和IO是显示注释信息的, 如果想关闭注释显示的话,怎么设置? 如下图所示,按下下一页的箭头(NEXT键), 如下图所示,点击“编辑”,在弹出的窗口中,选择“…

[QMT量化交易小白入门]-二十二、deepseek+cline+vscode,让小白使用miniQMT量化交易成为可能

本专栏主要是介绍QMT的基础用法&#xff0c;常见函数&#xff0c;写策略的方法&#xff0c;也会分享一些量化交易的思路&#xff0c;大概会写100篇左右。 QMT的相关资料较少&#xff0c;在使用过程中不断的摸索&#xff0c;遇到了一些问题&#xff0c;记录下来和大家一起沟通&a…

快速集成DeepSeek到项目

DeepSeek API-KEY 获取 登录DeekSeek 官网&#xff0c;进入API 开放平台 2. 创建API-KEY 复制API-KEY进行保存&#xff0c;后期API调用使用 项目中集成DeepSeek 这里只展示部分核心代码&#xff0c;具体请查看源码orange-ai-deepseek-biz-starter Slf4j AllArgsConstructo…