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

news2024/9/21 3:30:10

目录

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 服务器。您可以根据需求添加更多的路由和功能。  

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

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

相关文章

无涯教程-Android Intent Standard Extra Data函数

下表列出了各种重要的Android Intent Standard Extra Data。您可以查看Android官方文档以获取额外数据的完整列表- Sr.NoExtra Data & Description1 EXTRA_ALARM_COUNT 用作AlarmManager intents(意图)中的int Extra字段,以告诉正在调用的应用程序intents(意图)释放了多少…

java八股文面试[多线程]——指令重排序

关于a的操作&#xff0c;由原来的6个指令&#xff0c;变成了4个指令。 1. 指令重排序的介绍 1&#xff09;指令重排序的类型 在执行程序时为了提高性能&#xff0c;编译器和处理器常常会对指令做重排序。 重排序分三种类型&#xff1a;编译器优化的重排序 编译器在不改变单线…

深度分析:如何轻松掌握文件大小管理

大家好&#xff0c;今天我要与大家分享一个实用至极的脚本。简单易用&#xff0c;但效果却让人惊艳。它可以在几秒钟内完成文件大小的统计&#xff0c;并生成一份统计信息。 功能概览 完整性分析&#xff1a;一次性告诉你不同大小区间的文件分布&#xff0c;让你一目了然。 速…

【Unity】常见的角色移动旋转

在Unity 3D游戏引擎中&#xff0c;可以使用不同的方式对物体进行旋转。以下是几种常见的旋转方式&#xff1a; 欧拉角&#xff08;Euler Angles&#xff09;&#xff1a;欧拉角是一种常用的旋转表示方法&#xff0c;通过绕物体的 X、Y 和 Z 轴的旋转角度来描述物体的旋转。在Un…

七、MySQL(DML)如何往表中添加数据?

1、基础语法&#xff1a; &#xff08;1&#xff09;一对一添加数据&#xff1a; 一次只能添加一组数据&#xff0c;可以指定对应字段 insert into 表名 (字段名1,字段名2,……) values (数值1.数值2&#xff0c;……) &#xff08;2&#xff09;给全部字段添加数据&#…

vmware安装centos7虚拟机图文详解

1.打开vmware&#xff0c;点击创建新的虚拟机 2.选择自定义&#xff08;高级&#xff09;&#xff0c;下一步 3.下一步 4.选择稍后安装操作系统 5.操作系统选择linux&#xff0c;版本选择centos7 64位&#xff0c;下一步 6.创建文件夹&#xff0c;选择虚拟机存放的位置&#x…

Exactly Protocol 攻击事件原理分析

Exactly Protocol 攻击事件原理分析 8 月 18 日&#xff0c;Exactly protocol 遭遇黑客攻击&#xff0c;攻击者已获利约 1204 万美元。 安全公司Safful对此事件第一时间进行了技术分析&#xff0c;并总结了安全防范手段&#xff0c;希望后续项目可以引以为戒&#xff0c;共筑区…

企业小件固定资产怎么管理,有什么有效方式?

小件固定资产是指价值较低、使用寿命较短的固定资产&#xff0c;一般用于生产、制造、维修等领域。一些常见的行业中广泛使用小件固定资产&#xff1a;  制造业&#xff1a;小件固定资产在制造业中应用广泛&#xff0c;如机器设备、工具、测量仪器等。  建筑业&#xff1a;…

Spring Boot业务系统如何实现海量数据高效实时搜索

1.概述 我们都知道随着业务系统的发展和使用&#xff0c;数据库存储的业务数据量会越来越大&#xff0c;逐渐成为了业务系统的瓶颈。在阿里巴巴开发手册中也建议&#xff1a;单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表&#xff0c;如果预计三年后数据量根本达…

科创板50etf和科创50etf的区别不同点?一定要看!

很多在交易期权的时候会对科创50ETF期权和科创板50ETF期权标的物选择有疑问&#xff0c;两者与有何区别呢&#xff0c;选择哪个比较合适&#xff0c;别着急&#xff0c;下文为大家介绍科创板50etf和科创50etf的区别不同点&#xff1f;一定要看&#xff01;本文来自&#xff1a;…

