如何使用 Socket.io 和 EJS 模板引擎构建 Web 应用

在建立 Web 应用时,Socket.io 和 EJS 模板引擎是非常有用的前端工具。 Socket.io 是一个实时通信库,用于建立实时应用。EJS 模板引擎在服务器端生成 HTML。 在本文中,我们将探讨如何使用这两个工具建立 Web 应用。

安装和设置

在开始使用 Socket.io 和 EJS 模板引擎之前,要确保已安装 Node.js。为了使用 Socket.io,需要在终端中运行以下命令:

--- ------- --------- ------

为了使用 EJS 模板引擎,需要在终端中运行以下命令:

--- ------- --- ------

然后,创建一个名为server.js的服务器端文件,并在文件的顶部添加以下代码:

-- ------
----- ---- - ----------------
----- ------- - -------------------
----- -------- - ---------------------

-- -----
----- ---- - -----

-- ----
----- --- - ----------

-- -----
----- ------ - -----------------------

-- -------
-------------------------------- - ------------

-- -----
------------------- -- -- -
  ---------------------- -- ---- ----------
---

-- -- --------- ---
----- -- - -----------------

在上面的代码中,我们引入了 http,express 和 socket.io 包,定义了端口号,创建了应用和服务器,添加了一个静态文件夹,并创建了一个 Socket.io 服务器。现在,我们已准备好开始编写代码了。

使用 EJS

接下来,我们将从服务器端生成 HTML。为此,我们将使用 EJS 模板引擎。 EJS 是一种简单的模板语言,可以嵌入 JavaScript。 EJS 使用以下语法来嵌入 JavaScript:

--- ------------------ --

为了使用 EJS 模板引擎,需要在server.js文件的顶部添加以下代码:

-- -- --- ----
----- --- - ---------------

-- ------
------------- -------- -------

现在,我们可以在server.js文件中使用 EJS 来生成 HTML。让我们创建一个名为index.ejs的 EJS 模板文件,并在其中添加以下代码:

--------- -----
------
  ------
    ----- ----------------
    ---------- ----- ----------
  -------
  ------
    ------- ------ -------
    ------ ------- ------
  -------
-------

在上面的模板中,我们使用了<%= ... %>来嵌入 JavaScript 代码。titleheadercontent 是从服务器端传递给模板的变量。 现在,我们已准备好从服务器端呈现此模板。

server.js中,添加以下代码:

-- ----
------------ ----- ---- -- -
  ----- ---- - -
    ------ ---------- - --- ------
    ------- ----- --------- - --- ------
    -------- ------- --------- - --- ------- --- ----
  --
  ------------------- ------
---

在上面的代码中,我们创建了一个路由,从服务器端向客户端呈现了一个 EJS 模板。 我们创建了一个名为 data 的变量,并将其传递给模板,用于替换模板中的变量。 现在,我们可以启动服务器并访问http://localhost:8080/来查看呈现的模板。

使用 Socket.io

现在,我们已经知道如何创建 Web 应用,并在服务器端使用 EJS 模板生成 HTML。接下来,我们将使用 Socket.io 来建立一个实时应用。

首先,让我们创建一个名为index.html的客户端文件,并在其中添加以下代码:

--------- -----
------
  ------
    ----- ----------------
    ---------------- ------------
  -------
  ------
    ------------- ---------
    ------ ----------- ---------- ---------------------
    ------- ---------------------
    ---- --------------------

    ------- ---------------------------------------
    --------
      ----- ------ - -----

      ----- ----- - ---------------------------------
      ----- ---------- - --------------------------------
      ----- -------- - ------------------------------------

      ------------------------------------ -- -- -
        ----- ------- - ------------
        ---------------------- ---------
        ----------- - ---
      ---

      -------------------- ------- -- -
        ----- -- - ----------------------------
        ------------ - --------
        -------------------------
      ---
    ---------
  -------
-------

在上面的代码中,我们创建了一个包含输入框、发送按钮和消息列表的 HTML 文件。客户端在连接到 Socket.io 服务器后,通过发送消息来与服务器通信,并接收从服务器端发送的消息。

接下来,我们要做一些服务器端的设置。在server.js文件中添加以下代码:

------------------- ------ -- -
  ----------------------

  -------------------- ------- -- -
    -------------------------------
    ------------------ ---------
  ---

  ----------------------- -- -- -
    ------------------------
  ---
---

在上面的代码中,我们创建了一个 Socket.io 监听器,并在客户端连接时创建了一个 Socket.io 实例。当客户端发送消息时,服务器发送该消息到所有客户端。 现在,我们能够通过使用浏览器访问http://localhost:8080/并在输入框中键入消息,将消息发送到服务器,并在消息列表中接收来自服务器端的消息。

总结

在本文中,我们探讨了如何使用 Socket.io 和 EJS 模板引擎来建立 Web 应用。我们从安装和设置开始,然后使用 EJS 模板引擎从服务器端生成 HTML,使用 Socket.io 建立了一个实时应用。 希望这篇文章能够对你有所帮助,欢迎留言讨论。 在下面评论区提出你的建议和想法!

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64787498968c7c53b04b2ace


