如何入门服务器端的JavaScript脚本Node.js?

服务器端的JavaScript脚本 Node.js 使用入门

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它使得 JavaScript 不仅可以运行在浏览器中,还能在服务器端执行,自2009年发布以来,Node.js 因其非阻塞 I/O 和事件驱动的特性,在构建高性能、可扩展的网络应用程序方面表现出色,广泛应用于 Web 开发、后端服务以及实时应用等众多领域,本文将带你踏上 Node.js 的学习之旅,从基础入门到精通掌握,同时为你推荐丰富的学习资源和网站。

一、Node.js 基础入门

(一)Node.js 安装与环境搭建

1、安装 Node.js:访问 [Node.js 官方网站](https://nodejs.org/),根据你的操作系统选择相应的安装包进行下载,安装过程通常较为简单,按照提示逐步操作即可,安装完成后,打开命令提示符(Windows)或终端(Mac/Linux),输入node -v 命令,如果能正确显示 Node.js 的版本号,则说明安装成功。

2、了解 npm(Node Package Manager):npm 是 Node.js 的包管理工具,随 Node.js 一起安装,它允许开发者轻松地安装、管理和共享第三方模块,在命令提示符或终端中输入npm -v 可以查看 npm 的版本号。

(二)JavaScript 基础学习

1、变量与数据类型:JavaScript 中有多种数据类型,包括字符串(用单引号或双引号括起来)、数字(整数和浮点数)、布尔值(true 或 false)、数组(用方括号表示)、对象(用花括号表示)等。

let name = "John"; // 字符串
let age = 30; // 数字
let isStudent = true; // 布尔值
let fruits = ["apple", "banana", "orange"]; // 数组
let person = { name: "John", age: 30 }; // 对象

2、函数:函数是 JavaScript 中可复用的代码块,可以使用 function 关键字定义函数,也可以使用箭头函数的语法。

function add(a, b) {
    return a + b;
}
// 箭头函数写法
const subtract = (a, b) => a b;

3、控制流:包括条件语句(如 if-else、switch)和循环语句(如 for、while)。

if (age > 18) {
    console.log("You are an adult.");
} else {
    console.log("You are a minor.");
}
for (let i = 0; i < 5; i++) {
    console.log(i);
}

(三)Node.js 核心概念

1、模块系统:Node.js 使用模块来组织代码,一个模块可以是一个 JavaScript 文件,其中包含可复用的函数、变量或类,通过module.exportsexports 来导出模块的内容,使用require 函数来导入其他模块。

// math.js
function add(a, b) {
    return a + b;
}
function subtract(a, b) {
    return a b;
}
module.exports = {
    add,
    subtract
};
// main.js
const math = require('./math');
console.log(math.add(5, 3)); // 输出 8
console.log(math.subtract(8, 4)); // 输出 4

2、事件驱动编程:Node.js 基于事件驱动的架构,许多操作都是异步的,当这些操作完成或发生特定事件时,会触发相应的回调函数,读取文件是一个异步操作:

const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
    if (err) {
        console.error(err);
    } else {
        console.log(data);
    }
});

在这个例子中,当文件读取完成时,会调用回调函数,并将读取到的数据或错误信息作为参数传递给回调函数。

3、非阻塞 I/O:Node.js 的非阻塞 I/O 使得它能够在处理 I/O 操作时不会阻塞主线程,从而可以同时处理多个请求,提高应用程序的性能和响应能力,在一个 Web 服务器中,当一个请求到来时,Node.js 可以快速响应并开始处理,而不需要等待其他 I/O 操作(如读取数据库或文件)完成。

二、Node.js 进阶学习

(一)HTTP 服务器与路由

1、创建 HTTP 服务器:使用 Node.js 的 http 模块可以创建一个简单的 HTTP 服务器,服务器可以监听特定的端口,接收客户端的请求,并返回相应的响应。

const http = require('http');
const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello, World!');
});
server.listen(3000, () => {
    console.log('Server running on port 3000');
});

这个服务器会在端口 3000 上运行,当客户端访问时,会返回 “Hello, World!” 的文本响应。

2、路由实现:为了处理不同的 URL 请求,可以实现路由功能,通过检查请求的 URL 路径,服务器可以根据不同的路由执行不同的操作。

const http = require('http');
const server = http.createServer((req, res) => {
    if (req.url === '/') {
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end('Hello, home page!');
    } else if (req.url === '/about') {
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end('About us');
    } else {
        res.writeHead(404, { 'Content-Type': 'text/plain' });
        res.end('Not Found');
    }
});
server.listen(3000, () => {
    console.log('Server running on port 3000');
});

