Node.js开发概述-程序员宅基地

技术标签: web前端  前端框架  node.js  前端  javascript  

Node开发概述

1.3为什么选择Node

使用JavaScript语法开发后端应用

一些公司要求前端工程师掌握Node开发

生态系统活跃,有大量开源库可以使用

1.4Node是什么

node是一个基于Chrome V8引擎的javaScript代码运行环境

2.3PATH环境变量

存储系统中的目录,在命令行中执行命令的时候系统会自动去这些目录中查找命令的位置

3.Node.js快速入门

3.1Node.js的组成

3.2Node.js基础语法

命令行窗口快捷键:shift+鼠标右键

cd…/ :上一级目录

cd :进入该级目录

4.Node.js模块化开发

1.1 JavaScript开发弊端

JavaScript在使用时存在两大问题,文件依赖和命名冲突。

1.2生活中的模块化开发
1.3软件中的模块化开发

一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。

1.4Node.js中模块化开发规范

node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到

模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块。

1.7模块成员导出的另一种方式

exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准

3.1什么是系统模块

node运行环境提供的API,因为这些ApI都是以模块化的方式进行开发的,所以我们又称Node

3.2系统模块fs文件操作

f:file文件 s:system系统,文件操作系统

const fs = require('fs');

读取文件内容

fs.reaFile('文件路径/文件名称'[,'文件编码'],callback);

读取文件语法实例:

//1。通过模块的名字fs对模块进行引用
const fs = require('fs');

//2.通过模块内部的readFile读取文件内容
fs.readFile('./helloworld.js','utf8',(err,doc) => {
    //如果文件读取出错err 是一个对象 包含错误信息
    //如果文件读取正确err 是null
    //doc是文件读取的结果

    console.log(err);
    console.log(doc);
});


3.3系统模块fs文件操作

写入文件内容

fs.writeFile('文件路径/文件名称','数据',callback);
const fs = require('fs');

fs.writeFile('./demo.txt','即将要写入的内容',err => {
    if (err!=null){
        console.log(err);
        return;
    }
        console.log('文件内容写入成功')
})

3.4系统模块path路径操作

为什么要进行路径拼接

不同操作系统的路径分隔符不统一

/public/uploads/avatar

windows上是 \ /

Linux 上是 /

3.5相对路径VS绝对路径

大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录

在读取文件或者设置文件路径时都会选择绝对路径

使用__dirname获取当前文件所在的绝对路径

4.第三方模块

4.1

4.2获取第三方模块(别人写好的、具有特定功能的、我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又名包)

npm(node package manager):node的第三方模块管理工具

下载:npm install模块名称

卸载 :npm unintall package模块名称

全局安装与本地安装

命令行工具:全局安装

库文件:本地安装

5.第三方模块nodemon

nodeman是一个命令行工具,用以辅助项目开发

在Node.js中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐

使用步骤

1.使用npm install nodemon -g下载它

6.第三方模块nrm

nrm(npm registry manager):npm下载地址切换工具

npm默认的下载地址在国外,国内下载速度慢

使用步骤

1.使用npm install nrm -g下载它

2.查询可用下载地址列表nrm ls

3.切换npm下载地址nrm use下载地址名称

7.第三方模块Gulp

基于node平台开发的前端构建工具

将机械化操作编写成任务,想要执行机械化操作时执行的一个命令行命令任务就能自动执行了

7.1Gulp能做什么

项目上线,HTML、CSS、JS文件压缩合并

语法转换(es6、less…)

公共文件抽离

修改文件浏览器自动刷新

7.2Gulp使用

1.使用npm install gulp下载gulp库文件

2.在项目根目录下建立gulpfile.js文件

3.重构项目的文件夹结构src目录放置源代码文件dist目录放置构建后文件

4.在gulpfile.js文件中编写任务

5.在命令行工具中执行gulp任务

7.3Gulp中提供的方法

gulp.src():获取任务要处理的文件

gulp.dest():输出文件

gulp.task():建立gulp任务

gulp.watch():监控文件的变化

7.4Gulp插件

gulp-htmlmin: html文件压缩

gulp-csso :压缩css

gulp-bable:javaScript语法转化

gulp-less: less语法转化

gulp-uglify:压缩混淆JavaScript

gulp-file-include:公共文件包含

browsersync:浏览器实时同步

