node.js part1

news2024/9/20 16:44:43

Node.js
Node.js 是一个跨平台JavaScript 运行环境,使开发者可以搭建服务器端的 JavaScript 应用程序。作用:使用Node.js编写服务器端程序
编写数据接口,提供网页资源浏览功能等等
前端工程化:为后续学习Vue和React等框架做铺垫.

 node.js
建议大家装nvm来控制node版本

1. Node.js 是什么?
基于Chrome 的 V8 引擎封装,独立执行JavaScript 代码的环境
2. Node.js 与浏览器环境的JS最大区别?
Node.js 环境中没有 BOM 和 DOM
3. Node.js 有什么用?
编写后端程序:提供数据和网页资源等
前端工程化:集成各种开发中使用的工具和技术
4. Node.js 如何执行代码?
在 VSCode 终端中输入: node xxx.js 回车即可执行(注意路径)

fs模块-读写文件

模块:类似插件,封装了方法/属性
fs模块:封装了与本机文件系统进行交互的,方法/属性语法:
1.加载fs模块对象
const fs=require('fs')/fs是模块标识符:模块的名字

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

3.读取文件内容
fs.readFile('文件路径',(err,data)=>{                                                                                                //读取后的回调函数
//data 是文件内容的Buffer 数据流 })

/**目标:基于 fs 模块读写文件内容
1. 加载 fs 模块对象
2,写入文件内容
3. 读取文件内容
*/
// 1. 加载 fs 模块对象
const fs = require('fs')
//2. 写入文件内容
fs.writeFile('./test.txt', 'hello, Node.js', (err) => {

if (err) console.log(err)
else console.log('写入成功')
})
然后就会出现一个txt文件,里面写的hello node.js

//3.读取文件内容
fs.readFile('./test.txt',(err,data)=>{
 if(err) console.log(err)
 else console.log(data)//68 65 6c 6f........是一个buffer 16进制数据流
 else console.log(data.toString())读出来为空是因为读写是异步的,把读那段嵌套在写的else就可以了
})
默认会覆盖,除非设置成追加模式

老师就是想告诉我们:用path模块实现路径处理,可以解决默认路径非调试文件路径的问题

 找不到就会弹出-4058,一个绝对路径和相对路径闹麻了

注意,注意,注意:html中的js的每一句需要分号,不然压缩后会报错,js需要规范书写格式

resultStr是写入内容的参数,又不是回调函数的参数

/* 目标1:压缩 html 代码
* 需求:把回车符 \r,换行符 \n 去掉,写入到新 html 文件中
*1.1读取源 html 文件内容
*1.2正则替换字符串
* 1.3 写入到新的 html 文件中
*/
// 1.1 读取源 html 文件内容
const fs = require('fs')
const path = require('path')
fs.readFile(path.join(_dirname, 'public/index.html'),(err, data)=>{
    if(err) console.log(err)
    else {
        const htmlStr = data.toString()
        //1.2正则替换字符串
        const resultStr = htmlStr.replace(/[\r\n]/g,'')
        console.log(resultStr)
        // 1.3 写入到新的 html 文件中
        fs.writeFile(path.join(_dirname, 'dist/index.html'), resultStr, err =>{
            if (err) console.log(err)
            else console.log'写入成功')
            })
        }
})

url端口号

URL:统一资源定位符,简称网址,用于访问服务器里的资源
端口号:标记服务器里不同功能的服务程序
端口号范围:0-65535之间的任意整数
http://hmajax.itheima.net:80/api/province
协议  域名 端口号 资源路径
注意:http协议,默认访问80端口

web服务

const http=require('http')
const server=http.createServer()
    // 1.2监听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即可

在浏览器打开localhost:3000即可打开

浏览时钟例子

req是你向服务器请求的数据对象,res则是服务器对客户端发出的响应内容,以及相应格式对象

const fs = require('fs')
const path = require('http')
// 1,基于http模块,创建Web服务
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
    // 2. 使用 req.url 获取请求资源路径,并读取 index.html 里字符申内容返回给请求方
    if (req.url === '/index.html') {
        fs.readFile(path.join(__dirname, 'dist/index.html'), (err, data) => {
            if (err) console.log(err)
            else {
                // 设置响应内容类型—html超文本字符串,让浏览器解析成标签网页等
                res.setHeader('Content—Type', 'text/html;charset=utf—8')
                res.end(data.toString())
            }
        })
    } else {
        // 3.其他路径,暂时返回不存在提示
        res.setHeader('Content—Type', 'text/plain;charset=utf—8')
        res.end('你要访问的资源不存在')
    }
})
server.listen(8080, () => {
    console.log('Web 服务启动成功了')
})

