初入Node.js必备知识

Node.js因什么而生,作用是干什么?

Node.js是一个用c和c++打造的一个引擎,他能够读懂JavaScript,并且让JavaScript能够和操作系统打交道的能力

JavaScript 原本只能在浏览器中运行,但随着Web应用程序越来越复杂,仅靠客户端JavaScript很难满足需求

当时缺乏一个基于JavaScript的服务器端运行环境,开发人员无法使用同一种语言完成端到端的开发

Node.js 的诞生是为让JavaScript 开发人员能够使用一种熟悉的语言构建高性能、可伸缩的服务器端应用程序

简单来说就是Node.js 就是为了让JavaScript语言可以写后端代码

使用Node.js 构建后端服务

这里使用node去构建一个简易的服务器,让大家体验一下Node.js 的强大

  • 首先通过npm init去创建一个项目
  • 接下来安装express
npm i express

然后你就可以构建后端服务了

这里我们简单介绍一下express

Express 是一个基于 Node.js 平台的极简、灵活的 Web 应用开发框架。
它提供了一系列强大的特性,使得创建 Web 应用变得更加快捷和方便。主要特点包括:

  1. 路由管理:可以轻松定义不同的 URL 路径与相应的处理函数之间的映射,实现对不同请求的差异化处理。
  2. 中间件支持:允许在请求处理流程中添加各种中间件,用于执行如请求体解析、日志记录、身份验证、错误处理等通用功能。
  3. 模板引擎集成:能够方便地与各种模板引擎(如 Pug、EJS 等)集成,以便生成动态的 HTML 页面。
  4. 便捷的 HTTP 方法支持:对常见的 HTTP 方法(如 GET、POST、PUT、DELETE 等)提供了简洁的接口。

使用 Express 框架,可以大大提高 Node.js Web 应用的开发效率,减少重复的代码编写工作,使开发者能够更专注于业务逻辑的实现。

接下来我们创建一个index.js

const express = require("express");const app = express();
const port = 3000;app.get("/", (req, res) => {res.send("Hello World!!!");
});app.listen(port, () => {console.log(`项目启动在-http://localhost:${port}`);
});

这段 Node.js 代码使用 Express 框架创建了一个简单的 Web 应用。

运行这段代码后,就可以在浏览器中访问 http://localhost:3000 ,看到页面显示 Hello World!!!

  • 运行index.js代码
image.png
  • 浏览器显示效果
image.png

可见Node.js的功能有多么的强大

Node.js模块规范

  • 什么是模块化?

模块化是一种将复杂的软件系统分解为独立、可重用的模块的设计理念和方法。

  • JavaScript什么时候开始拥有模块化系统

JavaScript本身在早期并没有内置的模块化系统。然而,随着前端开发的复杂性不断增加,对模块化的需求也日益迫切。

CommonJS规范在服务器端的Node.js环境中很早就被采用,为JavaScript提供了一种模块化的方式。

在浏览器端,ES6引入了原生的模块化语法,包括 importexport 关键字,使得 JavaScript 在语言层面上拥有了更正式和标准的模块化支持。于 2015 年 6 月发布 ES6 开始,引入了原生的模块化语法。

可以说早期是Node.js官方为了适配JavaScript打造了模块系统,现在JavaScript自己搞了一个,属实算是小小背刺一刀了

  • CommonJS规范
    // 导出模块module.exports = { someFunction: function() {...}, someVariable: 'value' };// 引入模块const myModule = require('./myModule'); 
  • ES6模块规范
    // 导出模块export function someFunction() {...} export const someVariable = 'value'; // 引入模块import { someFunction, someVariable } from './myModule'; 

Node.js中使用模块

那么我们就以操作文件为例,介绍一下模块化系统的使用

  • 首先我们先创建一个文本文件,里面的内容为Hello World

image.png

  • 接下来创建一个index.js

通过引入fs模块去操作文件系统

const fs = require("fs");

通过fs的readFileSync可以读取文件

const content = fs.readFileSync("./text.txt", (err, data) => {if (err) {console.log(err);}
});

接下来我们打印结果content,可以看到输出的结果为Hello World

image.png

还可以使用writeFileSync去创建一个文件,并向文件内输入内容

