介绍 通常,当您使用Express构建应用程序时,您需要从用户那里获取信息。两种最流行的方法是 URL 参数和 POST 参数。 在本文中,您将学习如何使用 Express 从请求中检索 URL 参数和 POST 参数。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 发送 POST 请求需要下载和安装类似Postman的工具。 注意:以前,本教程建议使用req.param. 自 v4.11.0 起已弃用。本教程还建议安装body-parser. 从 v4.16.0 开始,这不再是必需的。 本教程已通过 Node v15.4.0、npmv7.10.0 和expressv4.17.1 验证。 步骤 1 – 设置项目 首先,打开终端窗口并创建一个新的项目目录: mkdir express-params-example 然后,导航到新创建的目录: cd express-params-example 此时,您可以初始化一个新的 npm 项目: npm init -y 接下来,您需要安装express软件包: npm install [email protected] 此时,您已准备好使用 ..
Category : 教程系列
介绍 曾经有一段时间XMLHttpRequest用于发出 API 请求。它不包括承诺,也没有用于干净的 JavaScript 代码。使用 jQuery,您使用了更简洁的语法jQuery.ajax(). 现在,JavaScript 有自己的内置方式来发出 API 请求。这就是 Fetch API,这是一种使用 promise 发出服务器请求的新标准,但包括许多其他功能。 在本教程中,您将使用 Fetch API 创建 GET 和 POST 请求。 先决条件 要完成本教程,您将需要以下内容: 您的机器上安装了最新版本的 Node。要在 macOS 上安装 Node,请按照如何在 macOS上安装 Node.js 和创建本地开发环境教程中概述的步骤操作。 对 JavaScript 编码的基本了解,您可以从“如何在 JavaScript 中编码”系列中了解更多信息。 理解 JavaScript 中的 promise。阅读本文的Promises 部分,了解JavaScript 中的事件循环、回调、promise 和 async/await。 第 1 步 – 开始使用 Fetch API 语法 要使用 ..
介绍 该sed命令是stream editor 的缩写,对来自标准输入或文件的文本执行编辑操作。sed以非交互方式逐行编辑。 这意味着您在调用命令时做出所有编辑决定,并sed自动执行指示。这可能看起来令人困惑或不直观,但它是一种非常强大且快速的文本转换方式,尤其是作为脚本或自动化工作流程的一部分。 本教程将介绍一些基本操作,并向您介绍操作此编辑器所需的语法。您几乎肯定永远不会用 替换您的常规文本编辑器sed,但它可能会成为您的文本编辑工具箱中受欢迎的补充。 注意:本教程使用sed在 Ubuntu 和其他 Linux 操作系统上找到的 GNU 版本。如果您使用的是 macOS,您将拥有具有不同选项和参数的 BSD 版本。您可以安装的GNU版本,sed与家酿使用brew install gnu-sed。 启动互动终端! 基本用法 sed对从文本文件或标准输入 (STDIN) 读取的文本流进行操作。这意味着您可以将另一个命令的输出直接发送到 sed 进行编辑,或者您可以处理已经创建的文件。 您还应该注意,sed默认情况下将所有内容输出到标准输出 (STDOUT)。这意味着,除非重定向,否则会将sed其输出打印到屏幕而不是将其保存在文件中。 基本用法是: sed [options] commands [file-to-edit] 在本教程中,您将使用BSD 软件许可证的副本来试验sed. 在 Ubuntu 上,执行以下命令将 BSD 许可证文件复制到您的主目录,以便您可以使用它: cd cp /usr/share/common-licenses/BSD . 如果您没有 BSD 许可证的本地副本,请使用以下命令自己创建一个: cat << ‘EOF’ > BSD Copyright (c) The ..
关系模型是用于在数据库中组织数据的抽象模型。为了控制对数据库的访问、写入数据、运行查询或执行与数据库管理相关的任何其他任务,数据库管理系统必须具有某种定义其中数据组织方式的底层模型。 实现关系模型的数据库通常称为关系数据库。长期以来,关系模型是最复杂的数据组织模型,但直到最近,非关系(或NoSQL)数据模型的兴起才限制了其广泛使用。 关系模型中最基本的元素是关系,用户和现代 RDBMS 将其识别为表。关系是一组元组或表中的行,每个元组共享一组属性或列: 列是关系数据库的最小组织结构,代表定义表中记录的各个方面。因此他们更正式的名称,属性。将每个元组视为表中保存的任何类型的人、对象、事件或关联的唯一实例会很有帮助。 有关关系模型的更多教育资源,请访问: 了解关系数据库 SQLite vs MySQL vs PostgreSQL:关系数据库管理系统的比较 有关如何使用关系数据库的更多信息,我们鼓励您查看我们的如何使用 SQL教�..
我们的目标 在本教程中,我们将为一家虚构公司构建和测试员工目录。这个目录将有一个视图来显示我们所有的用户以及另一个视图作为个人用户的个人资料页面。在本教程的这一部分中,我们将专注于构建将用于这些用户的服务及其测试。 在接下来的教程中,我们将使用Pokeapi用用户最喜欢的 Pokemon 的图像填充用户配置文件页面,并学习如何测试发出 HTTP 请求的服务。 你应该知道的 本教程的主要重点是测试,因此我的假设是您熟悉使用 TypeScript 和 Angular 应用程序。因此,我不会花时间解释什么是服务以及如何使用它。相反,我会在我们完成测试时为您提供代码。 为什么要测试? 从个人经验来看,测试是防止软件缺陷的最佳方式。过去我曾在许多团队中更新一小段代码,开发人员手动打开他们的浏览器或 Postman 以验证它是否仍然有效。这种方法(手动 QA)是一场灾难。 测试是防止软件缺陷的最佳方式。 随着功能和代码库的增长,手动 QA 变得更加昂贵、耗时且容易出错。如果某个特性或功能被移除,每个开发人员是否都记得它的所有潜在副作用?所有开发人员都以相同的方式手动测试吗?可能不会。 我们测试代码的原因是为了验证它的行为是否符合我们的预期。作为此过程的结果,您会发现您自己和其他开发人员拥有更好的功能文档,以及您的 API 的设计帮助。 为什么是业力? Karma 是 AngularJS 团队努力使用现有工具测试他们自己的框架功能的直接产物。因此,他们制作了 Karma 并将其转换为 Angular,作为使用 Angular CLI 创建的应用程序的默认测试运行器。 除了可以很好地使用 Angular 之外,它还为您提供了根据工作流程定制 Karma 的灵活性。这包括在各种浏览器和设备(例如手机、平板电脑,甚至是像 YouTube 团队这样的PS3)上测试您的代码的选项。 Karma 还为您提供了用其他测试框架(如Mocha和QUnit)替换 Jasmine 的选项,或者与各种持续集成服务(如Jenkins、TravisCI或CircleCI)集成。 除非您添加一些额外的配置,否则您与 Karma 的典型交互将ng test在终端窗口中运行。 为什么是茉莉花? Jasmine 是一个行为驱动的开发框架,用于测试与 Karma ..
介绍 虚拟网络计算或 VNC 是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。对于还不熟悉命令行的用户来说,它使管理远程服务器上的文件、软件和设置变得更加容易。 在本指南中,您将在 Ubuntu 20.04 服务器上设置一个带有TightVNC的 VNC 服务器,并通过 SSH 隧道安全地连接到它。然后,您将使用本地计算机上的 VNC 客户端程序通过图形桌面环境与服务器交互。 先决条件 要完成本教程,您需要: 一台 Ubuntu 20.04 服务器,具有非 root 管理用户和使用 UFW 配置的防火墙。要进行设置,请按照我们针对 Ubuntu 20.04 的初始服务器设置指南进行操作。 安装了 VNC 客户端的本地计算机。您使用的 VNC 客户端必须支持通过 SSH 隧道的连接: 在 Windows 上,您可以使用TightVNC、RealVNC或UltraVNC。 在 macOS 上,您可以使用内置的屏幕共享程序,也可以使用RealVNC等跨平台应用程序。 在 Linux 上,您可以从许多选项中进行选择,包括 vinagre、krdc、RealVNC或TightVNC。 步骤 1 — 安装桌面环境和 VNC 服务器 默认情况下,Ubuntu 20.04 服务器没有安装图形桌面环境或 VNC 服务器,因此您将从安装它们开始。 ..
作者选择了电子前沿基金会作为Write for DOnations计划的一部分接受捐赠。 介绍 Apache 和 Nginx 是两种流行的开源 Web 服务器,通常与 PHP 一起使用。当托管具有不同要求的多个网站时,在同一虚拟机上运行它们会很有用。在单个系统上运行两个 Web 服务器的一般解决方案是使用多个 IP 地址或不同的端口号。 可以将同时具有 IPv4 和 IPv6 地址的服务器配置为在一种协议上为 Apache 站点提供服务,在另一种协议上为 Nginx 站点提供服务,但这目前并不实用,因为 ISP 对 IPv6 的采用仍然不普遍。拥有像一个不同的端口号81或8080第二web服务器是另一种解决方案,但与端口号分享的网址(例如)并不总是合理的或理想的。http://your_domain:81 在本教程中,您将 Nginx 配置为 Web 服务器和 Apache 的反向代理——所有这些都在单个服务器上。 根据 Web 应用程序,可能需要更改代码以保持 Apache 反向代理感知,尤其是在配置 SSL 站点时。为了避免这种情况,您将安装一个名为 Apache 的模块mod_rpaf,它会重写某些环境变量,因此 Apache 似乎是直接处理来自 Web 客户端的请求。 我们将在一台服务器上托管四个域名。Nginx 将提供两个服务:(默认虚拟主机)和. 剩下的两个和将由 Apache 提供服务。我们还将配置 Apache ..
作者选择Open Sourcing Mental Illness接受捐赠,作为Write for DOnations计划的一部分。 介绍 在Vue.js开发中,客户端的 Web 浏览器读取 HTML 和JavaScript,并根据开发人员为其编写的指令呈现网页。但是网页或应用程序不仅需要处理数据;它还需要处理用户交互。为此,开发人员使用JavaScript中的事件在用户与HTML元素交互时执行代码。 事件可以捕获任何用户与用户界面按钮或物理键盘或鼠标的交互。在 JavaScript 中,您将创建事件侦听器,等待该事件发生,然后执行代码块。在 Vue.js 中,你不需要监听事件;这是使用v-on:指令自动完成的。 在本教程中,您将使用 Vue 中的事件来创建机场代码的应用程序。当用户选择机场代码时,应用程序会将该机场添加到“收藏夹”集合中。通过跟随这个项目,您将了解什么是事件、如何使用 Vue 的内置事件以及如何创建自己的自定义事件。 先决条件 要完成本教程,您需要: 14.17.0您的计算机上安装了Node.js 版本或更高版本。要在 macOS 或 Ubuntu 20.04 上安装它,请按照如何在 macOS 上安装 Node.js 和创建本地开发环境或如何在 Ubuntu 20.04 上安装 Node.js 的使用 PPA 安装部分中的步骤进行操作。 Vue的CLI您的计算机上安装按照步骤1中如何产生Vue.js单页应用程序会与Vue的CLI。在本教程的第一步中,您将使用它来创建您的 Vue 应用程序。 您还需要具备 JavaScript、HTML 和 CSS 的基本知识,您可以在我们的如何使用 HTML 构建网站系列、如何使用 CSS 构建网站系列和如何使用 JavaScript ..
介绍 在本快速入门指南中,我们将在 Ubuntu 20.04 服务器上安装Composer。 有关本教程的更详细版本以及每个步骤的更多解释,请参阅如何在 Ubuntu 20.04 上安装和使用 Composer。 先决条件 要遵循本指南,您需要以sudo用户身份访问 Ubuntu 20.04 服务器。 第 1 步 – 安装依赖项 首先更新您的包管理器缓存并安装所需的依赖项,包括php-cli: sudo apt update sudo apt install php-cli unzip 步骤 2 — 下载并安装 Composer 确保您位于主目录中,然后使用以下命令检索Composer 安装程序curl: cd ~ curl -sS https://getcomposer.org/installer -o composer-setup.php 接下来,我们将验证下载的安装程序是否与Composer 公钥/签名页面上找到的最新安装程序的 SHA-384 哈希匹配。 使用curl,获取最新的签名并将其存储在 shell 变量中: HASH=`curl -sS https://composer.github.io/installer.sig` 现在执行以下 PHP ..
介绍 本文将向您介绍 Angular 的ViewChild装饰器。 在某些情况下,您可能希望从父组件类访问指令、子组件或 DOM 元素。所述ViewChild装饰返回给定的指令,组件或模板参考选择相匹配的第一个元素。 ViewChild与指令一起使用 ViewChild 使访问指令成为可能。 假设我们有一个SharkDirective. 理想情况下,你会使用@angular/cli到generate你的指令: ng generate directive shark 否则,您可能需要手动将其添加到app.module.ts: app.module.ts import { SharkDirective } from ‘./shark.directive’; … @NgModule({ declarations: [ AppComponent, SharkDirective ], … }) 我们的指令将查找具有属性的元素,appShark并在元素的文本前加上单词Shark: 鲨鱼指令.ts import { Directive, ElementRef, Renderer2 } from ‘@angular/core’; @Directive( { selector: ‘[appShark]’ } ) export class SharkDirective { creature = ..