模块化

什么是模块化?
定义:
CommonJS 模块是为Nodejs打包JavaScript代码的原始方式。Nodejs还支持浏览器和其他JavaScript 运行时使用的 ECMAScript模块标准。 在Node.js中,每个文件都被视为一个单独的模块。
概念:项目是由很多个模块文件组成的
好处:提高代码复用性,按需加载,独立作用域使用:需要标准语法导出和导入进行使用

 commonjs标准

需求:定义utils.js模块,封装基地址和求数组总和的函数
使用:
1 . 导出:modiule.exports = {}
2 .导入:require('模块名或路径‘)

const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, val) => sum += val, 0)
module.exports = {
对外属件名1: baseURL,
时外属性名2: getArraySum
}

模块名或路径:
/内置模块:直接写名字(例如:fs, path, http)
/自定义模块:写模块文件路径(例如:./utils.js)

不带大括号,是简写,如果带了大括号,记得return值

ECMAscript标准,命名导出导入

1.Node.js支持哪2种模块化标准?                                                                                  >CommonJS标准语法(默认)
>ECMAScript 标准法

2.ECMAScript 标准,命名导出和导入的语法?                                                                                >导出:export 修饰定义的语句
>导入:import{同名变量}from'模块名或路径'

3.ECMAScript 标准,默认导出和导入的语法?                                                                                  >导出: export default {}
>导入:import变量名from'模块名或路径

软件包管理npm

1 .初始化清单文件:npm init -y (得到  package json文件,有则略过此命令)
2 .下载软件包 :npmi软件包名称
3 .使用软件包 

在空白文件夹,终端npm init -y,然后npm i dayjs即可

1,报错 idealTree:05: sill idealTree buildDeps看2

2.在终端打npm cache verify清一下npm内存再重新下载dayjs

 

/**
* 目标:使用 npm 下载 dayjs 软件包来格式化日期时间
*1.(可选)初始化项目清单文件,命令:npm init -y
*2.下载软件包到当前项目,命令:npmi软件包名称
*3.使用软件包
*/
//3,使用软件包
const dayjs = require('dayjs')
const nowDateStr = dayjs().format('YYYY-MM-DD')
console.log(nowDateStr)
 

安装所有依赖

传输时,就是因为这些包的积极太大上传下载太浪费时间,软件包会舍弃

输入npm i,下载package.json的所有软件包

npm -全局软件包nodemon

软件包区别:
 本地软件包:当前项目内使用,封装属性和方法,存在于node_modules
 全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置

nodemon作用:替代node命令,检测代码更改,自动重启程序
使用:
1 .安装:npm i nodemon - g ( -g代表安装到全局环境中)
2 .运行:nodemon待执行的目标js文件
需求:启动准备好的项目,修改代码保存后,观察自动重启应用程序

输入server.js,打开服务,会显示nodemon的状态

Node.js与Webpack-14.npm全局软件包-nodemon_哔哩哔哩_bilibili,大量的弹幕可以帮助你

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51单片机学习记录-数码管操作

