Category : 教程系列

干燥,这代表“ d on’t [R EPEAT Ÿ我们自己,”是软件开发的原则,旨在减少的模式和代码重复的重复主张抽象的,避免冗余。 由 The Pragmatic Programmer 一书推广的 DRY 原则指出,“系统中的每一条知识都必须有一个单一的、明确的、权威的表示。” 使用具有某些功能的原理、逻辑或算法在应用程序中只应出现一次。 要了解有关 DRY 开发的更多信息,请查看有关 DRY 开发成本和收益的文章,DRY 原则:收益和成本�..

Read more

对象是 JavaScript 的基本块。对象是属性的集合,属性是键(或名称)和值之间的关联。JavaScript 中的几乎所有对象都是Object位于原型链顶部的实例。 介绍 如您所知,赋值运算符不会创建对象的副本,它只会为其分配一个引用,让我们看一下以下代码: let obj = { a: 1, b: 2, }; let copy = obj; obj.a = 5; console.log(copy.a); // Result // a = 5; 该obj变量是初始化的新对象的容器。该copy变量指向同一个对象,并且是对该对象的引用。所以基本上这个{ a: 1, b: 2, }对象是在说:现在有两种方法可以访问我。您必须通过obj变量或copy变量以任何方式到达我,并且您通过这些方式(网关)对我做的任何事情都会影响我。 这些天来广泛谈论不变性,你必须听听这个电话!此方法消除了任何形式的不变性,如果原始对象被代码的另一部分使用,则可能会导致错误。 复制对象的天真方法 复制对象的最简单的方法是循环遍历原始对象并一个接一个地复制每个属性。我们来看看这段代码: function copy(mainObj) { let objCopy = {}; // objCopy will store a copy of the mainObj let ..

Read more

介绍 ParcelJS将自己描述为速度极快、零配置的 Web 应用程序打包器。 Parcel 的前提是使用 JavaScript 打包器构建应用程序可能更容易。Webpack 提供了更大的可配置性,但可能存在不需要这种程度的配置的用例。 这就是 Parcel 的用武之地。它自诩为一个零配置的快速捆绑工具——您只需将它指向应用程序的入口点即可。 Parcel 还提供以下功能: 快速捆绑时间 – Parcel 的时间比其他捆绑工具快得多。下面是GitHub 上 Parcel 页面的屏幕截图。 资产捆绑 – Parcel 对 JS、CSS、HTML、文件资产具有开箱即用的支持。 自动转换 – 您的所有代码都使用 Babel、PostCSS 和 PostHTML 自动转换。 代码拆分 – Parcel 允许您使用动态 import() 语法拆分输出包。 热模块替换 (HMR) – Parcel 会在您在开发过程中进行更改时自动更新浏览器中的模块,无需配置。 错误记录 – Parcel 在遇到错误时打印语法突出显示的代码帧,以帮助您查明问题。 关于 Parcel 的另一件事要注意的是,它允许开发人员使用index.html文件作为入口点,而不是 JS 模块。 在本教程中,您将使用 Parcel ..

Read more

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 在 Web 的早期,网站主要由HTML和CSS 组成。如果任何 JavaScript 加载到页面中,它通常是提供效果和交互性的小片段形式。因此,JavaScript 程序通常完全写在一个文件中并加载到script标签中。开发人员可以将 JavaScript 分解为多个文件,但所有变量和函数仍将添加到全局作用域中。 但是随着网站随着Angular、React和Vue等框架的出现以及公司创建高级 Web 应用程序而不是桌面应用程序而发展,JavaScript 现在在浏览器中扮演着重要角色。因此,更需要使用第三方代码来执行常见任务,将代码分解为模块化文件,并避免污染全局命名空间。 在ECMAScript的2015年规范引入模块JavaScript语言,它允许使用import和export声明。在本教程中,您将了解什么是 JavaScript 模块以及如何使用import和export组织您的代码。 模块化编程 在 JavaScript 中出现模块的概念之前,当开发人员想要将他们的代码组织成段时,他们会创建多个文件并作为单独的脚本链接到它们。为了演示这一点,创建一个示例index.html文件和两个 JavaScript 文件,functions.js以及script.js. 该index.html文件将显示两个数字的和、差、积和商,并在script标签中链接到两个 JavaScript 文件。index.html在文本编辑器中打开并添加以下代码: 索引.html <!DOCTYPE html> <html lang=”en”> <head> <meta charset=”utf-8″ /> <meta name=”viewport” content=”width=device-width, initial-scale=1.0″ /> <title>JavaScript Modules</title> </head> <body> <h1>Answers</h1> <h2><strong id=”x”></strong> and <strong id=”y”></strong></h2> <h3>Addition</h3> ..

Read more

作者选择Creative Commons接受捐赠,作为Write for DOnations计划的一部分。 介绍 在React 中,状态是指一种结构,用于跟踪应用程序中数据随时间的变化情况。管理状态是 React 中的一项关键技能,因为它允许您制作交互式组件和动态 Web 应用程序。状态用于从跟踪表单输入到从 API 捕获动态数据的所有事情。在本教程中,您将通过一个在基于类的组件上管理状态的示例。 在撰写本教程时,React官方文档鼓励开发人员在编写新代码时采用React Hooks来管理具有功能组件的状态,而不是使用基于类的组件。尽管使用 React Hooks 被认为是一种更现代的实践,但了解如何管理基于类的组件的状态也很重要。学习状态管理背后的概念将帮助您在现有代码库中导航和解决基于类的状态管理,并帮助您确定何时更适合基于类的状态管理。还有一个基于类的方法componentDidCatch,它在 Hooks 中不可用,需要使用类方法设置状态。 本教程将首先向您展示如何使用静态值设置状态,这对于下一个状态不依赖于第一个状态的情况非常有用,例如从覆盖旧值的 API 设置数据。然后会贯穿如何将一个状态设置为当前状态,这在下一个状态依赖于当前状态时很有用,比如切换一个值。要探索设置状态的这些不同方式,您将创建一个产品页面组件,您将通过从选项列表中添加购买来更新该组件。 先决条件 你需要一个运行Node.js的开发环境;本教程在 Node.js 版本 10.20.1 和 npm 版本 6.14.4 上进行了测试。要在 macOS 或 Ubuntu 18.04 上安装它,请按照如何在 macOS 上安装 Node.js 和创建本地开发环境或如何在 Ubuntu 18.04 上安装 Node.js 的使用 PPA 安装部分中的步骤进行操作。 在本教程中,您将使用Create React App创建应用程序。您可以在如何使用 Create React App设置 ..

Read more

该系列的一部分: 如何编写 Ansible Playbooks Ansible 是一种现代配置管理工具,不需要在远程节点上使用代理软件,仅使用 SSH 和 Python 在托管服务器上进行通信和执行命令。本系列将带您了解可用于编写服务器自动化剧本的主要 Ansible 功能。最后,我们将看到一个实际示例,说明如何创建剧本以自动设置远程 Nginx Web 服务器并向其部署静态 HTML 网站。 就像您在终端上执行的常规命令一样,某些任务需要特殊权限才能让 Ansible 在您的远程节点上成功执行它们。 了解权限提升在 Ansible 中的工作原理很重要,这样您就可以使用适当的权限执行任务。默认情况下,任务将作为连接用户运行 – 这可能是root或任何对清单文件中的远程节点具有 SSH 访问权限的普通用户。 要运行具有扩展权限的命令,例如需要 的命令sudo,您需要在您的游戏中包含become设置为的指令yes。这既可以作为对该剧中所有任务有效的全局设置,也可以作为每个任务应用的单独指令来完成。根据您的sudo用户在远程节点中的设置方式,您可能还需要提供用户的sudo密码。以下示例更新apt缓存,这是一项需要root权限的任务。 playbook-07.yml在您的ansible-practice目录中创建一个名为的新文件: nano ~/ansible-practice/playbook-07.yml 然后将以下行添加到新的剧本文件中: ~/ansible-practice/playbook-07.yml — – hosts: all become: yes tasks: – name: Update apt cache apt: update_cache: yes 完成后保存并关闭文件。 要运行此剧本,您需要-K在ansible-playbook命令中包含该选项。这将使 Ansible 提示您sudo输入指定用户的密码。 ansible-playbook -i ..

Read more

介绍 Composer是一个流行的 PHP 依赖管理工具,创建主要是为了方便项目依赖的安装和更新。它将检查特定项目依赖哪些其他包并为您安装它们,根据项目要求使用适当的版本。Composer 还常用于引导基于流行的 PHP 框架(例如Symfony和Laravel )的新项目。 在本教程中,您将在 Ubuntu 20.04 系统上安装并开始使用 Composer。 先决条件 为了遵循本指南,您需要以非 rootsudo用户身份访问 Ubuntu 20.04 服务器,并在您的服务器上启用防火墙。要进行设置,您可以按照我们针对 Ubuntu 20.04 的初始服务器设置指南进行操作。 第 1 步 – 安装 PHP 和其他依赖项 除了应该已经包含在 Ubuntu 20.04 系统中的依赖项(例如git和 )之外curl,Composer 还需要php-cli在命令行中执行 PHP 脚本并unzip提取压缩档案。我们现在将安装这些依赖项。 首先,通过运行更新包管理器缓存: sudo apt update 接下来,运行以下命令来安装所需的包: sudo apt install php-cli unzip 系统将提示您输入Y,然后输入确认安装ENTER。 安装先决条件后,您可以继续安装 Composer。 步骤 2 — 下载和安装 Composer ..

Read more

介绍 长期以来,仅使用 CSS 无法选择父元素,但是伪类:focus-within稍微改变了这个故事。它允许在元素具有焦点时对其进行样式设置,而且在其任何内部元素(后代)具有焦点时也可以进行样式设置。一个主要的例子是一个表单,当用户关注输入元素之一时,您希望容器元素以某种方式设置样式。 HTML 和 CSS 代码 这是在表单中使用:focus-within的示例。让我们从这个标记开始: <form tabindex=”0″ class=”myForm”> <h3>What’s your favorite color?</h3> <input type=”text”> </form> 我们的 CSS 规则如下: .myForm:focus-within { background: #f8f8f8 repeating-linear-gradient( 45deg, transparent, transparent 35px, rgba(255, 255, 255, 0.5) 35px, rgba(255, 255, 255, 0.5) 70px ); } .myForm:focus-within::before { content: “I’m a happy selected form!”; color: rgb(239, 187, 53); ..

Read more

介绍 WordPress 是一个强大的内容管理平台,目前支持超过 36% 的网络。借助多站点功能,WordPress 管理员可以使用单个 WordPress 安装在其仪表板内在一台服务器上创建多个站点。 在本快速入门中,了解如何使用多站点功能设置存在于一台服务器或 WordPress Droplet 上的多个 WordPress 站点实例。如果您希望更深入地了解 WordPress 多站点设置,请参阅如何在 Ubuntu 20.04 上使用 Nginx 和 LEMP 设置WordPress 多站点。 先决条件 本教程中的步骤要求用户具有sudo权限。按照我们的Ubuntu 20.04 初始服务器设置创建一个具有sudo特权的管理系统用户。 在使用 WordPress 之前,您需要将其安装在您的虚拟专用服务器上。本快速入门使用安装了 LAMP 堆栈的 Ubuntu 20.04 Droplet,用户具有 root 权限。您可以按照本教程进行其他安装,但请记住,步骤可能因您的安装而异。 如果您选择以与本教程类似的方式安装 WordPress,请务必在第 5 步结束时停止以继续本教程的第 1 步。 第 1 步 – 配置您的 WordPress 安装 安装 WordPress 后,我们需要在各种配置文件中执行一系列步骤。 首先,让我们修改 ..

Read more

介绍 HTML5 引入了可以访问设备硬件的API ,包括MediaDevices API。此 API 提供对音频和视频等媒体输入设备的访问。 在此 API 的帮助下,开发人员可以访问音频和视频设备以在浏览器中流式传输和显示实时视频源。在本教程中,您将从用户的设备访问视频源,并使用getUserMedia方法将其显示在浏览器中。 该getUserMediaAPI使得使用介质的输入设备来产生MediaStream。此 MediaStream 包含请求的媒体类型,无论是音频还是视频。使用 API 返回的流,可以在浏览器上显示视频源,这对于浏览器上的实时通信很有用。 当与MediaStream Recording API一起使用时,您可以记录和存储在浏览器上捕获的媒体数据。此 API 仅适用于其他新引入的 API 一样的安全来源,但它也适用于localhost和文件 URL。 先决条件 JavaScript 的基本知识。如果您不熟悉 JavaScript,请尝试查看如何在 JavaScript 中编码系列。 本教程将首先解释概念并使用Codepen演示示例。在最后一步,您将为浏览器创建一个正常运行的视频源。 步骤 1 — 检查设备支持 首先,您将看到如何检查用户的浏览器是否支持该mediaDevicesAPI。此 API 存在于导航器界面中,包含用户代理的当前状态和身份。使用以下可以粘贴到 Codepen 中的代码执行检查: if (‘mediaDevices’ in navigator && ‘getUserMedia’ in navigator.mediaDevices) { console.log(“Let’s get this party started”) } 首先,如果这个检查mediaDevices的API中存在navigator,然后检查该getUserMediaAPI是内可用mediaDevices。如果返回true,您就可以开始了。 ..

Read more