当前位置: 首页 > news >正文

node.js笔记

  • 首先:浏览器能执行 JS 代码,依靠的是内核中的 V8 引擎(C++ 程序)
  • 其次:Node.js 是基于 Chrome V8 引擎进行封装(运行环境)
  • 区别:都支持 ECMAScript 标准语法,Node.js 有独立的 API


  • 1、下载 node.js

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


  • 2、使用 node.js 

  1. 如果在浏览器里面打开加载 js 文件,可以在控制台里面打开该文件,其实就是在 node环境下编译
  2. 如果用 node.js 加载,需要在终端里面 执行 命令【node 文件名】
  3. 注意:Node.js 环境中没有 BOM 和 DOM
  • tips1:vscode终端可以使用快捷键 【ctrl + `  (` 是esc下面的那个键)】,
  • tips2:输入node 后,后面的文件名,可以输入一部分,按 tab 键补全【如下面的 01.js, 输入 01 或者 0 ,按 tab 补全就行,但是只有当前目录可以,如下面的 04 文件夹下面的文件,需要补全文件夹名称,才能补全旗下的文件】


  • 3、fs 模块 - 读写文件

  1. 模块:类似插件,封装了方法/属性
  2. fs 模块:封装了与本机文件系统进行交互的,方法/属性
  3. 语法:
    1. 加载 fs 模块对象
    2. 写入文件内容
    3. 读取文件内容
// 1. 加载 fs 模块对象
const fs = require('fs')
// 2. 写入文件内容
fs.writeFile('./test.txt', '有该文件就直接写入,没有创建写入', (err) => {if (err) console.log(err)else console.log('写入成功')
})
// 3. 读取文件内容
fs.readFile('./test.txt', (err, data) => {if (err) console.log(err)// data 是 buffer 16 进制数据流对象// .toString() 转换成字符串else console.log(data.toString())
})


  • 4、path 模块 - 路径处理

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

  • 也就是在下图中,读取文件 test.txt 不是从 index.js ,然后  ../ 开始寻找
  • 而是从 终端路径开始寻找,也就是说 test.txt 从 03-code 文件夹 ,然后  ../ 开始寻找

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

2、补充:__dirname 内置变量(获取当前模块目录-绝对路径

        windows: D:\xx\xxxx\03

        mac:         /Users/xxx/03

3、注意:path.join() 会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连接在一起,它会根据你的系统,拼接好路径

4、语法:

        1)加载 path 模块

        2)使用 path.join 方法,拼接路径 

const fs = require('fs')
// 1. 引入 path 模块对象
const path = require('path')
// 2. 调用 path.join() 配合 __dirname 组成目标文件的绝对路径
console.log(__dirname)fs.readFile(path.join(__dirname, '../test.txt'), (err, data) => {if (err) console.log(err)else console.log(data,data.toString())
})


  • 5、http 模块-创建 Web 服务

1、需求:创建 Web 服务并响应内容给浏览器

2、步骤:  

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

        2)监听 request 请求事件,设置响应头和响应体  

        3)配置端口号并启动 Web 服务  

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

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

// 1.1 加载 http 模块,创建 Web 服务对象
const http = require('http')
const server = http.createServer()
// 1.2 通过 on 监听 request 事件,设置响应头和响应体
server.on('request', (req, res) => {// 设置响应头-内容类型-普通文本以及中文编码格式res.setHeader('Content-Type', 'text/plain;charset=utf-8')// 设置响应体内容,结束本次请求与响应res.end('欢迎使用 Node.js 和 http 模块创建的 Web 服务')
})
// 1.3 配置端口号并启动 Web 服务
server.listen(3000, () => {console.log('Web 服务启动成功了')
})终端:ctrl + c 停止服务


  • 6、node.js 模块化

1、使用:

        1)导出:module.exports = {}

        2)导入:require('模块名或路径')

2、模块名或路径:

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

        2)自定义模块:写模块文件路径(例如:xxx.js) 

