介绍 渐进式 Web 应用程序是使用技术构建的 Web 应用程序,这些技术使它们的行为类似于本机应用程序。渐进式 Web 应用程序的一个好处是能够在网络覆盖不可靠时顺利工作。此外,与本机应用程序不同,不需要安装,但它们比典型的网络应用程序更快。 在本文中,您将使用Angular构建一个渐进式 Web 应用程序并使用Firebase部署它。 本教程的代码可在 GitHub 上找到。 注意:目前,有一个@angular/pwa包可以帮助完成此过程。本教程将介绍一种较早的替代方法。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 安装在本地计算机上的最新版本的Google Chrome Web 浏览器。 安装在 Chrome 中的Lighthouse Chrome 扩展程序用于稍后测试您的应用程序是否是渐进式的。 如果您希望将应用程序上传到 Firebase,则需要一个 Google 帐户。 本教程已通过 Node v14.5.0 和npmv6.14.5验证。 第 1 步——创建一个新的 Angular 项目 您可以使用 Angular CLI 创建一个新项目。默认情况下,Angular 将生成本教程项目中不使用的测试文件。为了防止这种生成,您将–skip-tests在以下命令中添加标志以创建新项目: npx @angular/[email protected] new ng-pwa –skip-tests 一些配置选项会提示您: Output? ..
Category : 教程系列
介绍 当绑定到Angular 2+ 模板中的keyup或keydown事件时,您可以指定键名。这将应用要应用于事件的过滤器,因此只有在按下特定键时才会触发。 在本文中,您将学习如何在侦听keyup和keydown事件时使用键名。 使用键名 首先,让我们看一个不使用键名的例子。 假设我们有一个<input>元素供用户提供信息。我们想在用户按下ENTER按键时登录到控制台: <input (keydown)=”onKeydown($event)”> 我们已经绑定了一个keydown触发的事件处理程序onKeydown(): 接下来,让我们编写onKeydown()处理按键的函数ENTER: onKeydown(event) { if (event.key === “Enter”) { console.log(event); } } 对每个keydown事件执行检查以确定event.key值是否为Enter。如果true,我们将 记录event到控制台。 现在是相同的示例,但ENTER在事件中添加了键名: <input (keydown.enter)=”onKeydown($event)”> 我们绑定了一个keydown.enter 伪事件处理程序来触发onKeydown(): 接下来,让我们重写onKeydown()函数: onKeydown(event) { console.log(event); } 通过依赖 Angular 的keydown.enter伪事件,不再需要手动检查event.key值是否为Enter。 使用特殊修饰键和组合 此功能适用于特殊和修饰键,如ENTER、转义 ( ESC) SHIFT、ALT、TAB、BACKSPACE、 和命令 ( meta ): 钥匙 键名 ENTER <input (keydown.enter)=”…”> ESC <input (keydown.esc)=”…”> ALT ..
让我们从一个常见的用例开始。您有一些从外部来源获得的数据(例如通过调用 API)。你想在屏幕上显示它。 但是,您希望将数据传递给子组件进行显示,而不是在同一个组件上显示它。 子组件可能有一些逻辑来在屏幕上显示之前对数据进行预处理。 我们的例子 例如,您有一个博客组件,用于显示博客详细信息和她的帖子。Blogger 组件将从 API 获取帖子列表。 不是在博客组件中编写显示帖子的逻辑,而是要重用由您的队友创建的帖子组件,您需要做的是将帖子数据传递给它。 然后,帖子组件将按类别对帖子进行分组并相应地显示,如下所示: 这不是很容易吗? 乍一看可能很容易。大多数情况下,我们将在组件初始化期间启动所有过程 – 在ngOnInit生命周期钩子期间(有关组件生命周期钩子的更多详细信息,请参阅此处)。 在我们的例子中,你可能认为我们应该在帖子组件的ngOnInit期间运行帖子分组逻辑。 但是,由于posts数据来自服务器,当博主组件将posts数据传递给posts 组件时,posts 组件ngOnInit在数据更新之前已经被触发。您的帖子分组逻辑不会被触发。 我们如何解决这个问题?让我们编码! 演示:https : //ng-musing.firebaseapp.com/three-ways Github:https : //github.com/chybie/ng-musing/tree/master/src/app/three-ways 我们的发布接口和数据 让我们从接口开始。 // post.interface.ts // each post will have a title and category export interface Post { title: string; category: string; } // grouped posts by category export interface ..
介绍 Jenkins是一个开源自动化服务器,可自动执行软件持续集成和交付中涉及的重复性技术任务。Jenkins 是基于 Java 的,可以从 Ubuntu 软件包安装,也可以通过下载并运行其 Web 应用程序存档 (WAR) 文件来安装 – 一组文件组成了在服务器上运行的完整 Web 应用程序。 在本教程中,您将通过添加其 Debian 软件包存储库来安装 Jenkins,并使用该存储库安装带有apt. 先决条件 要学习本教程,您需要: 按照Ubuntu 18.04 初始服务器设置指南使用非 root sudo 用户和防火墙配置了一台Ubuntu 18.04 服务器。我们建议从至少 1 GB 的 RAM 开始。有关规划生产 Jenkins 安装容量的指导,请参阅为Master 选择合适的硬件。 已安装 Java 8,遵循我们在 Ubuntu 18.04上安装特定版本的 OpenJDK 的指南。 第 1 步 – 安装 Jenkins 默认 Ubuntu 软件包中包含的 Jenkins 版本通常落后于项目本身的最新可用版本。要利用最新的修复和功能,您可以使用项目维护的包来安装 ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 MongoDB 是最流行的 NoSQL 数据库引擎之一。它以可扩展、强大、可靠和易于使用而闻名。在本文中,我们将向您展示如何导入和导出 MongoDB 数据库。 我们应该明确,导入和导出是指以人类可读的格式处理数据的操作,与其他软件产品兼容。相比之下,备份和还原操作会创建或使用 MongoDB 特定的二进制数据,从而保持数据的一致性和完整性及其特定的 MongoDB 属性。因此,对于迁移,只要源系统和目标系统兼容,通常最好使用备份和还原。 备份、还原和迁移任务超出了本文的范围。有关更多信息,请参阅如何在 Ubuntu 20.04 上备份、还原和迁移 MongoDB 数据库。 先决条件 要完成本教程,您将需要以下内容: 根据Ubuntu 20.04 初始服务器设置指南设置了一个 Ubuntu 20.04 Droplet ,包括一个 sudo 非 root 用户和一个防火墙。 使用文章如何在 Ubuntu 20.04 上安装 MongoDB 来安装和配置MongoDB。 了解 MongoDB 中 JSON 和 BSON 数据之间的差异。有关详细讨论,请阅读我们的教程如何在 Ubuntu 20.04 上备份、恢复和迁移 MongoDB 数据库中的第一步 — 在 ..
该系列的一部分: 常见的 Apache 错误 本教程系列介绍了如何对使用Apache Web 服务器时可能遇到的一些最常见错误进行故障排除和修复。 本系列中的每个教程都包含对常见 Apache 配置、网络、文件系统或权限错误的描述。本系列首先概述了可用于对 Apache 进行故障排除的命令和日志文件。后续教程详细检查特定错误。 介绍 AH00526: Syntax error当您的 Apache 配置文件中的某处存在拼写错误或配置错误的设置时,会出现一条 Apache消息。这是一个通用错误,可以指示许多潜在问题。 可以在apachectl configtest加载无效配置之前使用该错误进行检测。也可以使用systemctl和journalctl命令找到它。在后两种情况下,Apache会因为错误而无法运行。 如果您已检测到错误,请apachectl跳至本教程的使用内置apachectl命令进行故障排除部分。否则,下一节将解释如何使用systemctl来排除错误。 故障排除 systemctl 按照本系列开头的如何对常见 Apache 错误进行故障排除教程中的故障排除步骤进行操作,对AH00526 错误进行故障排除的第一步是使用systemctl. 了解错误是否会影响正在运行的进程,或者是否会阻止 Apache 启动,这一点很重要。 在 Ubuntu 和 Debian 派生的 Linux 发行版上,运行以下命令来检查 Apache 的状态: Ubuntu 和 Debian 系统 sudo systemctl status apache2.service -l –no-pager 在 CentOS 和 Fedora 系统上,使用此命令检查 ..
介绍 firewalld是可用于许多 Linux 发行版的防火墙管理软件,它充当 Linux 内核nftables或iptables数据包过滤系统的前端。 在本指南中,我们将向您展示如何为 CentOS 8 服务器设置 firewalld 防火墙,并介绍使用firewall-cmd管理工具管理防火墙的基础知识。 先决条件 要完成本教程,你需要运行的CentOS 8的服务器,我们将假定你登录到该服务器作为非根,sudo使能的用户。要进行设置,请参阅我们的 CentOS 8 初始服务器设置指南。 firewalld 的基本概念 在我们开始讨论如何实际使用该firewall-cmd实用程序来管理您的防火墙配置之前,我们应该熟悉该工具引入的一些概念。 区域 该firewalld守护程序管理使用实体称为规则组区域。区域是一组规则,根据您在网络中的信任级别决定应该允许哪些流量。网络接口被分配给一个区域来规定防火墙应该允许的行为。 对于可能经常在网络之间移动的计算机(如笔记本电脑),这种灵活性提供了一种根据环境更改规则的好方法。在公共 WiFi 网络上运行时,您可能制定了严格的规则来禁止大部分流量,同时在连接到家庭网络时允许更宽松的限制。对于服务器,这些区域通常不那么重要,因为网络环境很少发生变化(如果有的话)。 无论您的网络环境多么动态,熟悉每个预定义区域背后的一般思想仍然很有用firewalld。其中的预定义区域firewalld按从最不信任到最受信任的顺序排列: drop:最低级别的信任。所有传入连接都被丢弃而没有回复,只有传出连接是可能的。 block : 与上面类似,但不是简单地丢弃连接,传入的请求会被一个icmp-host-prohibitedoricmp6-adm-prohibited消息拒绝。 public:代表公共的、不受信任的网络。您不信任其他计算机,但可能会根据具体情况允许选定的传入连接。 external:在您使用防火墙作为网关的情况下的外部网络。它配置为 NAT 伪装,以便您的内部网络保持私密但可访问。 internal:外部区域的另一侧,用于网关的内部部分。这些计算机相当值得信赖,并且可以使用一些附加服务。 dmz:用于位于 DMZ 中的计算机(无法访问网络其余部分的隔离计算机)。只允许某些传入连接。 work:用于工作机器。信任网络中的大多数计算机。可能会允许更多的服务。 home:家庭环境。这通常意味着您信任大多数其他计算机,并且将接受更多服务。 信任:信任网络中的所有机器。最开放的可用选项,应谨慎使用。 要使用防火墙,我们可以创建规则并更改区域的属性,然后将我们的网络接口分配给最合适的区域。 规则永久性 在 firewalld 中,规则可以应用于当前运行时规则集,也可以永久设置。添加或修改规则时,默认情况下仅修改当前运行的防火墙。在下一次重新启动或重新加载firewalld服务后,将只保留永久规则。 大多数firewall-cmd操作可以使用一个–permanent标志来指示应该将更改应用于永久配置。此外,可以使用firewall-cmd –runtime-to-permanent命令将当前运行的防火墙保存到永久配置中。 运行时与永久配置的这种分离意味着您可以安全地测试活动防火墙中的规则,然后在出现问题时重新加载以重新开始。 安装和启用 firewalld firewalld 在某些 Linux ..
本系列的一部分: 如何使用 Laravel 和 Docker Compose 在 PHP 中构建链接登陆页面 Laravel是一个开源 PHP 框架,它提供了一组工具和资源来构建现代 PHP 应用程序。在这个基于项目的教程系列中,您将使用 Laravel 框架构建一个Links Landing Page应用程序,使用由 Docker Compose 管理的容器化 PHP 开发环境。 最后,您将拥有一个使用 Laravel 构建并通过 Artisan 命令管理的单页网站,您可以在其中将相关链接分享给社交渠道和演示文稿上的受众。 到目前为止,您已经了解了如何使用迁移设置应用程序的 MySQL 数据库表,如何创建 Eloquent 模型以与链接表交互,以及如何创建 Artisan 命令来管理数据库中的链接。您现在将看到如何创建自定义 Blade 模板以在应用程序的前端显示您的链接。为了在保持最小化的同时简化此页面的样式,在本系列中,我们将使用Bulma,一个单文件 CSS 框架。 Laravel 网络路由文件中设置的默认路由指向一个示例模板,您可以在 中找到该模板resources/views/welcome.blade.php。您将index.blade.php在同一目录中创建一个新文件,并编辑主路由文件,以便/路由指向此模板。在路由定义中,您还需要获取要在新索引模板中显示的所有链接的列表。 首先更新 Laravel 应用程序的路由文件。routes/web.php使用您选择的文本或代码编辑器打开文件: nano routes/web.php 你当前的/路由默认指向 Laravel 自带的示例页面: Route::get(‘/’, function () { return ..
该系列的一部分: 常见的 Apache 错误 本教程系列介绍了如何对使用Apache Web 服务器时可能遇到的一些最常见错误进行故障排除和修复。 本系列中的每个教程都包含对常见 Apache 配置、网络、文件系统或权限错误的描述。本系列首先概述了可用于对 Apache 进行故障排除的命令和日志文件。后续教程详细检查特定错误。 介绍 共有三个主要命令和一组常见的日志位置,您可以使用它们开始对 Apache 错误进行故障排除。通常,当您对 Apache 进行故障排除时,您将按照此处指示的顺序使用这些命令,然后检查日志文件中的特定诊断数据。 您通常用于在大多数 Linux 发行版中对 Apache 进行故障排除的命令是: systemctl– 用于通过systemd服务管理器控制 Linux 服务并与之交互。 journalctl– 用于查询和查看由systemd.生成的日志。 apachectl – 故障排除时,此命令用于检查Apache 的配置。 这些命令、如何使用它们以及您可以在其中找到有关错误的其他信息的 Apache 日志位置在以下部分中进行了更详细的描述。 注意:在 Debian 和 Ubuntu 系统上,Apache 服务和进程名称是apache2,而在 CentOS、Fedora 和其他 RedHat 派生系统上,Apache 的服务和进程名称是httpd. 除了服务和正在运行的进程名称之间的差异外,启动、停止和检查 Apache 的状态以及日志journalctl在systemd用于管理 Apache 服务的任何 Linux 系统上都应该相同。请确保为您的 Linux ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 GraphQL是一种用于 API 的查询语言,它由架构定义语言和查询语言组成,它允许 API 使用者仅获取他们需要的数据以支持灵活查询。GraphQL 使开发人员能够在满足多个客户端(例如 iOS、Android 和应用程序的 Web 变体)的不同需求的同时改进 API。此外,GraphQL 模式为 API 增加了一定程度的类型安全性,同时也作为 API 的一种文档形式。 Prisma是一个开源数据库工具包。它由三个主要工具组成: Prisma Client:用于 Node.js 和 TypeScript 的自动生成和类型安全的查询构建器。 Prisma Migrate:声明式数据建模和迁移系统。 Prisma Studio:用于查看和编辑数据库中数据的 GUI。 Prisma 为希望专注于实现增值功能而不是将时间花在复杂的数据库工作流(例如模式迁移或编写复杂的 SQL 查询)上的应用程序开发人员使用数据库提供便利。 在本教程中,您将结合使用 GraphQL 和 Prisma,因为它们的职责相辅相成。GraphQL 为您的数据提供了一个灵活的接口,以便在客户端(例如前端和移动应用程序)中使用——GraphQL 不依赖于任何特定的数据库。这就是 Prisma 处理与存储数据的数据库交互的地方。 DigitalOcean 的应用程序平台提供了一种在云中部署应用程序和配置数据库的无缝方式,而无需担心基础设施。这减少了在云中运行应用程序的运营开销;尤其是能够创建具有每日备份和自动故障转移的托管 PostgreSQL 数据库。App Platform 具有原生 Node.js 支持简化部署。 您将使用 Node.js ..