fs.writeFileSync("./readme.md", "Hello World");console.log(fs.statSync("./readme.md"))
  • fs.writeFileSync("./readme.md", "Hello World"); 这行代码会同步地将字符串 "Hello World" 写入当前目录下名为 readme.md 的文件中。如果文件不存在,会创建该文件;如果文件已存在,会覆盖其原有内容。

  • console.log(fs.statSync("./readme.md")) 这行代码会同步获取 readme.md 文件的状态信息,并将其打印到控制台。返回的状态信息包含了文件的各种属性,如文件大小、创建时间、修改时间等。

image.png

这里只是举例说明其中一个模块的部分功能

在Node.js里面还有很多的模块化系统可以供我们使用,详情可以阅读Node.js 中文网 (nodejs.cn)

总结

本文介绍了初入Node.js必备知识

相信看到这里的你一定对Node.js有了一个初步的了解

Node.js的强大远远不止于此,以后我们会继续细致的去讲解Node.js的奥秘

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

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

相关文章

绩效管理,不再只是一串数字!

在数字化转型的大潮中,绩效管理不再只是枯燥的数字统计。搭贝的绩效管理系统,为企业提供灵活多样的考核模式与工具,助力实现科学、高效的管理。无论是KPI(关键绩效指标)还是OKR(目标与关键成果)…

EHS是什么意思啊?EHS系统有什么作用?

当你走进一家现代化的工厂或企业,你可能会好奇:这些繁忙的生产线和高效运转的设备背后,是如何确保员工的安全、环境的保护和产品的质量的?答案可能就藏在“EHS系统”这个名词里。 那么,EHS是什么意思啊?它…

【C#】函数方法、属性分文件编写

1.思想 分文件编写是面向对象编程的重要思想,没有实际项目作为支撑很难理解该思想的精髓,换言之,一两个函数代码量因为太少无法体现分文件编写减少大量重复代码的优势。 2.项目结构介绍 整项目的名称叫AutoMetadata,是一个基于W…

JAVA:文件防重设计指南

1、简述 在现代应用程序中,处理文件上传是一个常见的需求。为了保证文件存储的高效性和一致性,避免重复存储相同的文件是一个重要的优化点。本文将介绍一种基于哈希值的文件防重设计,并详细列出实现步骤。 2、设计原理 文件防重的基本思路…

Dns被莫名篡改的逆向分析定位(笔记)

引言:最近发现用户的多台机器上出现了Dns被莫名修改的问题,从系统事件上看并未能正常确定到是那个具体软件所为,现在的需求就是确定和定位哪个软件具体所为。 解决思路: 首先到IPv4设置页面对Dns进行设置:通过ProcExp…

setjmp和longjmp函数使用

这里用最简单直接的描述&#xff1a;这两组函数是用于实现类似vscode全局的标签跳转功能&#xff0c;setjmp负责埋下标签&#xff0c;longjmp负责标签跳转。 #include <stdio.h> #include <stdlib.h> #include <setjmp.h>jmp_buf envbuf1; jmp_buf envbuf2;…

HttpServer内存马

HttpServer内存马 基础知识 一些基础的方法和类 HttpServer&#xff1a;HttpServer主要是通过带参的create方法来创建&#xff0c;第一个参数InetSocketAddress表示绑定的ip地址和端口号。第二个参数为int类型&#xff0c;表示允许排队的最大TCP连接数&#xff0c;如果该值小…

JAVA每日作业day7.4

ok了家人们今天学习了Date类和simpleDateformat类&#xff0c;话不多说我们一起看看吧 一.Date类 类 java.util.Date 表示特定的瞬间 ( 日期和时间 ) &#xff0c;精确到毫秒。 1.2 Date类的构造方法 public Date(): 用来创建当前系统时间对应的日期对象。 public Date(long …

【java开发环境】多版本jdk 自由切换window和linux

win10 一、准备 各种版本的jdk&#xff0c;按自己的需要下载。 我这里是需要jdk17和jdk8。 1、jdk17 下载&#xff1a;Java Downloads | Oracle&#xff0c;选择exe后缀文件 2、jdk8下 载&#xff1a;Java Downloads | Oracle&#xff0c;选择exe后缀文件 二、详细步骤 1、…

Linux线程:编织并发的梦幻世界