3、node.js 使用的是 CommonJS 标准,CommonJS 模块是为 Nodejs 打包 JavaScript 代码的原始方式,Nodejs 还支持浏览器和其他 JavaScript 运行时使用的 ECMAScript 模块标准,在 Nodejs 中每个文件都被视为一个单独的模块


  • 7、ECMAScript 标准 - 默认导出和导入

1、默认标准使用:

        1)导出:export default {}

        2)导入:import 变量名 from '模块名或路径'

2、注意:Node.js 默认支持 CommonJS 标准语法

3、如需使用 ECMAScript 标准语法,在运行模块所在文件夹新建 package.json 文件,并设置 { "type" : "module" }


  • 8、ECMAScript 标准 - 命名导出和导入

命名标准使用:

        1)导出:export 修饰定义语句

        2)导入:import { 同名变量 } from '模块名或路径‘

如何选择:

        1)按需加载,使用命名导出和导入

        2)全部加载,使用默认导出和导入 


  • 9、包的概念

1、什么是包?  

        将模块,代码,其他资料聚合成的文件夹

2、包分为哪 2 类呢?  

        项目包:编写项目代码的文件夹  

        软件包:封装工具和方法供开发者使用

3、package.json 文件的作用?  

        记录软件包的名字,作者,入口文件等信息

4、导入一个包文件夹的时候,导入的是哪个文件?

         默认 index.js 文件,或者 main 属性指定的文件

  • 10、npm - 软件包管理器

  1. npm 是 Node.js 标准的软件包管理器
  2. 在 2017 年 1 月时,npm 仓库中就已有超过 350000 个软件包,这使其成为世界上最大的单一语言代码仓库,并且可以确定几乎有可用于一切的软件包。
  3. 它起初是作为下载和管理 Node.js 包依赖的方式,但其现在也已成为前端JavaScript 中使用的工具。
  4. 下载的包会存放在当前项目下的 node_modules 中,并记录在 package.json 中
1、初始化清单文件 : npm init -y      (得到 package.json 文件,有则略过此命令)
2、下载软件包	 : npm i 软件包名称
3、使用软件包

当项目中只有 package.json 没有 node_modules 怎么办?

当前项目下,没有 node_modules就不能正常运行,我们需执行 npm i 安装所有依赖软件包


  • 11、npm - 全局软件包 nodemon

1、软件包区别:

        1)本地软件包:当前项目内使用,封装属性和方法,存在于 node_modules

        2)全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置

2、nodemon 作用:替代 node 命令,检测代码更改,自动重启程序【总的来说,之前的node ‘文件路径’ 启动服务,只执行一次,而 nodemon 却开启后一直检测,代码改变保存后,编译一次,同时终端输出】

3、使用:

        1)安装:npm i nodemon -g(-g 代表安装到全局环境中)

        2)运行:nodemon 待执行的目标 js 文件


  • 12、Node.js 总结

1、Node.js 模块化:

        1)概念:每个文件当做一个模块,独立作用域,按需加载

        2)使用:采用特定的标准语法导出和导入进行使用

2、CommonJS  标准:一般应用在 Node.js 项目环境中

3、ECMAScript 标准:一般应用在前端工程化项目中

 

相关文章:

node.js笔记

首先:浏览器能执行 JS 代码,依靠的是内核中的 V8 引擎(C 程序) 其次:Node.js 是基于 Chrome V8 引擎进行封装(运行环境) 区别:都支持 ECMAScript 标准语法,Node.js 有独立…...

mysql 增量备份与恢复使用详解

目录 一、前言 二、数据备份策略 2.1 全备 2.2 增量备份 2.3 差异备份 三、mysql 增量备份概述 3.1 增量备份实现原理 3.1.1 基于日志的增量备份 3.1.2 基于时间戳的增量备份 3.2 增量备份常用实现方式 3.2.1 基于mysqldump增量备份 3.2.2 基于第三方备份工具进行增…...

9月5日上课内容 第一章 NoSQL之Redis配置与优化

本章结构 关系型数据库和非关系型数据库 概念介绍 ●关系型数据库: 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是…...