8.package.json文件

8.1 node_modules文件夹的问题

1.文件夹以及文件过多过碎,当我们将项目整体拷贝给别人的时候,传输速度会很慢。

2.复杂的模块依赖关系需要被记录下来,确保模块的版本和当前保持一致,否则会导致当前项目运行报错

9.服务器端基础概念
9.1 url

统一资源定位符,又叫URL(Uniform Resource Locator),是专为标识Internet网上资源位置而设立的一种编址方式,我们平时所说的网页地址指的是即是URL。

9.2URL的组成

传输协议://服务器IP或域名:端口/资源所在位置标识

http://www.itcast.cn/news/20181018/09152238514.html

http:超文本传输协议,提供了一种发布和接收HTML页面的方法

9.3开发过程中客户端和服务器端说明
9.4创建web服务器
//引用系统模块
const http = require('http');
//创建web服务器
const app = http.createServer();
//当客户端发送请求的时候
app.on('request',(req,res) =>{
//响应
res.end('<h1>hi,user</h1>');
});
//监听3000端口
app.listen(3000);
console.log('服务器已启动,监听3000端口,请访问localhost:3000')

9.5HTTP协议

1.HTTP协议的概念

超文本传输协议(Hyper Text Transfer Protocol,缩写:HTTP)规定了如何从网站服务器传输超文本到本地浏览器,它基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ollgamMb-1657702413718)(D:\appfiles\Typora\image-20220428112438075.png)]

2.报文

在HTTP请求和响应的过程中传递的数据块就叫报文,包括要传送的数据和一些附加信息,并且要遵守规定好的格式。(冒号分割的键值对)

3.请求报文

1.请求方式(Request Method)

GET 请求数据

POST 发送数据

2.请求地址(RequestURL)

app.on('request',(req,res)=>{

	req.headers//获取请求报文
	req.url//获取请求地址
	req.method//获取请求方法
});

3.响应报文

1.HTTP状态码

200请求成功

404请求的资源没有被找到

500服务器端错误

400客户端请求有语法错误

2.内容类型

text/html

text/css

application/javascript

image/jpeg

application/json

4.请求参数

客户端向服务端发送请求时,有时需要携带一些客户信息,客户信息需要通过请求参数的形式传递到服务器端,比如登录操作。

4.1get请求参数

参数被放置在浏览器地址栏中,例如:http://localhost:3000/?name=zhangsan&age=20

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45936141/article/details/125767729

智能推荐

黑马程序员——Java基础---I/O流(上[异常])_gephi显示java调用目标异常-程序员宅基地

文章浏览阅读512次。——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 引言 讲解IO流之前为什么先讲解异常和File类呢? 因为File表示的是IO流将来要操作的文件,所以我们需要学习File类。 而操作文件无非就是上传文件和下载文件,在这个操作的过程中可能出现问题, 出现问题后,我们需要对对应的代码进行处理。所以我们需要学习异常异常。 I/O流操作之上传下载 异_gephi显示java调用目标异常

mavon-editor的使用-程序员宅基地

文章浏览阅读3.5k次。vue3+vite+ts下使用富文本mavon-editor使用(编辑)使用(预览)_mavon-editor

Unity3D中删除指定路径的文件+删除文件夹_u3d directory.delete-程序员宅基地

文章浏览阅读7k次,点赞5次,收藏22次。一.目的1.想知道:Unity3D中删除Application.streamingAssetsPath里面的文件二.参考1.三.注意1.四.操作:成功:能够删除指定文件夹下面的文件1.运行结果指定文件夹下面的文件删除了,并且不会报错1.代码 /// <summary> /// 功能:删除指定文件夹下面的文件 /// </summary> /// <returns>&l..._u3d directory.delete

折线图的基本实现_echarts折线图1日到30日的数据结构-程序员宅基地

文章浏览阅读166次。实现步骤ECharts最基本的代码结构:引入js文件,DOM容器,初始化对象,设置optionx轴数据:数据1:[‘1月’,‘2月’,‘3月’,‘4月’,‘5月’,‘6月’,‘7月’,‘8月’,‘9月’,‘10月’,‘11月’,‘12月’]y轴数据:数据2:[3000,2800,900,1000,800,700,1400,1300,900,1000,800,600]图表类型:在series下设置type:line代码 <!-- 1.ECharts最基本的代码结构 _echarts折线图1日到30日的数据结构