目录 &#x1f6a9;引言 &#x1f6a9;听故事&#xff0c;引概念 &#x1f6a9;生产者消费者模型 &#x1f680;再次理解生产消费模型 &#x1f680;挖掘特点 &#x1f6a9;条件变量 &#x1f680;条件变量常用接口 &#x1f680;条件变量的原理 &#x1f6a9;引言 上一篇…

打卡第2天----数组双指针,滑动窗口

今天是参与训练营第二天&#xff0c;这几道题我都看懂了&#xff0c;自己也能写出来了&#xff0c;实现思路很重要&#xff0c;万事开头难&#xff0c;希望我可以坚持下去。希望最后的结果是量变带来质变。 一、理解双指针思想 leetcode编号&#xff1a;977 不止是在卡尔这里…

一篇文章说清楚Filter(过滤器)、Interceptor(拦截器)和AOP(切面儿)

文章目录 前言一、Filter&#xff08;过滤器&#xff09;1.说明2.实现filterChain.doFilter() 3.order优先级4.解决跨域5.拦截返回错误信息JSON 二、Interceptor&#xff08;拦截器&#xff09;1.说明2.实现preHandlepostHandleafterCompletion 3.执行顺序图4.排除特定路径拦截…

论文学习——基于类型检测的动态自适应多目标优化算法

论文题目&#xff1a;Dynamic adaptive multi-objective optimization algorithm based on type detection 基于类型检测的动态自适应多目标优化算法&#xff08;Xingjuan Cai a,b, Linjie Wu a,∗, Tianhao Zhao a, Di Wu c, Wensheng Zhang d, Jinjun Chen e&#xff09;Inf…

yum命令提示 错误:rpmdb: BDB0113 Thread/process 4153/139708200269632

一、报错信息 [rootDawn yum.repos.d]# yum clean all 错误&#xff1a;rpmdb: BDB0113 Thread/process 4153/139708200269632 failed: BDB1507 Thread died in Berkeley DB library 错误&#xff1a;db5 错误(-30973) 来自 dbenv->failchk&#xff1a;BDB0087 DB_RUNRECOVE…

HTTP与HTTPS协议区别及应用场景

HTTP&#xff08;超文本传输​​协议&#xff09;和 HTTPS&#xff08;安全超文本传输​​协议&#xff09;都是用于通过网络传输数据的协议。虽然它们有一些相似之处&#xff0c;但在安全性和数据保护方面也存在显著差异。 在这篇博文中&#xff0c;我们将探讨 HTTP 和 HTTPS…

pytorch中的contiguous()

官方文档&#xff1a;https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为&#xff1a; Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory forma…

自然语言处理与Transformer模型:革新语言理解的新时代

引言 自然语言处理&#xff08;NLP&#xff09;是人工智能和计算机科学的一个重要分支&#xff0c;旨在使计算机能够理解、生成和处理人类语言。随着互联网和数字化信息的爆炸性增长&#xff0c;NLP在许多领域中的应用变得越来越重要&#xff0c;包括&#xff1a; 搜索引擎&am…

Python实现PowerPoint演示文稿到图片的批量转换

PowerPoint演示文稿作为展示创意、分享知识和表达观点的重要工具&#xff0c;被广泛应用于教育、商务汇报及个人项目展示等领域。 然而&#xff0c;面对不同的分享场景与接收者需求&#xff0c;有时需要我们将PPT内容以图片形式保存与传播。这样能够避免软件兼容性的限制&…

OpenEuler 22.03 LTS SP3 CVE-2024-6387 OpenSSH 漏洞修复指南

一、漏洞概括 漏洞名称OpenSSH Server远程代码执行漏洞漏洞编号CVE-2024-6387公开时间2024-7-1CVSS 3.1分数8.1威胁类型代码执行漏洞等级暂无技术细节状态已公开在野利用状态不明确PoC状态x86已公开EXP状态未公开 OpenSSH是SSH&#xff08;Secure Shell&#xff09;协议的开源…

腾讯课堂即将停止服务?来试试这款开源的知识付费系统

项目介绍 本系统基于ThinkPhp5.0layuiVue开发,功能包含在线直播、付费视频、付费音频、付费阅读、会员系统、分销系统、拼团活动、直播带货、直播打赏、商城系统等。能够快速积累客户、会员数据分析、智能转化客户、有效提高销售、吸引流量、网络营销、品牌推广的一款应用&…