QT 第四天

一、设置一个闹钟 .pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend…...

nrf52832 GPIO输入输出设置

LED_GPIO #define LED_START 17 #define LED_0 17 #define LED_1 18 #define LED_2 19 #define LED_3 20 #define LED_STOP 20设置位输出模式: nrf_gpio_cfg_output(LED_0); 输出高电平:nrf_gpio_pin_set(LED_0); 输…...

MyBatis 动态 SQL 实践教程

一、MyBatis动态 sql 是什么 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列…...

CSS 斜条纹进度条

效果&#xff1a; 代码&#xff1a; html: <div class"active-line flex"><!-- lineWidth&#xff1a;灰色背景 --><div class"bg-line"><div v-for"n in 30" class"gray"></div></div><div…...

JavaScript(1)每天10个小知识点

​ 目录 1. JavaScript 有哪些数据类型&#xff0c;它们的区别&#xff1f;**2. 数据类型检测的方式有哪些**3. null 和 undefined 区别**4. intanceof 操作符的实现原理及实现**5. 如何获取安全的 undefined 值&#xff1f;**6. Object.is() 与比较操作符 “”、“” 的区别*…...

scanf和scanf_s函数详解

目录 引言&#xff1a; 1.scanf函数的用法&#xff1a; 2.scanf_s函数的用法&#xff1a; 3.scanf和scanf_s的区别&#xff1a; 结论&#xff1a; 引言&#xff1a; 在C语言中&#xff0c;输入函数scanf是非常常用的函数之一&#xff0c;它可以从标准输入流中读取数据并将其…...

基于SSM的在线购物系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

认识JVM的内存模型

从上一节了解到整个JVM大的内存区域&#xff0c;分为线程共享的heap&#xff08;堆&#xff09;&#xff0c;MethodArea&#xff08;方法区&#xff09;&#xff0c;和线程独享的 The pc Register&#xff08;程序计数器&#xff09;、Java Virtual Machine Stacks&#xff08;…...

Java8实战-总结19

Java8实战-总结19 使用流映射对流中每一个元素应用函数流的扁平化 使用流 映射 一个非常常见的数据处理套路就是从某些对象中选择信息。比如在SQL里&#xff0c;你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。 对流中每一个元素应用函数 流支持…...

论文浅尝 | 训练语言模型遵循人类反馈的指令

笔记整理&#xff1a;吴亦珂&#xff0c;东南大学硕士&#xff0c;研究方向为大语言模型、知识图谱 链接&#xff1a;https://arxiv.org/abs/2203.02155 1. 动机 大型语言模型&#xff08;large language model, LLM&#xff09;可以根据提示完成各种自然语言处理任务。然而&am…...

【云计算网络安全】解析DDoS攻击:工作原理、识别和防御策略 | 文末送书

文章目录 一、前言二、什么是 DDoS 攻击&#xff1f;三、DDoS 攻击的工作原理四、如何识别 DDoS 攻击五、常见的 DDoS 攻击有哪几类&#xff1f;5.1 应用程序层攻击5.1.1 攻击目标5.1.2 应用程序层攻击示例5.1.3 HTTP 洪水 5.2 协议攻击5.2.1 攻击目标5.2.2 协议攻击示例5.2.3 …...

64位Linux系统上安装64位Oracle10gR2及Oracle11g所需的依赖包

在64位Linux系统上安装64位Oracle 10gR2,到底需要装哪些包? 这不是一个完整的安装教程,仅仅探讨在64位CentOS 5.8系统上安装64位Oracle 10gR2,到底需要装哪些RPM包. 实验环境VMWare Workstation 8.0 Linux发行版: CentOS 5.8 x86_64 Kernel版本: 2.6.18-308.el5 Oracle Dat…...

Unity InputSystem 基础使用之鼠标交互

资料 官方文档 导入InputSystem包 Package Manager 搜索Input System进行下载启用该包&#xff0c;会重启Unity Editor 注意 InputSystem可以和旧版输入系统一起使用 设置&#xff1a;Project Settings->Player->Other Settings->Configuration->Active Input…...