谁做的方案,竟把财务数据分析套路都摸透了

来不及计算组合多变又复杂量大的财务数据分析指标&#xff1f;不知道该用哪些财务数据分析方法技巧&#xff1f;不知道怎么把信息量巨大的财务数据分析报表做得易读易理解&#xff1f;别担心&#xff0c;奥威BI数据可视化工具都把套路摸透了&#xff0c;并提出一套系统、标准化…

kafka+Kraft模式集群+安全认证

Kraft模式安全认证 前章内容聊到了Kafka的Kraft集群的配置及使用。本篇再来说说kafka的安全认证方面的配置&#xff0c;。 Kafka提供了多种方式来进行安全认证&#xff0c;包括身份认证、授权和加密传输。一些常用的Kafka安全认证方式&#xff1a; SSL/TLS&#xff1a;使用S…

go的数据结构-变量的大小是0字节

查看变量大小 unsafe.Sizeof(int(0)) 变量&#xff1a; 指针&#xff1a; int和指针大小跟随系统字长&#xff0c;空结构体没有任何成员&#xff0c;是有地址没有长度&#xff0c;所有空结构体都指向同一个结构体地址&#xff08;不被包含在其他结构体中&#xff09;zerobas…

OpenHarmony Meetup 2023 广州站圆满举办,城市巡回全面启航

“OpenHarmony正当时——技术开源”OpenHarmony Meetup 2023城市巡回活动&#xff0c;旨在通过meetup线下交流形式&#xff0c;解读OpenHarmony作为下一代智能终端操作系统的新版本及成果转化&#xff0c;提升开发者对OpenHarmony的关注度&#xff0c;普及OpenHarmony开发技能&…

高效利用隧道代理实现无阻塞数据采集

在当今信息时代&#xff0c;大量的有价值数据分散于各个网站和平台。然而&#xff0c;许多网站对爬虫程序进行限制或封禁&#xff0c;使得传统方式下的数据采集变得困难重重。本文将向您介绍如何通过使用隧道代理来解决这一问题&#xff0c;并帮助您成为一名高效、顺畅的数据采…

桌面端后台项目笔记

套用模板 vue-pure-admin 所用主要框架笔记 1. electron app const { app } require(electron) app.on(事件名, () > {} // 回调函数)常用事件 will-finish-launching 当应用程序完成基础的启动的时候触发ready&#xff1a;electron完成初始化时触发window-all-close…

A10的pll reconfig

一、前言 我之前写过《quartus动态配置pll reconfig》&#xff0c;讲的是A5的pll reconfig。 这次调A10&#xff0c;结果发现寄存器配置、地址、操作流程都变了&#xff0c;不能无脑移植。 二、寄存器配置 1&#xff0c;A5的寄存器配置如下&#xff1a; 其中基地址如下&…

皮卡丘靶场搭建遇到的问题大全

该博客记录我在安装皮卡丘靶场中遇到的一些问题。 1、 phpstudy_pro启动Mysql失败 自己电脑开启了mysql服务&#xff0c;使用winr&#xff0c;services.msc&#xff0c;找到自己的mysql服务&#xff0c;关闭。再次尝试使用phpstudy_pro启动mysql&#xff0c;成功解决。 2、皮…

基于Matlab实现生活中的图像信号分类(附上源码+数据集)

在我们的日常生活中&#xff0c;我们经常会遇到各种各样的图像信号&#xff0c;例如照片、视频、图标等等。对这些图像信号进行分类和识别对于我们来说是非常有用的。在本文中&#xff0c;我将介绍如何使用Matlab来实现生活中的图像信号分类。 文章目录 介绍源码数据集下载 介…

ElasticSearch学习5-- 使用RestClient查询文档

1、查询基本步骤 1、创建SearchRequest对象 2、准备Request.source()&#xff0c;也就是DSL。 QueryBuilders来构建查询条件 传入Request.source() 的 query() 方法 3、发送请求&#xff0c;得到结果 4、解析结果&#xff08;参考JSON结果&#xff0c;从外到内…