当前位置: 首页 > 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;才断…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&&#xff1a;逻辑与 ||&#xff1a;逻辑或 &#xff01;&#xff1a;逻辑非 短路求值 位运算符 按位与&&#xff1a; 按位或 | 按位取反~ …...