《算法竞赛·快冲300题》每日一题:“二进制数独”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 二…...

CnosDB 签约京清能源,助力分布式光伏发电解决监测系统难题。

近日&#xff0c;京清能源采购CnosDB&#xff0c;升级其“太阳能光伏电站一体化监控平台”。该平台可以实现电站设备统一运行监控&#xff0c;数据集中管理&#xff0c;为操作人员、维护人员、管理人员提供全面、便捷、差异化的数据和服务。 京清能源集团有限公司&#xff08;…...

汇编:lea 需要注意的一点

lea和mov的效用上不一样&#xff0c;如果当前%rsi的值是0&#xff0c; lea 0x28(%rsi),%rax &#xff0c;这个只是计算一个地址&#xff0c;而不是去做地址访问。 mov 0x8(%rsi),%rsi&#xff0c;而这个mov&#xff0c;在计算完地址&#xff0c;还要访问内存地址。如果rsi是0&a…...

SQL语言的分类:DDL(数据库、表的增、删、改)、DML(数据的增、删、改)

数据库管理系统&#xff08;数据库软件&#xff09;功能非常多&#xff0c;不仅仅是存储数据&#xff0c;还要包含&#xff1a;数据的管理、表的管理、库的管理、账户管理、权限管理等。 操作数据库的SQL语言&#xff0c;基于功能&#xff0c;划分为4类&#xff1a; 1、数据定…...

微信小程序精准扶贫数据收集小程序平台设计与实现

摘 要 近些年以来&#xff0c;随着我国的互联网技术的不断进步&#xff0c;计算机科学技术的发展也在不断的快速发展。在当下“互联网”的带动下&#xff0c;我国的各行各业&#xff0c;上到政府机关下到小微企业都通过互联网的发展带动取得了很好的发展势头。我国这两年来通过…...

PostgreSQL 流复制搭建

文章目录 前言1. 配置环境1.1 环境介绍1.2 主库白名单1.3 主库参数配置 2. 流复制搭建2.1 备份恢复2.2 创建复制用户2.3 参数修改2.4 启动并检查2.5 同步流复制2.6 同步复制级别 3. 流复制监控3.1 角色判断3.2 主库查看流复制3.3 延迟监控3.4 备库查询复制信息 前言 PostgreSQ…...

机器学习笔记之最优化理论与方法(十)无约束优化问题——共轭梯度法背景介绍

机器学习笔记之最优化理论与方法——共轭梯度法背景介绍 引言背景&#xff1a;共轭梯度法线性共轭梯度法共轭方向共轭VS正交共轭方向法共轭方向法的几何解释 引言 本节将介绍共轭梯度法&#xff0c;并重点介绍共轭方向法的逻辑与几何意义。 背景&#xff1a;共轭梯度法 关于…...

Mybatis核心对象及工作流程

目录 一、mybatis核心对象 &#xff08;1&#xff09;SqlSession对象直接操作数据库 &#xff08;2&#xff09;SqlSession对象通过代理对象操作数据库 二、mybatis工作流程 一、mybatis核心对象 &#xff08;1&#xff09;SqlSessionFactoryBuilder SqlSession工厂构建者对…...

无swing,高级javaSE毕业之贪吃蛇游戏(含模块构建,多线程监听服务),已录制视频

JavaSE&#xff0c;无框架实现贪吃蛇 B站已发视频&#xff1a;无swing&#xff0c;纯JavaSE贪吃蛇游戏设计构建 文章目录 JavaSE&#xff0c;无框架实现贪吃蛇1.整体思考2.可能的难点思考2.1 如何表示游戏界面2.2 如何渲染游戏界面2.3 如何让游戏动起来2.4 蛇如何移动 3.流程图…...

Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)