这里实现了静态数码管的显示。51单片机一共有可以显示4个数字&#xff0c;可以通过控制P2(4-2)的端口选择8个数字显示器中的一个显示数字&#xff0c;控制P0端口写入显示的数值信息。将操作的逻辑使用了函数Nixie进行了封装。 #include <8051.h>unsigned char NixieTabl…

PHP汽车保养维修信息管理系统小程序源码

&#x1f697;爱车守护神器&#xff01;揭秘“汽车保养维修信息管理系统”全攻略&#x1f50d; &#x1f525;【开篇揭秘&#xff1a;为何你需要它&#xff1f;】&#x1f525; 在这个快节奏的时代&#xff0c;爱车不仅是代步工具&#xff0c;更是生活品质的象征。但你是否曾…

C++_基本语法笔记_继承和多态

继承 思想与Java差不多 基本语法 语法&#xff1a;class 子类 : 继承方式 父类 继承方式 将访问权限&#xff0c;上升到保护权限&#xff0c;上升到更高的私有权限 继承哪些部分 继承过程中&#xff0c;即使权限不能访问&#xff0c;也会全部继承下来&#xff08;非静…

Liunx搭建Rustdesk远程桌面服务

1、环境准备 Linux&#xff1a;centos7.9 rustdesk server安装包 很多新服务器并没有 wget 和unzip 可以通过yum自行安装下&#xff0c;如果系统中有wget但不能使用&#xff0c;直接卸载重装即可。 yum install wget wget --no-check-certificate https://github.com/rust…

商家福音!阿里巴巴1688又一线下选品中心落地!

7月31日&#xff0c;阿里旗下1688台州选品中心正式开园。后续1688将在核心产业带陆续开设线下选品中心。选品中心的运营模式为“四位一体”&#xff1a;政府搭台&#xff0c;1688提供技术、销售渠道和数字化能力&#xff0c;本地产业链的链主负责运营&#xff0c;本地源头工厂入…

跟着iMeta学做图|ggplot2绘制多个饼图展示菌群物种组成

原始教程链接&#xff1a;https://github.com/iMetaScience/iMetaPlot/tree/main/221017multi-pieplot 写在前面 饼图 (Pie Plot) 在微生物组研究中可以用来展示菌群物种组成&#xff0c;可以起到与堆叠柱状图相同的展示效果。本期我们挑选2022年4月5日刊登在iMeta上的The imp…

浅谈大模型私有化+精调:面向垂直行业与特定场景之需

今天将继续“AI技术”系列&#xff0c;探讨大模型的私有化和精调&#xff0c;以便让预训练的通用模型更好地适应特定的任务或行业需求。 当然&#xff0c;从产品经理的视角出发&#xff0c;我们不会非常深入&#xff08;鄙人能力也有限&#xff09;&#xff0c;而是建立相关的…

HTTP协议和web服务器(Tomcat)

Author&#xff1a;Dawn_T17&#x1f965; 目录 二.请求协议 三.响应协议 四.协议解析 Socket 编程 Servlet介绍 Web服务器 五.Tomcat 简介 HTTP 即超文本传输协议 它是一种应用层协议&#xff0c;用于客户端&#xff08;如浏览器&#xff09;和服务器之间的通信。 为什…

《网络安全自学教程》- Linux安全标识符、身份鉴别、访问控制

《网络安全自学教程》 操作系统有4个安全目标&#xff0c;也就是说想要保证操作系统的安全&#xff0c;就必须实现这4个需求&#xff1a; 标识系统中的用户和进行身份鉴别。依据系统安全策略对用户的操作进行访问控制&#xff0c;防止用户和外来入侵者对计算机资源的非法访问。…

mysql误删数据恢复记录

背景 1、数据库版本 5.7.36&#xff0c;由于误操作删掉了表的所有数据&#xff0c;但是数据库备份每天凌晨进行、只能从备份恢复昨日的全量数据&#xff0c;当日的数据将会丢失 查看binlog配置 尝试恢复 1、找到binlog文件 误删除后立即刷新binlog flush logs 2、binlog转…