在这个例子中,根据请求的 URL 路径,服务器会返回不同的响应内容。

(二)RESTful API 开发

Node.js 非常适合用于开发 RESTful API,结合 Express.js 框架可以让开发更加便捷,Express.js 是一个简约且灵活的 Node.js Web 应用框架,提供了一系列强大的特性来帮助开发者构建 Web 应用和 API,以下是一个简单的 RESTful API 示例:

const express = require('express');
const app = express();
const port = 3000;
app.use(express.json()); // 解析 JSON 请求体
// 获取所有用户
app.get('/users', (req, res) => {
    res.status(200).json([{ id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Doe' }]);
});
// 根据 ID 获取用户
app.get('/users/:id', (req, res) => {
    const userId = parseInt(req.params.id);
    const user = { id: userId, name:User${userId} };
    res.status(200).json(user);
});
// 创建新用户
app.post('/users', (req, res) => {
    const newUser = req.body;
    res.status(201).json(newUser);
});
// 更新用户信息
app.put('/users/:id', (req, res) => {
    const updates = req.body;
    res.status(200).json({ ...updates, message: 'Updated successfully' });
});
// 删除用户
app.delete('/users/:id', (req, res) => {
    res.status(204).send();
});
app.listen(port, () => {
    console.log(Server is running on http://localhost:${port});
});

这个简单的 API 包括了 CRUD(创建、读取、更新、删除)操作,使用了 Express.js 的各种功能来简化路由和中间件的处理。

三、实战项目与学习资源推荐

1、内容发布系统:这种系统可以用于新闻、博客、官方网站、论坛、社区等多种用途,你可以通过这个项目学习前后端分离的开发模式,前端页面、后端服务和数据库的交互等知识,相关教程可以参考 [实验楼的内容发布系统课程](https://www.shiyanlou.com/courses/1505)。

2、Sequelize 操作 MySQL:Sequelize 是一个基于 promise-orm 的 Node.js ORM(对象关系映射)库,用于操作和管理 MySQL、PostgreSQL、SQLite 等关系型数据库,通过学习 Sequelize,你可以掌握如何在 Node.js 应用中使用数据库,相关教程可以参考 [实验楼的 Sequelize 操作 MySQL 课程](https://www.shiyanlou.com/courses/509)。

3、Node.js 实现上传文件功能:这个项目主要介绍如何搭配 Node.js 服务程序实现文件上传,通过这个项目,你可以学习文件上传的原理以及相关的安全措施,相关教程可以参考 [实验楼的 Node.js 实现上传文件功能课程](https://www.shiyanlou.com/courses/458)。

4、React+Express+MongoDB 仿网易云音乐:这个项目结合了 React、Express 和 MongoDB,实现了一个类似于网易云音乐的完整应用,通过这个项目,你可以学习前后端分离的开发模式,以及如何使用 React 进行前端开发,如何使用 Express 进行后端开发,如何使用 MongoDB 进行数据存储和管理,相关教程可以参考 [实验楼的 React+Express+MongoDB 仿网易云音乐课程](https://www.shiyanlou.com/courses/888)。

5、Node.js 实现静态文件服务器:通过这个项目,你可以学习如何使用 Node.js 实现一个简单的静态文件服务器,熟悉 Node.js 创建 Web 服务器的过程,相关教程可以参考 [实验楼的 Node.js 实现静态文件服务器课程](https://www.shiyanlou.com/courses/520)。

6、Node.js 实现私人笔记本:这个项目教你如何使用 Node.js 技术完成一个私人笔记本项目,每个注册用户都可以在自己的私人空间里写下自己的感受,通过这个项目,你可以快速学习 Node.js 网站开发的基础知识,相关教程可以参考 [实验楼的 Node.js 实现私人笔记本课程](https://www.shiyanlou.com/courses/446)。

7、Node.js 经典项目实战:通过完成一些经典项目,你可以高强度学习 Node.js 开发,这些项目涵盖了 Node.js 的基础、快速框架、Socket.io、Angular.js、Redis、MongoDB 等内容,相关教程可以参考 [实验楼的 Node.js 经典项目实战课程](https://www.shiyanlou.com/courses/455)。

四、相关问题与解答栏目

1、问题1:什么是中间件?它在 Express.js 中起什么作用?解答:中间件(Middleware)是指处理 HTTP 请求和响应的函数,在 Express.js 中,中间件可以执行以下功能:执行任何代码、修改请求和响应对象、结束请求-响应循环、调用堆栈中的下一个中间件,中间件通常用于日志记录、身份验证、解析请求体、压缩等任务,你可以在 Express.js 应用中使用app.use() 方法来加载中间件。app.use(express.json()) 用于解析 JSON 请求体。

2、问题2:如何在 Node.js 中实现数据库连接池?解答:在 Node.js 中,可以使用各种数据库客户端库来实现数据库连接池,对于 MySQL,可以使用mysql2 库,它支持连接池功能,需要安装mysql2npm install mysql2,在代码中创建连接池实例:const mysql = require('mysql2'); const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'test', waitForConnections: true, connectionLimit: 10, // 连接池大小, back_log: true, logQueries: true, queueLimit: 1000, // 如果超过此限制,将抛出错误 logErrors: true, logWarnings: true, enableKeepAlive: true, keepAliveInitialDelay: 30000, // 初始延迟时间 keepAliveInterval: 60000, // 间隔时间 connectionTimeout: 30000, // 超时时间 acquireTimeout: 60000, // 如果超过此时间还未获取到连接,则会抛出异常 acquireConnectionTimeout: 60000, reconnectLimit: 1000, // 如果重连次数超过此限制,则会抛出异常 retryInterval: 3000, // 重试间隔时间 retryCount: 10 // 重试次数,});这样,就可以在需要时从连接池中获取连接,并在使用完毕后释放连接。async function queryDatabase() { let connection; try { connection = await pool.getConnection(); const [rows] = await connection.query('SELECT * FROM users'); console.log(rows); } catch (err) { console.error('Error executing query', err); } finally { if (connection) connection.release(); }}这种方式可以提高数据库操作的效率和性能。

小伙伴们,上文介绍了“服务器端的JavaScript脚本 Node.js 使用入门”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/763989.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-12-24 19:26
Next 2024-12-24 19:31

相关推荐

  • 如何在表单中调用JavaScript进行POST请求?

    使用JavaScript进行表单提交(POST请求)在Web开发中,我们经常需要通过表单将数据发送到服务器进行处理,本文将详细介绍如何使用JavaScript来处理表单的提交,并发送一个POST请求,我们将涵盖以下内容:1、HTML表单结构2、JavaScript代码实现3、使用Fetch API发送POST请……

    2024-12-14
    04
  • html进度条怎么做

    HTML进度条是一种常见的网页元素,用于显示某个任务或操作的完成进度,它可以为用户提供直观的反馈,让用户知道任务正在进行中,并且可以预测完成任务所需的时间,在本文中,我们将介绍如何使用HTML和CSS来创建一个简单的进度条。1. HTML结构我们需要创建一个HTML文件,并在其中添加一个进度条的结构,通常,我们使用&lt;di……

    2024-01-25
    0234
  • html怎么调用ajax

    HTML调用Ajax简介Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,通过Ajax,可以在后台与服务器进行数据交换,从而实现局部页面的更新,HTML本身无法直接调用Ajax,但可以通过JavaScript来实现,本文将介绍如何使用JavaScri……

    2023-12-25
    0202
  • html5返回按钮

    HTML5代码返回值是指在网页中通过JavaScript获取HTML元素的内容、属性等信息,或者设置HTML元素的内容、属性等,在HTML5中,我们可以通过多种方式来实现这一功能,包括使用原生JavaScript、jQuery库等,本文将详细介绍如何使用这些方法来实现HTML5代码的返回值。1、原生JavaScript原生JavaSc……

    2024-03-26
    0131
  • 如何使用 JavaScript 实现高效的分页插件功能?

    分页插件 JS在现代网页开发中,处理大量数据时,分页是一个常见的需求,为了提高用户体验和性能,我们可以使用JavaScript来实现分页功能,本文将介绍如何使用JavaScript编写一个简单的分页插件,并提供两个相关问题与解答,一、基本概念分页是一种将大量数据分成小块显示的方法,以提高页面加载速度和用户体验……

    2024-11-28
    04
  • for in 是 JavaScript 的语法吗?

    在JavaScript中,for...in确实是一个语法结构,用于遍历对象的所有可枚举属性,以下是对for in的详细介绍:一、`for...in`的基本概念和用法1. 基本概念for...in循环主要用于遍历对象的可枚举属性(包括从原型链继承的属性),它不能保证遍历属性的顺序,并且返回的属性名是字符串类型,2……

    2024-12-15
    02

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入