猜你喜欢

  • Mocha + Chai 使用 Sinon 测试 Web 应用程序

    在前端开发中,测试是非常重要的一环。而针对 Web 应用程序的测试,则需要用到一些常用的测试工具。本文介绍了如何使用 Mocha + Chai + Sinon 进行 Web 应用程序的测试。

    1 年前
  • 如何使用 Node.js 创建 RESTful API?

    RESTful API 指的是一组用于与 Web 应用程序进行交互的互联网标准,它可以使 Web 应用程序与客户端之间的通信变得更加简单和高效。Node.js 是一种基于事件驱动的异步 I/O 服务器...

    1 年前
  • Redis 如何应对 Key 过多的问题

    前言 Redis 是一个开源的内存数据结构存储系统,常用于缓存、队列、分布式锁等场景。在使用 Redis 过程中,经常会遇到 Key 过多的问题,因为 Redis 本身没有限制 Key 的数量,但是 ...

    1 年前
  • Webpack 如何使用 externals

    在开发前端应用过程中,我们往往会依赖第三方库和包。这些第三方库在生产环境中,我们希望能从 CDN 加载,这样可以减小我们自己的服务器的负担,同时也能加快应用的加载速度。

    1 年前
  • 在 Web Components 中实现自定义地图组件的最佳实践

    Web Components 是一种用于构建可重用和独立的 UI 组件的技术标准。它允许开发人员创建自己的 HTML 标记和自定义元素,从而实现更具模块化和可维护的前端应用程序。

    1 年前
  • CSS Flexbox 属性的详解

    什么是 Flexbox Flexbox 是一种 CSS 布局模式,旨在使前端开发者更容易构建灵活、响应式和动态的布局。它允许我们通过设置容器和其子项之间的关系来实现自适应布局。

    1 年前
  • 在 React 项目中如何使用 TypeScript 编写高阶组件

    在React项目中使用TypeScript编写高阶组件 TypeScript是JavaScript的超集,它为我们提供了强大的类型注释,使得我们在编写代码的过程中更加安全和准确。

    1 年前
  • Promise 中 this 指向问题的解决方案

    在 JavaScript 中使用 Promise 进行异步编程时,经常会遇到 this 指向混乱的问题,特别是在将回调函数传递给 then() 方法时。这会导致代码出现不可预期的行为,从而导致程序出错...

    1 年前
  • ES6 的解构赋值和 Promise 与 Node.js 的应用

    1. ES6 解构赋值 ES6 的解构赋值是一种快速、方便的方式来从数组或对象中提取值,并赋值给变量。这种技术在前端开发中经常用到,它可以让我们写出更简洁、易于理解的代码。

    1 年前
  • Cypress 和 Enzyme:如何协同测试 React 组件

    随着前端开发的发展,测试也成为了一项必不可少的工作。虽然 React 本身提供了很多方便的测试工具,但是针对组件的集成测试和单元测试还是需要一些其他的工具来辅助完成。

    1 年前
  • ECMAScript 2021 中的 valueOf() 与 toString() 详解

    JavaScript 是一种动态解释型语言,它允许我们在运行时对变量进行类型转换。这些类型转换函数,包括 valueOf() 与 toString(),可以帮助我们将数据类型在不同的场景中转换为所需要...

    1 年前
  • 如何在 Deno 中使用 Moment.js?

    已被广泛应用于前端和后端的Moment.js是一个小型但强大的时间操作库,它提供了管理、解析和显示时间对象的工具。Deno是一种安全的JavaScript和TypeScript运行时,类似于Node....

    1 年前
  • 使用 Vue.js 构建 SPA 个人博客

    随着 Web 技术的不断发展,构建单页应用(SPA)的需求逐渐增多。Vue.js 作为一种简单易用且高性能的前端框架,受到了越来越多开发者和公司的青睐。本文将介绍如何使用 Vue.js 和其生态工具快...

    1 年前
  • 透过 ES7 Exponentiation 操作符看 Javascript 的演变

    最近,Javascript 新增了一种操作符,即 ES7 Exponentiation 操作符,这让我们不禁想起了 Javascript 的演变历程。在这篇文章中,我们将深入探讨 Javascript...

    1 年前
  • Docker 容器管理:使用 Labels 和过滤器

    Docker 已经成为了现代应用部署的标准,而 Docker 容器作为基础架构的一部分,需要进行管理、维护和监控。Docker 提供了多种机制来管理容器,包括容器的标签(Labels)和过滤器(Fil...

    1 年前
  • 在 Enzyme 测试中使用 Jest 生命周期方法的正确方式

    在前端开发中,测试是至关重要的一项工作。Enzyme 是 React 生态中非常流行的测试工具之一,它提供了方便易用的 API,可以用来测试 React 组件的行为和正确性。

    1 年前
  • Serverless 下的前端工程化实践

    随着云计算和 Serverless 技术的不断发展,前端工程化也在不断变革和完善。在这个快速发展的前端生态中,开发人员需要掌握新的技术和实践来更好地应对变化。 本文将重点介绍 Serverless 下...

    1 年前
  • 响应式设计中修改断点的方法及实现

    随着科技的不断发展,越来越多的人在使用不同尺寸和分辨率的设备来访问网站。响应式设计的出现意味着网站可以在不同的设备上都能够良好的展示。然而,随着屏幕尺寸的不断增加,原有的响应式断点可能已经无法适应现在...

    1 年前
  • 在 Angular 中利用 RxJS 实现分页处理

    在 Angular 中利用 RxJS 实现分页处理 随着 Web 应用的发展,前端开发越来越成为了一项重要的工作。而 Angular 是一个流行的前端框架,它提供了强大的功能和工具来帮助开发人员构建出...

    1 年前
  • # Koa 框架使用中 Session 丢失问题解决方法

    Koa 框架使用中 Session 丢失问题解决方法 Koa 是一个 Node.js 的 Web 框架,它具有轻量、简洁、高效等特点。在 Koa 中,我们可以通过使用 Session 来记录用户的登录...

    1 年前

相关推荐

    暂无文章