OpenAI GPT-2 model use with TensorFlow JS

题意&#xff1a;使用 TensorFlow JS 应用 OpenAI GPT-2 模型 问题背景&#xff1a; Is that possible to generate texts from OpenAI GPT-2 using TensorFlowJS? 是否可以使用 TensorFlowJS 生成 OpenAI GPT-2 的文本&#xff1f; If not what is the limitation, like mo…

010集——按值传递、按引用传递等方法——C#学习笔记

按值传递参数 这是参数传递的默认方式。在这种方式下&#xff0c;当调用一个方法时&#xff0c;会为每个值参数创建一个新的存储位置。 实际参数的值会复制给形参&#xff0c;实参和形参使用的是两个不同内存中的值。所以&#xff0c;当形参的值发生改变时&#xff0c;不会影…

MDK常见概念

&#xff08;1&#xff09;typedef定义结构体类型 typedef struct {uint32_t BaudRate;uint32_t WordLength;uint32_t StopBits;uint32_t Parity;uint32_t Mode;uint32_t HwFlowCtl;uint32_t OverSampling; } UART_InitTypeDef; &#xff08;2&#xff09;寄存器 (3)DMA DMA 是…

2024年第八届计算生物学与生物信息学国际会议 (ICCBB 2024)即将召开!

2024 年第八届计算生物学和生物信息学国际会议&#xff08;ICCBB 2024&#xff09;将于2024年11月28 -30在日本京都召开&#xff0c;ICCBB 2024是展示理论、实验和应用计算生物学和生物信息学领域新进展和研究成果的主要论坛之一。我们相信&#xff0c;通过大家的共同努力&…

【问题】容器部署场景Spring Bean偶尔循环依赖问题

问题描述 在本地开发中不会发生循环依赖问题&#xff0c;但是在容器场景下&#xff0c;制作成镜像启动后异常出现Bean的循环依赖。 问题原因 开发者在代码中使用构造函数注入来引用依赖的 Bean&#xff0c;这种方式可能导致循环依赖问题。虽然 Spring 框架具备循环依赖的处理…

thinkphp漏洞之sql注入漏洞-builder处漏洞

目录 适用版本 环境搭建 文件下载安装 配置文件修改 漏洞分析 适用版本 注&#xff1a;thinkphp版本&#xff1a;5.0.13<ThinkPHP<5.0.15 、 5.1.0<ThinkPHP<5.1.5 环境搭建 文件下载安装 在github上面下载相应版本&#xff0c;下载think文件&#xff0c;…

乳制品企业怎么防止信息泄露?使用加密软件保障数据安全

乳,制品行业使用加密软件主要是为了保障企业的核心数据安全&#xff0c;防止敏感信息泄露&#xff0c;如:产品配方、生产流程、销售数据等&#xff0c;通过使用加密软件&#xff0c;来保护重要的数据.。一、加密软件在乳制品企业的重要性1、保护重要数据:乳制品企业拥有大量敏感…

SQL 变量写法、排序问题 <12>

一、定义变量排序 目的1&#xff1a;合并学生表和分数表&#xff0c;将每个班分别排名 目的2&#xff1a;遇到相同分数&#xff0c;考虑还是不考虑相同分数排名 学生表&#xff08;1000条&#xff09;和分数表&#xff08;6000条&#xff09;分别如下 1、定义变量、简答排序…

datax和datax-web打包成docker运行

概述 datax和datax-web从一台机器迁移到另一台时&#xff0c;要重新搭建一套运行环境&#xff0c;比较麻烦&#xff1b;打包成docker镜像后迁移就方便多了; 因为我的mysql版本是8&#xff0c;需要在datax的read和write中手动添加8的jdbc驱动 所以我先各自下载好了datax和data…

JavaEE 的入门

1. 学习JavaEE Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开 发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习JavaEE主要是学习Java在 企业中如何应⽤. 前⾯学习的是Java基础, JavaEE 主要学习Jav…