node.js part1

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.rhkb.cn/news/403148.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于CDIO概念的人工智能物联网系统开发与实施的人才培养研究

目录 1. 引言(Introduction) 2. AIoT技术及其培训特点(The Characteristics of AIOT and Its Training) 3. 基于CDIO概念的AIoT课程改革(CDIO Concept-based Reform of AIOT Course) 4. AIoT课程内容安…

Idea里配置Maven版本

一、安装Maven 1. 官网下载maven地址: Maven – Download Apache Maven Binary是可执行版本,已经编译好可以直接使用。 Source是源代码版本,需要自己编译成可执行软件才可使用。tar.gz和zip两种压缩格式,其实这两个压缩文件里面包含的内容是…

Verilog刷题笔记50

题目: Given the following state machine with 1 input and 2 outputs: 解题: module top_module(input in,input [9:0] state,output [9:0] next_state,output out1,output out2);assign next_state[0]~in&(state[0]|state[1]|state[2]|state[3]…

Java方法01:什么是方法

本节视频链接:Java方法01:什么是方法?_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p45&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 Java中的‌方法‌是一段执行特定任务的代码片段,‌它是程序的基本构…

C#中的S7协议

S7协议-S7COMM S7COMM 进行写 CTOP->PDU type已知枚举值 0X0E连接请求0x0d连接确认0x08断开请求0x0c断开确认0x05拒绝访问0x01加急数据0x02加急数据确认0x04用户数据0x07TPDU错误0x0f数据传输 S7Header->ROSCTR已知枚举值 0X01JOB REQUEST。主站发送请求0x02Ack。从站…

Android MediaRecorder 视频录制及报错解决

目录 一、start failed: -19 二、使用MediaRecorder录制视频 2.1 申请权限 2.2 布局文件 2.3 MediaRecordActivity 2.4 运行结果 三、拓展 3.1 录制视频模糊(解决) 3.2 阿里云OSS上传文件 3.2.1 权限(刚需) 3.2.2 安装SDK 3.2.3 使用 相关链接 一、start failed…

基于spring boot的小型诊疗预约平台的设计与开发

TOC springboot262基于spring boot的小型诊疗预约平台的设计与开发 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进…

C++之模版初阶

目录 前言 1.泛型编程 2.函数模版 2.1函数模版概念 2.2函数模版格式 2.3函数模版的原理 2.4函数模版的实例化 2.5模版参数的匹配原则 3.类模版 3.1类模版的定义格式 3.2类模版的实例化 结束语 前言 前面我们学习了C的类与对象和内存管理,接下来我们继续学习…

【等保测评】Mysql测评中使用的命令汇总

一、身份鉴别 a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; mysql -uroot -p 查看登录是否需要输入口令鉴别用户身份 select user,host from mysql.user 查看是否存在相同账户…

苹果手机怎么清理重复照片的解决方案

随着智能手机摄像头技术的飞速发展,我们越来越依赖iPhone来记录生活中的点点滴滴。不可避免地,这也导致了大量重复照片的产生,这些重复照片不仅占用了宝贵的存储空间,还使得照片库显得混乱无序。本文将介绍苹果手机怎么清理重复照…

【项目实战】C++视频共享点播系统

目录 一、项目介绍 1.1 对视频共享点播系统的认识 1.2服务端程序负责功能 1.3 服务端功能模块划分 1.4 项目界面演示 1.5预备知识 二.环境搭建 2.1 安装 Jsoncpp 库 2.1.1 使用jsoncpp 2.2 引入httplib库 2.2.1 安装Git(如果你的系统尚未安装Git&#xf…

【算法】弗洛伊德(Floyd)算法求最短路径

目录 1.弗洛伊德(Floyd)算法介绍 2.弗洛伊德算法图解分析 2.1思路: 2.2图和矩阵的准备 2.3弗洛伊德算法的步骤: 2.4疑问 3.弗洛伊德算法的代码实现 3.1创建图并显示距离表与前驱表 3.2完整代码 1.弗洛伊德(Flo…

qt笔记之qml中的TextEdit、TextInput、TextArea、TextField的区别

qt笔记之qml中的TextEdit、TextInput、TextArea、TextField的区别 code review! 文章目录 qt笔记之qml中的TextEdit、TextInput、TextArea、TextField的区别一.对比二.C环境中类似功能的控件 一.对比 TextEdit、TextInput、TextArea和TextField都是用于文本输入的组件&#…

硅谷物理服务器有哪些关键优势和特点

硅谷的物理服务器设施全球知名,为各类企业提供了卓越的IT基础设施支持。下面将逐一探讨硅谷物理服务器的关键优势和特点,rak小编为您整理发布硅谷物理服务器有哪些关键优势和特点。 1. 卓越的性能 高性能计算能力:硅谷的物理服务器采用最新一…

内网渗透之icmp隧道传输

原理 # 为什么要建立隧道 在实际的网络中,通常会通过各种边界设备软/硬件防火墙、入侵检测系统来检查对外连接的情况,如果发现异常,会对通信进行阻断。 ​ # 什么是隧道 就是一种绕过端口屏蔽的方式,防火墙两端的数据包通过防火墙…

算法刷题记录 八十五【图论的广度优先搜索理论基础】

前言 图论章节第2篇。 第1篇:记录 八十二【图论理论基础及深度优先搜索算法】; 本文:记录 八十五【图论的广度优先搜索理论基础】 一、广度优先搜索理论基础 广度优先搜索理论基础 参考链接 1.1 知识点框架 1.2 模拟广度搜索的过程 在有向…

YOLT论文精读

引言 很早之前,在本校老师的带领下接触到了目标检测领域。在卫星遥感图像方面有一篇经典的论文《You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery》。科研小白一开始反复看了几遍也没弄懂,决定写博客来加深自己的理解。…

小米5c解除BL锁刷机root

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 解锁BL锁 1. 下载安装 miflash_unlock:https://miuiver.com/miunlock/,登录小米账号(需要和解锁设备绑定的账号一致&#…

进程第二部分

1.任务:子进程做的事情和父进程差不多(子承父业) 父进程创建出子进程之后,子进程做的事情与父进程完全不同(自力更生) 2.exec: int exec l(const char *path, const char *arg, ...); int exec v(const c…

指向派生类的基类指针、强转为 void* 再转为基类指针、此时调用虚函数会发生什么?

指向派生类的基类指针、强转为 void* 再转为基类指针、此时调用虚函数会发生什么? 1、无论指针类型怎么转,类对象内存没有发生任何变化,还是vfptr指向虚函数表,下面是成员变量,这在编译阶段就已经确定好了&#xff1b…