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

python web 开发与 Node.js + Express 创建web服务器入门

目录

1. Node.js + Express 框架简介

2  Node.js + Express 和 Python 创建web服务器的对比

3 使用 Node.js + Express 创建web服务器示例

3.1 Node.js + Express 下载安装

3.2 使用Node.js + Express 创建 web服务器流程


1. Node.js + Express 框架简介

        Node.js + Express 是一种常用于构建 Web 应用程序的开发堆栈,其中 Node.js 是运行时环境,而 Express 是一个流行的 Web 应用程序框架。它们的组合使得构建高性能、可扩展的 Web 应用变得更加容易。以下是 Node.js 和 Express 的简介:

  1. Node.js:

    • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建高性能、可扩展的网络应用程序。
    • Node.js 支持非阻塞、事件驱动的 I/O 模型,这使得它特别适用于处理并发请求,例如 Web 服务器。
    • Node.js 允许您在服务器端使用 JavaScript,从而使前端和后端都能够使用相同的语言。
    • Node.js 生态系统非常丰富,拥有大量的第三方模块和工具,可用于各种任务。
  2. Express 框架:

    • Express 是一个基于 Node.js 的 Web 应用程序框架,旨在简化构建 Web 应用的过程。
    • 它提供了路由、中间件、模板引擎等功能,使开发者能够更轻松地构建功能丰富的 Web 应用程序。
    • Express 使用中间件来处理请求和响应,这使得处理逻辑能够被模块化,易于维护。
    • 它具有灵活性,您可以根据项目的需要选择添加所需的模块和功能。
    • Express 是开源的,并且拥有活跃的社区支持,使其能够不断演化和改进。

        Node.js + Express 结合在一起,使得开发者能够快速构建现代的、高性能的 Web 应用程序。它适用于各种用例,从简单的静态网页到复杂的单页应用和 RESTful API。借助 Node.js 的异步特性和 Express 的便利性,开发者能够轻松地处理并发请求、路由、中间件处理、数据库集成等任务,从而创建出功能强大且可扩展的应用程序。

2  Node.js + Express 和 Python 创建web服务器的对比

        Node.js + Express在构建现代、复杂的Web应用程序方面更为专业和强大,尤其在处理异步操作和高并发方面表现出色。

        Python则更适合通用的编程任务,以及一些简单的Web服务器需求。

        从以下几方面详细说明:

  1. 编程语言:

    • Node.js + Express:使用JavaScript编程语言。
    • Python:使用Python编程语言。
  2. 环境:

    • Node.js + Express:Node.js是一个专门用于构建网络应用程序的运行时环境,它具有强大的异步处理和事件驱动的特性。
    • Python:Python是一种通用的编程语言,也可以用于构建网络应用程序,但在网络开发方面可能不如Node.js专业。
  3. 模块和库:

    • Node.js + Express:使用Express框架来构建Web应用程序,它提供了丰富的功能,包括路由、中间件、模板引擎等。
    • Python:使用http.serversocketserver等模块来创建简单的HTTP服务器,但在创建更复杂的应用程序时,可能需要使用其他库或框架。
  4. 语法:

    • Node.js + Express:使用JavaScript的语法和模块系统。
    • Python:使用Python的语法和模块系统。
  5. 生态系统:

    • Node.js + Express:Node.js 生态系统非常丰富,有大量的第三方模块和工具可以使用,适用于构建各种类型的Web应用程序。
    • Python:Python也有强大的生态系统,但在Web开发方面可能相对较少,尤其是在构建大型Web应用程序时。
  6. 异步处理:

    • Node.js + Express:Node.js非常适合处理大量并发请求,因为它的事件驱动和非阻塞I/O模型。
    • Python:Python在处理大量并发请求方面可能相对较弱,但对于一些简单的用例,它也可以很好地工作。

3 使用 Node.js + Express 创建web服务器示例

     Node.js + Express 创建web服务器示例:

3.1 Node.js + Express 下载安装

  1. 安装 Node.js: 首先,确保您已经安装了Node.js。您可以在Node.js 官方网站https://nodejs.org/icon-default.png?t=N7T8https://nodejs.org/ 下载并安装。

  2. 创建项目目录:创建一个新文件夹作为您的项目目录。在命令行中导航到该目录并执行以下步骤。

  3. 初始化项目: 打开命令行并运行以下命令,以初始化一个新的Node.js项目。按照提示配置项目信息。

npm init

     4 安装 Express: 在命令行中运行以下命令,以安装 Express。

npm install express

