介绍 ng-container 是 Angular 2+ 中可用的元素,可以充当结构指令的宿主。 在本文中,您将探索可以使用ng-container. 先决条件 如果你想跟随这篇文章,你需要: 熟悉DOM的结构。要了解更多信息,请查看了解 DOM教程系列。 熟悉 Angular模板和结构指令也可能有所帮助。 使用ng-container以避免多余的元素 在 Angular 中,您不能在一个元素上使用多个模板绑定。 此示例组合*ngIf和*ngFor结构指令不会编译: Invalid Example<div *ngIf=”todos” *ngFor=”let todo of todos”> {{ todo.content }} </div> 尝试编译此代码将导致以下错误: Invalid Example OutputCan’t have multiple template bindings on one element. Use only one attribute prefixed with * 一种解决方法是分离模板绑定并创建一个包装器: Valid Example<div *ngIf=”todos”> <div *ngFor=”let todo of ..
Category : 教程系列
介绍 我们可以使用 Python 内置函数map()将函数应用于可迭代对象(如列表或字典)中的每个项目,并返回一个新的迭代器以检索结果。map()返回一个映射对象(一个迭代器),我们可以在程序的其他部分使用它。我们还可以将 map 对象传递给list()函数或其他序列类型,以创建一个可迭代对象。 该map()函数的语法如下: map(function, iterable, [iterable 2, iterable 3, …]) 该函数没有使用for循环,而是map()提供了一种将函数应用于可迭代对象中的每个项目的方法。因此,它通常可以提高性能,因为它一次只应用一个项目,而不是将项目的副本复制到另一个可迭代对象中。这在处理大型数据集的程序中特别有用。map()还可以通过一次从每个可迭代对象向函数发送一个项目,将多个可迭代对象作为函数的参数。 在本教程中,我们将回顾使用 的三种不同方式map():使用lambda函数、使用用户定义的函数,最后使用使用多个可迭代参数的内置函数。 使用 Lambda 函数 的第一个参数map()是一个函数,我们用它来应用于每个项目。Python 为我们传入的可迭代对象中的每个项目调用一次该函数map(),并返回映射对象中被操作的项目。对于第一个函数参数,我们可以传递用户定义的函数,也可以使用lambda函数,尤其是当表达式不太复杂时。 map()with lambda 函数的语法如下: map(lambda item: item[] expression, iterable) 使用如下所示的列表,我们可以lambda使用要应用于列表中的每个项目的表达式来实现一个函数: numbers = [10, 15, 21, 33, 42, 55] 要对我们的每个数字应用表达式,我们可以使用map()和lambda: mapped_numbers = list(map(lambda x: x * 2 + 3, numbers)) 在这里,我们将列表中的一个项目声明为x。然后我们添加我们的表达式。我们将数字列表作为 的可迭代对象传入map()。 为了立即接收结果,我们打印一个map对象列表: print(mapped_numbers) Output[23, ..
平台即服务 (PaaS) 是一类云计算,开发人员可以在其中提供部署平台来构建应用程序。每个平台的底层基础设施都是抽象的,这意味着用户可以期待预配置的运行时环境和可预测的扩展、存储和安全选项。用户还可以访问用于应用程序开发的语言、库、工具和服务,以及对配置设置的一定程度的控制。但是,他们无法修改底层操作系统或网络设置 对于不需要自定义底层基础架构或希望将注意力集中在开发而不是 DevOps 和系统管理的开发人员来说,PaaS 可能是一个不错的选择。 更多PaaS相关教育资源,请访问: 云计算概论 云课程简介 云托管简介 我们的云计算资源的完整列表可以在我们的云计算页面�..
内容安全策略 (CSP) 是 Web 开发人员提高网站安全性的一种机制。通过设置内容安全策略,Web 开发人员可以指示 Web 浏览器仅加载来自某些受信任域的资源,强制执行安全的 HTTPS 连接,甚至在发生策略违规时报告。这可以防止许多内容注入和跨站点脚本 (XSS) 漏洞,这些漏洞通常会导致数据泄漏、网站破坏和恶意软件分发。 通过设置Content-Security-PolicyHTTP 标头或<meta http-equiv=”Content-Security-Policy” … >在站点的 HTML 源代码中包含一个标记,将策略传输到 Web 浏览器。实际的策略数据是一个文本字符串,由一个或多个指定所需限制和配置的指令组成。 要了解有关内容安全策略及其在生产应用程序中实施的更多信息,请参阅以下资源: 内容安全策略 W3C 规范 如何使用内容安全策略保护 Node.js �..
介绍 数据库管理系统(DBMS) 是允许用户与数据库交互的计算机程序。DBMS 允许用户控制对数据库的访问、写入数据、运行查询以及执行与数据库管理相关的任何其他任务。 但是,为了执行这些任务中的任何一项,DBMS 必须具有某种定义数据组织方式的底层模型。在关系模型是组织已经发现,在数据库软件广泛使用,因为它是在20世纪60年代末首先设计数据的一种方法,以至于,截至记者发稿,前五名最流行的DBMS四是关系。 这篇概念性文章概述了关系模型的历史、关系数据库如何组织数据以及它们在今天的使用方式。 关系模型的历史 数据库是逻辑建模的信息或数据集群。任何数据集合都是一个数据库,无论其存储方式和存储位置如何。甚至包含工资单信息的文件柜也是一个数据库,就像一堆医院病人表格一样,或者一个公司收集的分布在多个位置的客户信息。在使用计算机存储和管理数据成为普遍做法之前,需要存储信息的政府和商业组织只能使用此类物理数据库。 大约在 20 世纪中叶,计算机科学的发展导致机器具有更强的处理能力,以及更大的本地和外部存储容量。这些进步促使计算机科学家开始认识到这些机器在存储和管理越来越多的数据方面的潜力。 然而,没有任何关于计算机如何以有意义的、合乎逻辑的方式组织数据的理论。在机器上存储未排序的数据是一回事,但设计允许您以一致、实用的方式添加、检索、排序和以其他方式管理数据的系统要复杂得多。对存储和组织数据的逻辑框架的需求导致了许多关于如何利用计算机进行数据管理的建议。 一种早期的数据库模型是分层模型,其中数据以树状结构组织,类似于现代文件系统。以下示例显示了用于对动物进行分类的分层数据库的一部分的布局可能看起来如何: 层次模型在早期的数据库管理系统中得到了广泛的应用,但它也被证明有些不灵活。在此模型中,即使单个记录可以有多个“子项”,但每个记录在层次结构中只能有一个“父项”。因此,这些早期的分层数据库仅限于表示“一对一”和“一对多”关系。这种“多对多”关系的缺乏可能会在您处理要与多个父级关联的数据点时导致问题。 1960 年代后期,在 IBM 工作的计算机科学家 Edgar F. Codd 设计了数据库管理的关系模型。Codd 的关系模型允许单个记录与多个表相关联,从而除了“一对多”关系之外,还支持数据点之间的“多对多”关系。在设计数据库结构时,这比其他现有模型提供了更大的灵活性,这意味着关系数据库管理系统 (RDBMS) 可以满足更广泛的业务需求。 Codd 提出了一种管理关系数据的语言,称为Alpha,它影响了后来数据库语言的发展。Codd 在 IBM 的两位同事 Donald Chamberlin 和 Raymond Boyce 在 Alpha 的启发下创造了一种这样的语言。他们称他们的语言SEQUEL,简称小号tructured é简体中文阙RY大号anguage,但因为现有的商标,他们缩短了语言的名称SQL(简称更正式的结构化查询语言)。 由于硬件限制,早期的关系数据库仍然非常缓慢,并且该技术需要一段时间才能普及。但到 1980 年代中期,Codd 的关系模型已在 IBM 及其竞争对手的许多商业数据库管理产品中实施。这些供应商还通过开发和实现他们自己的 SQL 方言来效仿 IBM。到 1987 年,美国国家标准协会和国际标准化组织都批准并发布了 SQL 标准,巩固了其作为管理 RDBMS 的公认语言的地位。 ..
介绍 TypeScript是 JavaScript 的类型化超集,可编译为纯 JavaScript。让我们分解一下这到底意味着什么: typed – 您可以定义变量、参数和返回数据类型。 superset -TypeScript 在 JavaScript 之上添加了一些附加功能。所有有效的 JavaScript 都是有效的 TypeScript,但反之则不然。 编译为纯 JavaScript – TypeScript 无法由浏览器运行。因此,可用工具负责将您的 TypeScript 编译为 JavaScript,以便浏览器能够理解。 在本教程中,您将在 Visual Studio Code 中使用 TypeScript,探索将它们结合使用的好处。 先决条件 对于这个项目,你需要: 对 JavaScript 的有效理解。您可以查看如何在 JavaScript 中编码系列以获取更多信息。 Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 已下载并安装Visual Studio Code (VS Code)。 第 1 步 – 安装和编译 TypeScript 使用 TypeScript 的第一步是在您的计算机上全局安装包。typescript通过在终端中运行以下命令来全局安装包: ..
介绍 在本教程中,您将一个容器化的 Django 轮询应用程序部署到 Kubernetes 集群中。 Django是一个强大的 Web 框架,可以帮助您快速启动 Python 应用程序。它包括几个方便的功能,例如对象关系映射器、用户身份验证和应用程序的可自定义管理界面。它还包括一个缓存框架,并通过其URL 调度程序和模板系统鼓励干净的应用程序设计。 在How to Build a Django and Gunicorn Application with Docker 中,Django Tutorial Polls 应用程序根据用于构建可扩展的云原生 Web 应用程序的十二因素方法进行了修改。这个容器化设置通过 Nginx 反向代理和 Let’s Encrypt-signed TLS 证书进行了扩展和保护,如何使用 Docker、Nginx 和 Let’s Encrypt扩展和保护Django 应用程序。在使用 Django 从容器到 Kubernetes系列的最后一个教程中,现代化的 Django 轮询应用程序将部署到 Kubernetes 集群中。 Kubernetes是一个强大的开源容器编排器,可自动部署、扩展和管理容器化应用程序。像 ConfigMaps 和 Secrets 这样的 Kubernetes 对象允许您将配置与容器集中和分离,而像 Deployments 这样的控制器会自动重启失败的容器并实现容器副本的快速扩展。TLS ..
使用 ES2015 (ES6),获得对 JavaScript 模块的内置支持。与 CommonJS 一样,每个文件都是它自己的模块。要使外部世界可以使用对象、函数、类或变量,只需导出它们,然后将它们导入到其他文件中需要的位置即可。Angular 2 大量使用 ES6 模块,因此使用 Angular 的人会非常熟悉其语法。语法非常简单: 出口 可以一一导出成员。未导出的内容将无法直接在模块外部使用: export const myNumbers = [1, 2, 3, 4]; const animals = [‘Panda’, ‘Bear’, ‘Eagle’]; // Not available directly outside the module export function myLogger() { console.log(myNumbers, animals); } export class Alligator { constructor() { // … } } 或者您可以在模块末尾的单个语句中导出所需的成员: export ..
HTML 标签是一种标记语言,用于指示HTML 文档中HTML 元素的开始和结束。 作为 HTML 元素的一部分,HTML 标签可帮助 Web 浏览器将 HTML 文档转换为网页。例如,<p>标签用于将文本内容组织成段落元素,<img>标签用于嵌入图像元素。 许多标签(尽管不是全部)使用开始标签和结束标签来环绕它们用于修改的内容。结束标签用这样的反斜杠表示:</tag_name>。HTML 标签在浏览器中不可见。 下图说明了标签在 HTML 元素中的常用用法: 有关 HTML 元素的更多教育资源,请访问: 如何查看 HTML 文档的源代码 如何使用和理解 HTML 元素 如何使用 HTML 教程系列构建网站 如何使用 HTML 构建网站:DigitalOcean Workshop Kit 如何使用 HTML 电子书建立网站 我们的HTML页面上提供了与 HTML 相关的教育资源的完�..
*“Property Initializer Syntax”* 听起来比实际更花哨。在这个简短的教程中,了解这种编写事件处理程序的替代方法将如何帮助消除您的样板文件,constructor并防止渲染中的琐碎内存使用。 在 Facebook 文档中,你会看到事件处理是这样完成的: // option 1 class Thing extends React.Component { constructor() { this.handleSmthng = this.handleSmthng.bind(this) } render() { <input onChange={this.handleSmthng}/> } handleSmthng(e) { // … } } ES6 类不会自动赋予this作用域handleSmthng,并且由于您通常想要调用this.setState或可能调用组件中的另一个方法,“官方”约定是始终在构造函数中绑定所有事件处理程序。这有效,但很快就会感觉像样板代码。 // option 2 class Thing extends React.Component { render() { <button onClick={() => this.handleSmthng(‘foo’)}> ADD </button> } handleSmthng(arg1) { // … ..