目录 一、消费者组详细消费流程图解二、消费者的重要参数 一、消费者组详细消费流程图解 创建一个消费者网络连接客户端&#xff0c;主要用于与kafka集群进行交互&#xff0c;如下图所示&#xff1a; 调用sendFetches发送消费请求&#xff0c;如下图所示&#xff1a; (1)、Fet…...

算法通关村-----位运算在海量元素中查找重复元素的妙用

用4KB内存寻找重复元素 问题描述 给定一个数组&#xff0c;包含从1到N的整数&#xff0c;N最大为32000&#xff0c;数组可能还有重复值&#xff0c;且N的取值不定&#xff0c;若只有4KB内存可用&#xff0c;如何打印数组中所有的重复元素。 问题分析 Java中存储整数使用int…...

RabbitMQ: Publish/Subscribe结构

生产者 package com.qf.mq2302.publishSub;import com.qf.mq2302.utils.MQUtils;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;public class EmitLog {private static final String EXCHANGE_NAME "logs";public static void main…...

单片机-蜂鸣器

简介 蜂鸣器是一种一体化结构的电子讯响器&#xff0c;采用直流电压供电 蜂鸣器主要分为 压电式蜂鸣器 和 电磁式蜂鸣器 两 种类型。 压电式蜂鸣器 主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成&#xff0c;当接通电源后&…...

华为云云耀云服务器L实例评测 | 分分钟完成打地鼠小游戏部署

前言 在上篇文章【华为云云耀云服务器L实例评测 | 快速部署MySQL使用指南】中&#xff0c;我们已经用【华为云云耀云服务器L实例】在命令行窗口内完成了MySQL的部署并简单使用。但是后台有小伙伴跟我留言说&#xff0c;能不能用【华为云云耀云服务器L实例】来实现个简单的小游…...

网站设计与建设第一章/网站内容优化关键词布局

引论 &#xff1a; 通常来说&#xff0c;当你创建类时&#xff0c;就是在描述那个类的对象的外观与行为。除非你用new创建那个类的对象&#xff0c;否则&#xff0c;你实际上并未获得任何东西。执行new来创建对象时&#xff0c;数据存储空间才被分配&#xff0c;其方法才供外界…...

兴国建设局网站/全网营销推广怎么做

1、Fork原始仓库imagePy fork ImagePy仓库 #将父仓库fork到自己账户下&#xff0c;XXXX/.git&#xff08;A仓库&#xff09; 2、汉化 在lang/Chinese/Plugins下创建*.dic 进行汉化 汉化后&#xff0c;push到自己的仓库中&#xff08;A仓库中&#xff09; 3、pull request到父…...

网站上做时时彩代理赚钱吗/男生技能培训班有哪些

关于IAP升级的方法和原理&#xff0c;网上已经有很多资料了&#xff0c;这块就不再说了&#xff0c;现在就将bootloader和app配置方法整理如下&#xff1a; APP程序就是一个简单的LED闪烁。 APP设置为从FLASH中启动&#xff1a; STM32F103C8T6单片机flash有64K…...

交友系统网站建设/外链是什么

点击安装教程查看&#xff0c;Tensorflow 1.8.0 需要CUDA9.0&#xff0c;cudnn 7的版本。 pip install tensorflow 1.8.0会比较慢&#xff0c;解决方法如下&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu1.8.0常在使用python的时候需…...

一个ecs服务器建设多个网站/怎么注册一个自己的网址

为什么80%的码农都做不了架构师&#xff1f;>>> 2015年5月28日上午11时许,携程旅行网官方网站突然陷入瘫痪,打开主页后点击时均显示“Service Unavailable”,经过12小时的紧急抢修后&#xff0c;携程网终于恢复&#xff0c;可正常访问。虽然事情已经过去几天了&…...

iis怎么建设网站内容/盐城seo推广

看手机微信&#xff0c;看到说美团出了1个小程序框架&#xff0c; mpvue 搜下来试试&#xff0c;看了网上的一个对比 ----------------- 以下为引用 我们对微信小程序、mpvue、WePY 这三个开发框架的主要能力和特点做了横向对比&#xff0c;帮助大家了解不同框架的侧重点&…...