3.2 使用Node.js + Express 创建 web服务器流程

  1. 创建文件: 在项目目录下创建以下文件。

    • index.html:HTML 页面
    • styles.css:CSS 样式表
    • script.js:JavaScript 脚本
    • server.js:Express 服务器
  2. index.html:index.html 文件中,编写 HTML 页面。

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="styles.css"><title>Node.js + Express Example</title>
    </head>
    <body><header><h1>Welcome to Our Website</h1><nav><ul><li><a href="/">Home</a></li><li><a href="/about">About</a></li><li><a href="/contact">Contact</a></li></ul></nav></header><main><h2>Home Page</h2><p>This is the home page of our website.</p></main><script src="script.js"></script>
    </body>
    </html>
    

    3. styles.css:styles.css 文件中,添加一些样式规则。

    body {font-family: Arial, sans-serif;margin: 0;padding: 0;
    }header {background-color: #333;color: #fff;padding: 1rem;
    }nav ul {list-style: none;display: flex;
    }nav li {margin-right: 1rem;
    }nav a {text-decoration: none;color: #fff;
    }main {padding: 2rem;
    }
    

    4. script.js:script.js 文件中,添加一个简单的 JavaScript 脚本。

    console.log("Hello from script.js");
    

    5. server.js:server.js 文件中,添加以下代码来创建一个 Express 服务器。

    const express = require('express');
    const app = express();
    const port = 3000;// 静态资源托管
    app.use(express.static('public'));// 路由
    app.get('/', (req, res) => {res.sendFile(__dirname + '/index.html');
    });app.get('/about', (req, res) => {res.send('<h2>About Us</h2><p>We are a team of developers.</p>');
    });app.get('/contact', (req, res) => {res.send('<h2>Contact Us</h2><p>Email us at contact@example.com.</p>');
    });// 启动服务器
    app.listen(port, () => {console.log(`Server is running on http://localhost:${port}`);
    });
    

6. 运行服务器: 在命令行中运行以下命令,以启动您的静态服务器。

node server.js

7. 访问网页: 打开浏览器并访问 http://localhost:3000,您应该能够看到您创建的网页,包括导航、样式和 JavaScript。

        在这个示例中,server.js 文件使用 Express 创建了一个 Web 服务器,处理了根路径 / 和其他路由的请求。不仅您在 index.html 文件中看到的 HTML,还包括 /about/contact 路由的简单响应。这个示例展示了如何创建具有路由和样式的 Web 服务器。您可以根据需求添加更多的路由和功能。  

相关文章:

python web 开发与 Node.js + Express 创建web服务器入门

目录 1. Node.js Express 框架简介 2 Node.js Express 和 Python 创建web服务器的对比 3 使用 Node.js Express 创建web服务器示例 3.1 Node.js Express 下载安装 3.2 使用Node.js Express 创建 web服务器流程 1. Node.js Express 框架简介 Node.js Express 是一种…...

OpenCV(三):Mat类数据的读取

目录 1.Mat类矩阵的常用属性 2.Mat元素的读取 1.at方法读取Mat矩阵元素 at (int row,int col) 2.矩阵元素地址定位方式访问元素 3.Android jni demo 1.Mat类矩阵的常用属性 下面是一些Mat类的常用属性&#xff1a; rows: 返回Mat对象的行数。 cols: 返回Mat对象的列数。 …...

区块链BaaS篇

区块链BaaS&#xff08;Blockchain as a Service&#xff09;区块链即服务&#xff1b;感觉5年前做的BaaS和现在做的BaaS没啥区别&#xff0c;换了批人重复造轮子&#xff0c;BaaS做的越来越乱&#xff0c;也越来越中心化。BaaS是方便区块链调用的工具&#xff0c;工具是方便使…...

C++|观察者模式

观察者模式&#xff1a; 定义对象间的一种一对多&#xff08;变化&#xff09;的依赖关系&#xff0c;以便当一个 对象(Subject)的状态发生改变时&#xff0c;所有依赖于它的对象都 得到通知并自动更新 动机&#xff1a; 在软件构建过程中&#xff0c;我们需要为某些对象建立…...

【java 入侵 C# 之路】1-入门

感谢 https://www.cnblogs.com/mww-NOTCOPY/p/12213373.html 百度百科 jvm对应clr java se runtime对应 .net framework&#xff0c; jdk对应 .net framework sdk&#xff0c; java对应C# .NET 是开发者平台&#xff0c;它包含开发环境、技术框架、社区论坛、服务支持等&…...

【git】从一个git仓库迁移到另外一个git仓库

在远端服务器创建一个新的仓库 用界面创建&#xff0c;当然也可以用命令创建 拉去源仓库 git clone --bare git192.168.10.10:java/common.gitgit clone --bare <旧仓库地址>拉去成功以后会出现 进入到文件夹内部 出现下面信息&#xff1a; 推送到新的远端仓库 git …...

