百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

node.js简述_node.js的特点及应用在哪些场景

bigegpt 2025-02-20 14:32 6 浏览

1. 什么是nodejs

他是一个后台管理程序,就类似于 PHP 、 Java 等的后端语言,但是他是轻量的。

说白了 Nodejs 就是运行在服务端的 JavaScript

nodejs是一个时间驱动 I/O 服务端 javascript 环境,基于 Google 的 V8 引擎,V8 引执行JavaScript 的速度快,性能好

2. 它提供的服务

数据服务

文件服务

web服务

3. 他的优势、劣势

优势:

性能高,方便

入门难度低

大公司都在用(BAT)

劣势:

服务器提供的相对较少

相对其他语言,能用的上的学习资料少

对程序员要求高

安装nodemon方法

需要先去官网下载安装包:Nodejs官方网站

选择适合自己的系统位数进行下载

1.全局安装

npm install nodemon -g

2.检查是否安装成功

查看安装的版本

nodemon -v

注意事项:

nodemon 命令只在运行服务的代码去使用,就是写完代码一保存,在浏览器实时刷新的那种

有的时候 cmd 窗口会卡顿,写完代码保存后没有新命令提示,只需要在小黑框内多敲几次回车就好了

在终端里输入 nodemon + 文件名称

或者 node + 文件名称

(列:nodemon node.html)

nodejs 操作

使用 nodejs 中 http 模块来搭建一个 web 服务流程

引入 http 模块(内置模块)

const http = require(“http”)

调用 http crateServer 方法来创建服务

//createServer : 接收的函数,是一个回调函数,当服务器启动后,浏览器访问时代码就会进入到这个函数中
//req :就是 request 的缩写,代表对象,所以他的含义就是 请求对象
//res :就是 response 的缩写,也是代表对象,但是他的含义是 响应对象

const server = http.createServer(function(req,res){
	
	//要设置响应头,否则会出现中文乱码问题
	res.writeHead(200,{
		"content-Type":"text/html; ccahrset=utf-8"
	})

	//hello 就是响应出来的内容
	//这里面可以直接输入 HTML格式 内容
	res.write("hello");

	//注:请求需要结束的,要不结束响应,浏览器会一直转圈圈的
	res.end();

	//监听电脑的某个端口 nodemon
	server.listen(3000, function(){
		console.log("服务器启动,端口是 3000")
	})
})

//注意:定义端口号要从 3000 开始往上

好了,上面就是一套简易的nodejs操作流程了

fs模块:处理文件相关操作,读文件、写文件

fs.readFileSync('要被读取的内容')

列:

通过 fs.readFileSync()去读取另一个文件的内容(另一个文件名列为 :day01 / index.html)

cosnt fileData = fs.readFileSync(./day01 / index.html)

再把读取出来的内容作为 res.write()的参数

代码格式为:res.write(fileData)

//引入 fs 模块
const fs require("fs")

const server = http.createSercer((req,res) => {
	
	//去读取 day01 文件夹下的 index.html 文件
	cosnt fileData = fs.readFileSync(./day01/index.html)

//最后输出那个文件里面的内容
consol.log(fileData.toString);
//注:因为在终端输入出的是二进制模式,所以通过 .toString 这个方法给他转成字符串(仅演示)

//注意:千万不要忘了终止,博主当初没少在这大意,然后就看着它一直转圈圈,跟死循环一样了
})
注:不管是任何的网络请求 HTML 、css 都会到这个回调函数内部

判断当前请求的 url

// 这个啥双引号内的  / 代表http://locahost/3000,没有路径时用 req.url 就是 /
if(req.url === "/"){
	const fileDate = fs.readFileSync("vacode/day01.js");
	req.write(fileDate);
	
	//终止
	res.end()
	
	//如果不能继续往下判断直接return返回
	return
}

各种文件的响应头

HTML文件:‘Content-Type’: ‘text/html; cahrset= +utf-8’

CSS文件:‘Content-Type’: ‘text/css’

JS文件:‘Content-Type’: ‘text/javascript’

img 的 jpg 文件:‘Content-Type’: ‘imge/jpeg’

请求方式

get 请求

post 请求

put 请求

delete 请求

patch 请求

copy 请求

head 请求

options 请求

link 请求

UNlink 请求

purge 请求

lock 请求

unlock 请求

propfind 请求

view 请求

虽然列出了这么多,但是常用的就是 get、post、 put 、delete请求

get 请求

get请求的参数是携带在请求地址上的

在浏览器地址栏中访问的都是get请求

post请求

post请求都是借助请求模拟工具

这里推荐postman(postman官方下载地址)

里面有各种各样的请求,大家都可以试试

模块化

模块就是一个实现特定功能的文件

优点:

避免变量污染

提供代码复用性

提高代码的可维护性

依赖关系清晰

规范:

nodejs - commonjs规范

requirejs - AMD规范

seajs - CMD规范

每一个 nodejs 文件都有一个 module 变量,代表着这个模块

console.log(module)

module.exports这个属性默认是一个对象,我们引入某个模块文件,其实就是引入的这个文件的 module.exports 对象

给它添加一些属性

列:module.exports,name = “张三”

引入一个模块,列:文件名为 day01.js,引入的其实就是它的 module.exports

const M01 = require("./day01.js")

exports

每一个模块文件 ,其实还有一个 exports 变量,他默认指向 module.exports

可以理解为,每个文件的开头,其实有如下一行代码

var exports = module.exports

要暴露接口给调用者使用,可以直接在 exports 身上添加属性

如果要当前模块的某些内容给到调用者去使用,就需要暴露

