当前位置: 首页 > news >正文

初入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的奥秘

相关文章:

  • 安卓请求服务器[根据服务器的内容来更新spinner]
  • 华为5288 V5服务器安装BCLinux8U4手记
  • 电传动无杆飞机牵引车交付用户
  • 如何找BMS算法、BMS软件的实习
  • CentOS8换源
  • spdlog一个非常好用的C++日志库(四): 源码分析之logger类
  • 防爆巡检终端在石化工厂安全保障中的应用
  • 图像的像素在内存中的存储方式
  • 【Unity navmeshaggent 组件】
  • Linux Vim最全面的教程
  • web学习笔记(七十五)
  • 蓝牙模块的使用01,OOOLMF蓝牙模块HC05调试使用01AT设置从机,手机用软件对接
  • 《Unity3D高级编程之进阶主程》第一章 C#要点技术(六) 搜索算法
  • 基于SpringBoot的篮球竞赛预约平台
  • 概率论与数理统计_上_科学出版社
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 11111111
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • canvas 绘制双线技巧
  • ES6系统学习----从Apollo Client看解构赋值
  • Fabric架构演变之路
  • gops —— Go 程序诊断分析工具
  • HTTP--网络协议分层,http历史(二)
  • Javascript设计模式学习之Observer(观察者)模式
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js中的正则表达式入门
  • Spark RDD学习: aggregate函数
  • 不上全站https的网站你们就等着被恶心死吧
  • 从零搭建Koa2 Server
  • 服务器之间,相同帐号,实现免密钥登录
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端临床手札——文件上传
  • 数据可视化之 Sankey 桑基图的实现
  • 鱼骨图 - 如何绘制?
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (3)nginx 配置(nginx.conf)
  • (42)STM32——LCD显示屏实验笔记
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (多级缓存)多级缓存
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .Net MVC + EF搭建学生管理系统
  • .Net mvc总结
  • .NET 读取 JSON格式的数据
  • .NET 反射的使用
  • .NET 使用配置文件
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)