控制goroutine 的并发执行数量

goroutine的数量上限是1048575吗&#xff1f; 正常项目&#xff0c;协程数量超过十万就需要引起重视。如果有上百万goroutine&#xff0c;一般是有问题的。 但并不是说协程数量的上限是100多w 1048575的来自类似如下的demo代码: package mainimport ( "fmt" "ma…...

深入解析即时通讯App开发中的关键技术

即时通讯App开发在现代社交和通信领域中扮演着重要的角色。随着移动设备的普及和网络的高速发展&#xff0c;人们对即时通讯工具的需求不断增加。本篇文章将深入探讨即时通讯App开发中的关键技术&#xff0c;帮助读者了解该领域的最新动态和技术趋势。 基础架构和通信协议 现…...

ClickHouse进阶(三):ClickHouse 索引

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术&#xff0c;IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…...

四、MySQL(表操作)如何添加字段?修改表?删除字段?修改表名?删除表?格式化某张表?

1、添加字段 &#xff08;1&#xff09;基础语法&#xff1a; alter table 表名 add 字段名 类型名(长度) [comment注释] [约束]; &#xff08;2&#xff09;示例&#xff1a;添加nickname这个字段 2、修改表 修改表中某个字段的【数据类型】/【数据类型&字段名】 &…...

docker启动paddlespeech服务,并使用接口调用

一、检查docker容器是否启动 1.输入命令 systemctl status docker 启动 systemctl start docker 守护进程重启 sudo systemctl daemon-reload 重启docker服务 systemctl restart docker 重启docker服务 sudo service docker restart 关闭docker service docker…...

如何训练ChatGPT以生成音乐和创意艺术作品?

训练ChatGPT生成音乐和创意艺术作品是一个令人兴奋且具有挑战性的任务。这种技术&#xff0c;也被称为生成式艺术&#xff0c;涉及将人工智能&#xff08;AI&#xff09;模型与创意艺术的融合。在本文中&#xff0c;我将探讨如何训练ChatGPT以生成音乐和创意艺术作品的过程&…...

北约报告:2023-2043,下一代量子技术的发展与挑战

“当今的新技术正在以令人眼花缭乱的速度发展&#xff0c;我们所有人都可以在负责任且合乎道德的方式开发和部署新技术方面发挥作用。” ——这是副秘书长Mircea Geoană在2023年3月22日、在布鲁塞尔发布《北约科学技术组织2023-2043年趋势报告》时传达的信息。 Geoană先生强调…...

arm版Linux下安装es集群

背景&#xff1a;由于生产上网络没通&#xff0c;没办法&#xff0c;只能自己安装一个es集群的测试环境了&#xff0c;我的电脑是Mac M2&#xff0c;安装的Linux是centos7&#xff0c;也是arm版的。 第一步&#xff1a;查看自己Linux系统的版本 命令&#xff1a;uname -a 例如…...

vConsole调试工具的三种使用方式

1.在html页面时, 在页面引入 cdn 方式引入 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…...

不用订阅,不用破解,永久免费使用Axure最新版教程

首先去官网下载最新的axure&#xff0c;你没听错&#xff0c;就是最新的。 下载网址&#xff1a;Axure RP - UX Prototypes, Specifications, and Diagrams in One Tool 下载完后解压安装到本地&#xff0c;并注册属于你自己的账户&#xff0c;开始试用。可惜的是只有30天的试…...

合宙Air724UG LuatOS-Air LVGL API控件--复选框 (Checkbox)

复选框 (Checkbox) 复选框主要是让用户进行一些内容选择&#xff0c;或者同意用户协议。 示例代码 – 复选框回调函数 function event_handler(obj, event) if event lvgl.EVENT_VALUE_CHANGED then print(“State”, lvgl.checkbox_is_checked(obj)) end end – 创建复选框…...

使用nps实现内网穿透

1、介绍 ​ 当我们想把内网的一些资源暴露在公网上时&#xff0c;可以使用内网穿透功能。比如公司的内网服务器&#xff0c;部署了平时需要开发的项目&#xff0c;但是回到家中无法访问&#xff0c;就可以使用内网穿透&#xff0c;将公司内网的接口映射到一台公网的服务器上&a…...

时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测

时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测&a…...

websocket和uni-app里使用websocket

一、HTTP是无状态协议 特点&#xff1a; 1、浏览器发送请求时&#xff0c;浏览器和服务器会建立一个连接。完成请求和响应。在http1.0之前&#xff0c;每次请求响应完毕后&#xff0c;会立即断开连接。在http1.1之后&#xff0c;当前网页的所有请求响应完毕后&#xff0c;才断…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

命令行关闭Windows防火墙

命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)​方法二:CMD命令…...