module.exports = {
	a:a,
	b:b,
	c:c
}
exports.a=a
exports.b=b
exports.c=c

** 如果直接对 exports 赋值,那么就不需要暴露了
原因是切掉了 exports 与 module.exports 之间的联系**

exports = {
	a: a,
	b: b
}
console.log("wo shi 05")

路径

绝对路径:

require(“c:/第一层文件夹 / 第二层文件夹 / 文件”)

相对路径:

require("./文件")

引入 nodejs 核心模块或通过 npm 在当前项目中安装的目录

console.log(require(“jquery/bower.json”))

没有写后缀时,会自动按照 .js 、.json 、 .node 的后缀顺序去查找模块

var a = requier("./common/a")

注:require 路径是有一个文件夹时,默认会找这个文件夹下的 package.json 文件中的 main 属性定义的值。加载的模块就是 main 属性定义的文件。如果这个文件夹下没有 package.json 文件,那么会需要 index.js、index.json、index.node

欢迎诸位检查批评!!!


相关推荐

Linux 系统启动完整流程

一、启动系统流程简介如上图,简述系统启动的大概流程:1:硬件引导UEFi或BIOS初始化,运行POST开机自检2:grub2引导阶段系统固件会从MBR中读取启动加载器,然后将控制权交给启动加载器GRU...

超专业解析!10分钟带你搞懂Linux中直接I/O原理

我们先看一张图:这张图大体上描述了Linux系统上,应用程序对磁盘上的文件进行读写时,从上到下经历了哪些事情。这篇文章就以这张图为基础,介绍Linux在I/O上做了哪些事情。文件系统什么是...

linux入门系列12--磁盘管理之分区、格式化与挂载

前面系列文章讲解了VI编辑器、常用命令、防火墙及网络服务管理,本篇将讲解磁盘管理相关知识。本文将会介绍大量的Linux命令,其中有一部分在“linux入门系列5--新手必会的linux命令”一文中已经...

Linux环境下如何设置多个交叉编译工具链?

常见的Linux操作系统都可以通过包管理器安装交叉编译工具链,比如Ubuntu环境下使用如下命令安装gcc交叉编译器:sudoapt-getinstallgcc-arm-linux-gnueab...

可算是有文章,把Linux零拷贝技术讲透彻了

阅读本文大概需要6.0分钟。作者:卡巴拉的树链接:https://dwz.cn/BaQWWtmh本文探讨Linux中主要的几种零拷贝技术以及零拷贝技术适用的场景。为了迅速建立起零拷贝的概念...

linux软链接的创建、删除和更新

大家都知道,有的时候,我们为了省下空间,都会使用链接的方式来进行引用操作。同样的,在系统级别也有。在Windows系列中,我们称其为快捷方式,在Linux中我们称其为链接(基本上都差不多了,其中可能...

Linux 中最容易被黑客动手脚的关键目录

在Linux系统中,黑客攻击后常会针对关键目录和文件进行修改以实现持久化、提权或隐藏恶意活动。本文介绍下黑客最常修改的目录及其手法。一、/etc目录关键文件有:/etc/passwd和/et...

linux之间传文件命令之Rsync傻瓜式教程

1.前言linux之间传文件命令用什么命令?本文介绍一种最常用,也是功能强大的文件同步和传输工具Rsync,本文提供详细傻瓜式教程。在本教程中,我们将通过实际使用案例和最常见的rsync选项的详细说...

Linux下删除目录符号链接的方法

技术背景在Linux系统中,符号链接(symlink)是一种特殊的文件,它指向另一个文件或目录。有时候,我们可能需要删除符号链接,但保留其指向的目标目录。然而,在删除符号链接时可能会遇到一些问题,例如...

阿里云国际站注册教程:aa云服务器怎么远程链接?

在全球化的今天,互联网带给我们无以计数的便利,而云服务器则是其中的重要基础设施之一。这篇文章将围绕阿里云国际站注册、aa云服务器如何远程链接,以及服务器安全防护如Ddos防火墙、网站应用防护waf防火...

Linux 5.16 网络子系统大范围升级 多个新适配器驱动加入

Linux在数据中心中占主导地位,因此每个内核升级周期的网络子系统变化仍然相当活跃。Linux5.16也不例外,周一最新与网络相关的更新加入了大量的驱动和新规范的支持。一个较新硬件的驱动是Realt...

搭建局域网文件共享服务(Samba),手机电脑都能看喜欢的影视剧

作为一名影视爱好者,为了方便地观看自己喜欢的影视作品,在家里搞一个专门用来存放电影的服务器是有必要的。蚁哥选则用一台Ubuntu系统的电脑做为服务器,共享影音文件,其他同一个局域网内的电脑或手机可以...

分享一个实用脚本—centos7系统巡检

概述这周闲得慌,就根据需求写了差不多20个脚本(部分是之前分享过的做了一些改进),今天主要分享一个给平时运维人员用的centos7系统巡检的脚本,或者排查问题检查系统情况也可以用..实用脚本#!/bi...

Linux 中创建符号链接的方法

技术背景在Linux系统里,符号链接(SymbolicLink),也被叫做软链接(SoftLink),是一种特殊的文件,它指向另一个文件或者目录。符号链接为文件和目录的管理带来了极大的便利,比...

一文掌握 Linux 符号链接

符号链接(SymbolicLink),通常被称为“软链接”,是Linux文件系统中一种强大而灵活的工具。它允许用户创建指向文件或目录的“快捷方式”,不仅简化了文件管理,还在系统配置、软件开发和日...