FPV眼镜和VR眼镜的区别,穿越机搭配FPV眼镜优缺点分析-程序员宅基地

文章浏览阅读1k次,点赞21次,收藏16次。在建筑巡检中,通过使用穿越机和FPV眼镜,可以高效、准确地检查建筑物的结构和设施,提高巡检效率和安全性。而VR眼镜则通过头戴式显示器(HMD)和其他传感设备,如手柄和追踪系统,向用户呈现一个全方位构建的虚拟环境,用户可以在其中自由移动和互动,虚拟世界会根据用户的行动做出相应的反应。其次,使用穿越机和FPV眼镜需要具备一定的飞行技巧和操作经验,用户需要接受专业的培训和指导。1. 实时反馈:FPV眼镜可以实时传输飞机的摄像头图像,使飞行者能够即时了解飞机的位置和周围环境,为飞行者提供更为直观的飞行体验。

malloc hook初探_hook malloc 为什么不发生符号充定义-程序员宅基地

文章浏览阅读6.2k次,点赞3次,收藏6次。http://www.jianshu.com/p/0d7aa3166eec在程序中设置钩子,用来在malloc, realloc,free的时候,对其进行检查,可以看到对应的函数调用后的地址是什么。这个有时候可以用在debug的时候使用。几个变量__malloc_hook这是一个函数指针变量,指向的是: void * function(size_t size,_hook malloc 为什么不发生符号充定义

随便推点

【MySQL进阶之路丨第十篇】一文带你精通MySQL排序、分组、连接_mysql 分组排序-程序员宅基地

文章浏览阅读1w次,点赞55次,收藏46次。MySQL中可以使用ORDER BY语句对查询结果进行排序。ORDER BY语句按照指定的列或表达式对结果进行排序,可以按升序(默认)或降序排列。模板如下:SELECT column1, column2, ...FROM tableORDER BY {{column}} {{order}};将需要排序的列名替换为{{column}},并将排序顺序(ASC或DESC)替换为{{order}}MySQL中可以使用ORDER BY语句对查询结果进行排序。ORDER BY语句按照指定的列或表达式_mysql 分组排序

解决java.net.ConnectException: Connection refused: connect报错_apache. der by.client .am.disconnectexception: jav-程序员宅基地

文章浏览阅读312次。在application.yml配置文件中加入:eureka: client: register-with-eureka: false fetch-registry: false_apache. der by.client .am.disconnectexception: java.net.connectexcetionerror

Golang.org/x库初探2——text库_golang.org/x/text-程序员宅基地

文章浏览阅读1.6k次。golang/x 库下text库详解,提供国际化、编码转换等丰富功能_golang.org/x/text

GNN与GCN相关论文_iterative gcn-程序员宅基地

文章浏览阅读799次。论文:Understanding the Representation Power of GraphNeural Networks in Learning Graph TopologyA github:Understanding-GCN 论文:Iterative Visual Reasoning Beyond Convolutions 论文:Cognitive Graph for Multi..._iterative gcn

Linux下安装GPU显卡驱动_显卡the kernel header file '/usr/lib/kernel//include-程序员宅基地

文章浏览阅读2k次。1、下载去官网选择相匹配的驱动下载2、禁用nouveau网上大部分教程都说要禁用nouveau,这里我看了一下我的,应该是没有启用,也就没有执行这一步。3、安装执行命令:sh NVIDIA-Linux-x86_64-440.100.run3.1 报错:ERROR: You appear to be running an X server; please exit X before installing. For further details, please see ._显卡the kernel header file '/usr/lib/kernel//include/linux/kernel.h' does no

计算机网络技术 FTP和DHCP服务器的配置与应用_dhcp server和ftp server-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏9次。1实验目的在Windows server 2012平台下,掌握FTP、DHCP服务的安装配置。2 实验内容Windows server 2012 的FTP、DHCP服务安装。3 实验原理FTP(File Transfer Protocol,文件传输协议) 是网络上用来传输文件的应用层协议。用户通过FTP协议登录上FTP服务器,查看服务器上的共享文件,可以把文件从服务器下载到本地计算机,或把本地计算机的文件上传到服务器。FTP承载在TCP协议之上,拥有丰富的命令集,支持对登录用户进行身份验证,并且可_dhcp server和ftp server