From 310fd066e91f454b990372ffa30e803cc8120975 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 12:56:40 +0100 Subject: unslug zh-cn: move --- files/zh-cn/glossary/abstraction/index.html | 22 + files/zh-cn/glossary/algorithm/index.html | 37 ++ files/zh-cn/glossary/arpa/index.html | 18 + files/zh-cn/glossary/asynchronous/index.html | 37 ++ files/zh-cn/glossary/base64/index.html | 605 +++++++++++++++++++++ files/zh-cn/glossary/baseline/index.html | 24 + files/zh-cn/glossary/browser/index.html | 24 + files/zh-cn/glossary/card_sorting/index.html | 18 + files/zh-cn/glossary/character_encoding/index.html | 26 + files/zh-cn/glossary/compile/index.html | 28 + files/zh-cn/glossary/compile_time/index.html | 16 + files/zh-cn/glossary/cross_axis/index.html | 72 +++ files/zh-cn/glossary/database/index.html | 25 + files/zh-cn/glossary/dhtml/index.html | 143 +++++ .../zh-cn/glossary/digital_certificate/index.html | 12 + files/zh-cn/glossary/domain_name/index.html | 15 + files/zh-cn/glossary/dtd/index.html | 9 - files/zh-cn/glossary/element/index.html | 22 + files/zh-cn/glossary/empty_element/index.html | 40 ++ .../glossary/forbidden_header_name/index.html | 39 ++ files/zh-cn/glossary/general_header/index.html | 11 + .../zh-cn/glossary/graceful_degradation/index.html | 37 ++ files/zh-cn/glossary/header/index.html | 76 --- files/zh-cn/glossary/http_header/index.html | 76 +++ files/zh-cn/glossary/idempotent/index.html | 49 ++ files/zh-cn/glossary/iife/index.html | 63 +++ files/zh-cn/glossary/ip_address/index.html | 20 + .../ip\345\234\260\345\235\200/index.html" | 20 - files/zh-cn/glossary/localization/index.html | 62 +++ files/zh-cn/glossary/main_axis/index.html | 50 ++ files/zh-cn/glossary/oop/index.html | 21 + files/zh-cn/glossary/origin/index.html | 52 ++ .../glossary/progressive_enhancement/index.html | 24 + files/zh-cn/glossary/proxy_server/index.html | 24 + files/zh-cn/glossary/pseudo-class/index.html | 18 + files/zh-cn/glossary/request_header/index.html | 44 ++ files/zh-cn/glossary/semantics/index.html | 97 ++++ files/zh-cn/glossary/serialization/index.html | 23 + files/zh-cn/glossary/serialize/index.html | 23 - files/zh-cn/glossary/simple_header/index.html | 38 ++ files/zh-cn/glossary/sloppy_mode/index.html | 16 + .../zh-cn/glossary/speculative_parsing/index.html | 29 + files/zh-cn/glossary/time_to_first_byte/index.html | 20 + files/zh-cn/glossary/type_conversion/index.html | 27 + files/zh-cn/glossary/xhtml/index.html | 15 + .../glossary/\344\270\273\350\275\264/index.html" | 50 -- .../index.html" | 72 --- .../index.html" | 24 - .../index.html" | 37 -- .../glossary/\344\274\252\347\261\273/index.html" | 18 - .../glossary/\345\205\203\347\264\240/index.html" | 22 - .../index.html" | 18 - .../index.html" | 18 - .../glossary/\345\237\237\345\220\215/index.html" | 15 - .../glossary/\345\237\272\347\272\277/index.html" | 24 - .../index.html" | 26 - .../glossary/\345\271\202\347\255\211/index.html" | 49 -- .../glossary/\345\274\202\346\255\245/index.html" | 37 -- .../index.html" | 22 - .../index.html" | 12 - .../index.html" | 25 - .../index.html" | 16 - .../index.html" | 24 - .../index.html" | 24 - "files/zh-cn/glossary/\346\272\220/index.html" | 52 -- .../index.html" | 39 -- .../index.html" | 40 -- .../index.html" | 63 --- .../index.html" | 20 - .../index.html" | 38 -- .../glossary/\347\256\227\346\263\225/index.html" | 37 -- .../index.html" | 27 - .../glossary/\347\274\226\350\257\221/index.html" | 28 - .../index.html" | 16 - .../glossary/\350\257\255\344\271\211/index.html" | 97 ---- .../index.html" | 44 -- .../index.html" | 11 - .../index.html" | 21 - 78 files changed, 2039 insertions(+), 1194 deletions(-) create mode 100644 files/zh-cn/glossary/abstraction/index.html create mode 100644 files/zh-cn/glossary/algorithm/index.html create mode 100644 files/zh-cn/glossary/arpa/index.html create mode 100644 files/zh-cn/glossary/asynchronous/index.html create mode 100644 files/zh-cn/glossary/base64/index.html create mode 100644 files/zh-cn/glossary/baseline/index.html create mode 100644 files/zh-cn/glossary/browser/index.html create mode 100644 files/zh-cn/glossary/card_sorting/index.html create mode 100644 files/zh-cn/glossary/character_encoding/index.html create mode 100644 files/zh-cn/glossary/compile/index.html create mode 100644 files/zh-cn/glossary/compile_time/index.html create mode 100644 files/zh-cn/glossary/cross_axis/index.html create mode 100644 files/zh-cn/glossary/database/index.html create mode 100644 files/zh-cn/glossary/dhtml/index.html create mode 100644 files/zh-cn/glossary/digital_certificate/index.html create mode 100644 files/zh-cn/glossary/domain_name/index.html delete mode 100644 files/zh-cn/glossary/dtd/index.html create mode 100644 files/zh-cn/glossary/element/index.html create mode 100644 files/zh-cn/glossary/empty_element/index.html create mode 100644 files/zh-cn/glossary/forbidden_header_name/index.html create mode 100644 files/zh-cn/glossary/general_header/index.html create mode 100644 files/zh-cn/glossary/graceful_degradation/index.html delete mode 100644 files/zh-cn/glossary/header/index.html create mode 100644 files/zh-cn/glossary/http_header/index.html create mode 100644 files/zh-cn/glossary/idempotent/index.html create mode 100644 files/zh-cn/glossary/iife/index.html create mode 100644 files/zh-cn/glossary/ip_address/index.html delete mode 100644 "files/zh-cn/glossary/ip\345\234\260\345\235\200/index.html" create mode 100644 files/zh-cn/glossary/localization/index.html create mode 100644 files/zh-cn/glossary/main_axis/index.html create mode 100644 files/zh-cn/glossary/oop/index.html create mode 100644 files/zh-cn/glossary/origin/index.html create mode 100644 files/zh-cn/glossary/progressive_enhancement/index.html create mode 100644 files/zh-cn/glossary/proxy_server/index.html create mode 100644 files/zh-cn/glossary/pseudo-class/index.html create mode 100644 files/zh-cn/glossary/request_header/index.html create mode 100644 files/zh-cn/glossary/semantics/index.html create mode 100644 files/zh-cn/glossary/serialization/index.html delete mode 100644 files/zh-cn/glossary/serialize/index.html create mode 100644 files/zh-cn/glossary/simple_header/index.html create mode 100644 files/zh-cn/glossary/sloppy_mode/index.html create mode 100644 files/zh-cn/glossary/speculative_parsing/index.html create mode 100644 files/zh-cn/glossary/time_to_first_byte/index.html create mode 100644 files/zh-cn/glossary/type_conversion/index.html create mode 100644 files/zh-cn/glossary/xhtml/index.html delete mode 100644 "files/zh-cn/glossary/\344\270\273\350\275\264/index.html" delete mode 100644 "files/zh-cn/glossary/\344\272\244\345\217\211\350\275\264/index.html" delete mode 100644 "files/zh-cn/glossary/\344\273\243\347\220\206\346\234\215\345\212\241\345\231\250/index.html" delete mode 100644 "files/zh-cn/glossary/\344\274\230\351\233\205\351\231\215\347\272\247/index.html" delete mode 100644 "files/zh-cn/glossary/\344\274\252\347\261\273/index.html" delete mode 100644 "files/zh-cn/glossary/\345\205\203\347\264\240/index.html" delete mode 100644 "files/zh-cn/glossary/\345\215\241\347\211\207\345\210\206\347\261\273\346\263\225/index.html" delete mode 100644 "files/zh-cn/glossary/\345\234\260\345\235\200\350\267\257\347\224\261\345\217\202\346\225\260\345\237\237/index.html" delete mode 100644 "files/zh-cn/glossary/\345\237\237\345\220\215/index.html" delete mode 100644 "files/zh-cn/glossary/\345\237\272\347\272\277/index.html" delete mode 100644 "files/zh-cn/glossary/\345\255\227\347\254\246\347\274\226\347\240\201/index.html" delete mode 100644 "files/zh-cn/glossary/\345\271\202\347\255\211/index.html" delete mode 100644 "files/zh-cn/glossary/\345\274\202\346\255\245/index.html" delete mode 100644 "files/zh-cn/glossary/\346\212\275\350\261\241\347\274\226\347\250\213/index.html" delete mode 100644 "files/zh-cn/glossary/\346\225\260\345\255\227\350\257\201\344\271\246/index.html" delete mode 100644 "files/zh-cn/glossary/\346\225\260\346\215\256\345\272\223/index.html" delete mode 100644 "files/zh-cn/glossary/\346\255\243\345\270\270\346\250\241\345\274\217/index.html" delete mode 100644 "files/zh-cn/glossary/\346\265\217\350\247\210\345\231\250/index.html" delete mode 100644 "files/zh-cn/glossary/\346\270\220\350\277\233\345\242\236\345\274\272/index.html" delete mode 100644 "files/zh-cn/glossary/\346\272\220/index.html" delete mode 100644 "files/zh-cn/glossary/\347\246\201\346\255\242\344\277\256\346\224\271\347\232\204\346\266\210\346\201\257\351\246\226\351\203\250/index.html" delete mode 100644 "files/zh-cn/glossary/\347\251\272\345\205\203\347\264\240/index.html" delete mode 100644 "files/zh-cn/glossary/\347\253\213\345\215\263\346\211\247\350\241\214\345\207\275\346\225\260\350\241\250\350\276\276\345\274\217/index.html" delete mode 100644 "files/zh-cn/glossary/\347\254\254\344\270\200\345\255\227\350\212\202\346\227\266\351\227\264/index.html" delete mode 100644 "files/zh-cn/glossary/\347\256\200\345\215\225\345\244\264\351\203\250/index.html" delete mode 100644 "files/zh-cn/glossary/\347\256\227\346\263\225/index.html" delete mode 100644 "files/zh-cn/glossary/\347\261\273\345\236\213\350\275\254\346\215\242/index.html" delete mode 100644 "files/zh-cn/glossary/\347\274\226\350\257\221/index.html" delete mode 100644 "files/zh-cn/glossary/\347\274\226\350\257\221\346\227\266\351\227\264/index.html" delete mode 100644 "files/zh-cn/glossary/\350\257\255\344\271\211/index.html" delete mode 100644 "files/zh-cn/glossary/\350\257\267\346\261\202\345\244\264/index.html" delete mode 100644 "files/zh-cn/glossary/\351\200\232\347\224\250\351\246\226\351\203\250/index.html" delete mode 100644 "files/zh-cn/glossary/\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213/index.html" (limited to 'files/zh-cn/glossary') diff --git a/files/zh-cn/glossary/abstraction/index.html b/files/zh-cn/glossary/abstraction/index.html new file mode 100644 index 0000000000..a7497bdc94 --- /dev/null +++ b/files/zh-cn/glossary/abstraction/index.html @@ -0,0 +1,22 @@ +--- +title: 抽象编程 +slug: Glossary/抽象编程 +tags: + - 名词解释 + - 抽象 + - 编程 + - 编程脚本 + - 编程语言 +translation_of: Glossary/Abstraction +--- +

在计算机编程{{Glossary("computer programming")}}领域中,抽象编程指在研发大型复杂软件系统时,通过抽象的方法来降低编程复杂度,实现系统快速高效设计和开发的编程模式。它将系统各功能实现的技术细节隐藏在相对简单的 {{Glossary("API", "APIs")}}之后。

+ +

更多资料

+ +

基础知识

+ + + +

 

diff --git a/files/zh-cn/glossary/algorithm/index.html b/files/zh-cn/glossary/algorithm/index.html new file mode 100644 index 0000000000..8dcea73131 --- /dev/null +++ b/files/zh-cn/glossary/algorithm/index.html @@ -0,0 +1,37 @@ +--- +title: 算法 +slug: Glossary/算法 +tags: + - 专业术语 + - 编程基础 +translation_of: Glossary/Algorithm +--- +

算法是一个良定义的具体计算步骤的一个序列。

+ +

换句话说,一个算法就是由人或机器可重复的解决问题的方法。计算机科学家们使用算法的复杂度(又称O标记法)来表示算法的效率。

+ +

例如:

+ + + +

常用的算法有寻找最优路径算法,例如“旅行推销员问题”、“树的遍历算法”等。

+ +

还有很多机器学习算法例如“线性回归”、“决策树”、“随机森林”、“支持向量机”、“循环神经网络(RNN)”、“长短时记忆(LSTM)神经网络”、“卷积神经网络(CNN)”、“深度卷积神经网络”等。

+ +

更多详情

+ +

通用知识库(维基百科)

+ + + +

技术分析

+ + diff --git a/files/zh-cn/glossary/arpa/index.html b/files/zh-cn/glossary/arpa/index.html new file mode 100644 index 0000000000..8c30be2d15 --- /dev/null +++ b/files/zh-cn/glossary/arpa/index.html @@ -0,0 +1,18 @@ +--- +title: ARPA +slug: Glossary/地址路由参数域 +tags: + - 专业术语 + - 互联网服务基础设施 +translation_of: Glossary/ARPA +--- +

.arpa (address and routing parameter area, 地址路由参数域 ) 是专门用来互联网基础设施配置的顶级域{{glossary("TLD","top-level domain")}} ,尤其是DNS反向解析,即从 {{glossary("IP 地址")}})找出旗下的主机名(i.e., find the {{glossary('domain name')}} 。

+ +

了解更多

+ +

通用知识库

+ + diff --git a/files/zh-cn/glossary/asynchronous/index.html b/files/zh-cn/glossary/asynchronous/index.html new file mode 100644 index 0000000000..0bc0353e3d --- /dev/null +++ b/files/zh-cn/glossary/asynchronous/index.html @@ -0,0 +1,37 @@ +--- +title: 异步 +slug: Glossary/异步 +tags: + - 异步 + - 术语表 +translation_of: Glossary/Asynchronous +--- +

异步两个或两个以上的对象或事件同时存在或发生(或多个相关事物的发生无需等待其前一事物的完成)。在计算机技术中,"异步"一词被用于两大语境。

+ +
+
网络与通信
+
+

异步通信是一种在双方或多方之间交换消息的方式。其中每个参与方各自在他们方便或可操作的情况下接收并处理消息,而不是在收到消息后立即进行处理。 另外,消息的发送无需等待确认信息,前提是如果出现问题,接收方将请求更正或以其他方式处理该情况。

+ +

对人类来说,电子邮件就是一种异步通信方式;发送者发送了一封邮件,接着接收者会在方便时读取和回复该邮件,而不是马上这样做。双方可以继续随时发送和接收信息,而无需双方安排何时进行操作。

+ +

在软件进行异步通信时,一个程序可能会向另一软件(如服务器)请求信息,并在等待回复的同时继续执行其他操作。例如,AJAX(Asynchronous JavaScript and {{Glossary("XML")}})编程技术(现在通常简写为"Ajax",不过现在的应用不常用XML,而是用{{Glossary("JSON")}})就是这样一种机制,它通过HTTP从服务器请求较少的数据,当结果可被返回时才返回结果,而不是立即返回。

+
+
软件设计
+
+

异步软件设计通过构建代码扩展了异步的概念,按照这种设计编写的代码使得程序能够要求一个任务与先前的一个(或多个)任务一起执行,而无需为了等待它们完成而停止执行。 当后来的任务完成时,程序将使用约定好的机制通知先前的任务,以便让它知道任务已经完成,以及如果有结果存在的话,这个结果是可用的。

+ +

还有许多用来实现异步软件的编程技术。查看文章Asynchronous JavaScript来了解它们吧。

+
+
+ +

了解更多

+ +

技术参考

+ + + +

{{IncludeSubnav("/en-US/docs/Glossary")}}

diff --git a/files/zh-cn/glossary/base64/index.html b/files/zh-cn/glossary/base64/index.html new file mode 100644 index 0000000000..5da5d1e0f4 --- /dev/null +++ b/files/zh-cn/glossary/base64/index.html @@ -0,0 +1,605 @@ +--- +title: Base64的编码与解码 +slug: Web/API/WindowBase64/Base64_encoding_and_decoding +translation_of: Glossary/Base64 +--- +

Base64 是一组相似的二进制到文本(binary-to-text)的编码规则,使得二进制数据在解释成 radix-64 的表现形式后能够用 ASCII 字符串的格式表示出来。Base64 这个词出自一种 MIME 数据传输编码。 

+ +

Base64编码普遍应用于需要通过被设计为处理文本数据的媒介上储存和传输二进制数据而需要编码该二进制数据的场景。这样是为了保证数据的完整并且不用在传输过程中修改这些数据。Base64 也被一些应用(包括使用 MIME 的电子邮件)和在 XML 中储存复杂数据时使用。 

+ +

在 JavaScript 中,有两个函数被分别用来处理解码和编码 base64 字符串:

+ + + +

atob() 函数能够解码通过base-64编码的字符串数据。相反地,btoa() 函数能够从二进制数据“字符串”创建一个base-64编码的ASCII字符串。

+ +

atob() 和 btoa() 均使用字符串。如果你想使用 ArrayBuffers,请参阅后文。

+ +

编码尺寸增加

+ +

每一个Base64字符实际上代表着6比特位。因此,3字节(一字节是8比特,3字节也就是24比特)的字符串/二进制文件可以转换成4个Base64字符(4x6 = 24比特)。

+ +

这意味着Base64格式的字符串或文件的尺寸约是原始尺寸的133%(增加了大约33%)。如果编码的数据很少,增加的比例可能会更高。例如:字符串"a"length === 1进行Base64编码后是"YQ=="length === 4,尺寸增加了300%。

+ + + + + + + + + + +
+

文档

+ +
+
data URIs
+
data URIs, 定义于 RFC 2397,用于在文档内嵌入小的文件。
+
Base64
+
维基百科上关于 Base64 的文章。
+
{{domxref("WindowBase64.atob","atob()")}}
+
解码一个Base64字符串。
+
{{domxref("WindowBase64.btoa","btoa()")}}
+
从一个字符串或者二进制数据编码一个Base64字符串。
+
"Unicode 问题"
+
在大多数浏览器里里,在一个Unicode字符串上调用btoa()会造成一个Character Out Of Range异常。这一段写了一些解决方案。
+
URIScheme
+
Mozilla支持的URI schemes列表。
+
StringView
+
这篇文章发布了一个我们做的库,目的在于: +
    +
  • 为字符串创建一个类C接口 (i.e. array of characters codes — ArrayBufferView in JavaScript) ,基于JavaScript ArrayBuffer 接口。
  • +
  • 为类字符串对象(目前为止为: stringViews) 创建一系列方法,它们严格按照数字数组工作,而不是不可变的字符串。
  • +
  • 可用于其它Unicode编码,和默认的 DOMStrings不同。
  • +
+
+
+ +

查看所有...

+
+

工具

+ + + +

View All...

+ + + + +
+ +

Unicode 问题

+ +

由于 DOMString 是16位编码的字符串,所以如果有字符超出了8位ASCII编码的字符范围时,在大多数的浏览器中对Unicode字符串调用 window.btoa 将会造成一个 Character Out Of Range 的异常。有很多种方法可以解决这个问题:

+ + + +

Solution #1 – JavaScript's UTF-16 => base64

+ +

A very fast and widely useable way to solve the unicode problem is by encoding JavaScript native UTF-16 strings directly into base64. Please visit the URL data:text/plain;charset=utf-16;base64,OCY5JjomOyY8Jj4mPyY= for a demonstration (copy the data uri, open a new tab, paste the data URI into the address bar, then press enter to go to the page). This method is particularly efficient because it does not require any type of conversion, except mapping a string into an array. The following code is also useful to get an ArrayBuffer from a Base64 string and/or viceversa (see below).

+ +
"use strict";
+
+/*\
+|*|
+|*|  Base64 / binary data / UTF-8 strings utilities (#1)
+|*|
+|*|  https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
+|*|
+|*|  Author: madmurphy
+|*|
+\*/
+
+/* Array of bytes to base64 string decoding */
+
+function b64ToUint6 (nChr) {
+
+  return nChr > 64 && nChr < 91 ?
+      nChr - 65
+    : nChr > 96 && nChr < 123 ?
+      nChr - 71
+    : nChr > 47 && nChr < 58 ?
+      nChr + 4
+    : nChr === 43 ?
+      62
+    : nChr === 47 ?
+      63
+    :
+      0;
+
+}
+
+function base64DecToArr (sBase64, nBlockSize) {
+
+  var
+    sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
+    nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2, aBytes = new Uint8Array(nOutLen);
+
+  for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
+    nMod4 = nInIdx & 3;
+    nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
+    if (nMod4 === 3 || nInLen - nInIdx === 1) {
+      for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
+        aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
+      }
+      nUint24 = 0;
+    }
+  }
+
+  return aBytes;
+}
+
+/* Base64 string to array encoding */
+
+function uint6ToB64 (nUint6) {
+
+  return nUint6 < 26 ?
+      nUint6 + 65
+    : nUint6 < 52 ?
+      nUint6 + 71
+    : nUint6 < 62 ?
+      nUint6 - 4
+    : nUint6 === 62 ?
+      43
+    : nUint6 === 63 ?
+      47
+    :
+      65;
+
+}
+
+function base64EncArr (aBytes) {
+
+  var eqLen = (3 - (aBytes.length % 3)) % 3, sB64Enc = "";
+
+  for (var nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {
+    nMod3 = nIdx % 3;
+    /* Uncomment the following line in order to split the output in lines 76-character long: */
+    /*
+    if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += "\r\n"; }
+    */
+    nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);
+    if (nMod3 === 2 || aBytes.length - nIdx === 1) {
+      sB64Enc += String.fromCharCode(uint6ToB64(nUint24 >>> 18 & 63), uint6ToB64(nUint24 >>> 12 & 63), uint6ToB64(nUint24 >>> 6 & 63), uint6ToB64(nUint24 & 63));
+      nUint24 = 0;
+    }
+  }
+
+  return  eqLen === 0 ?
+      sB64Enc
+    :
+      sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? "=" : "==");
+
+}
+
+ +

Tests

+ +
var myString = "☸☹☺☻☼☾☿";
+
+/* Part 1: Encode `myString` to base64 using native UTF-16 */
+
+var aUTF16CodeUnits = new Uint16Array(myString.length);
+Array.prototype.forEach.call(aUTF16CodeUnits, function (el, idx, arr) { arr[idx] = myString.charCodeAt(idx); });
+var sUTF16Base64 = base64EncArr(new Uint8Array(aUTF16CodeUnits.buffer));
+
+/* Show output */
+
+alert(sUTF16Base64); // "OCY5JjomOyY8Jj4mPyY="
+
+/* Part 2: Decode `sUTF16Base64` to UTF-16 */
+
+var sDecodedString = String.fromCharCode.apply(null, new Uint16Array(base64DecToArr(sUTF16Base64, 2).buffer));
+
+/* Show output */
+
+alert(sDecodedString); // "☸☹☺☻☼☾☿"
+ +

The produced string is fully portable, although represented as UTF-16. If you prefer UTF-8, see the next solution.

+ +

Appendix to Solution #1: Decode a Base64 string to Uint8Array or ArrayBuffer

+ +

The functions above let us also create uint8Arrays or arrayBuffers from base64-encoded strings:

+ +
var myArray = base64DecToArr("QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw=="); // "Base 64 \u2014 Mozilla Developer Network" (as UTF-8)
+
+var myBuffer = base64DecToArr("QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw==").buffer; // "Base 64 \u2014 Mozilla Developer Network" (as UTF-8)
+
+alert(myBuffer.byteLength);
+ +
Note: The function base64DecToArr(sBase64[, nBlockSize]) returns an uint8Array of bytes. If your aim is to build a buffer of 16-bit / 32-bit / 64-bit raw data, use the nBlockSize argument, which is the number of bytes which the uint8Array.buffer.bytesLength property must result to be a multiple of (1 or omitted for ASCII, binary content, binary strings, UTF-8-encoded strings; 2 for UTF-16 strings; 4 for UTF-32 strings).
+ +

For a more complete library, see StringView – a C-like representation of strings based on typed arrays (source code available on GitHub).

+ +

Solution #2 – JavaScript's UTF-16 => UTF-8 => base64

+ +

This solution consists in converting a JavaScript's native UTF-16 string into a UTF-8 string and then encoding the latter into base64. This also grants that converting a pure ASCII string to base64 always produces the same output as the native btoa().

+ +
"use strict";
+
+/*\
+|*|
+|*|  Base64 / binary data / UTF-8 strings utilities (#2)
+|*|
+|*|  https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
+|*|
+|*|  Author: madmurphy
+|*|
+\*/
+
+/* Array of bytes to base64 string decoding */
+
+function b64ToUint6 (nChr) {
+
+  return nChr > 64 && nChr < 91 ?
+      nChr - 65
+    : nChr > 96 && nChr < 123 ?
+      nChr - 71
+    : nChr > 47 && nChr < 58 ?
+      nChr + 4
+    : nChr === 43 ?
+      62
+    : nChr === 47 ?
+      63
+    :
+      0;
+
+}
+
+function base64DecToArr (sBase64, nBlockSize) {
+
+  var
+    sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
+    nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2, aBytes = new Uint8Array(nOutLen);
+
+  for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
+    nMod4 = nInIdx & 3;
+    nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
+    if (nMod4 === 3 || nInLen - nInIdx === 1) {
+      for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
+        aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
+      }
+      nUint24 = 0;
+    }
+  }
+
+  return aBytes;
+}
+
+/* Base64 string to array encoding */
+
+function uint6ToB64 (nUint6) {
+
+  return nUint6 < 26 ?
+      nUint6 + 65
+    : nUint6 < 52 ?
+      nUint6 + 71
+    : nUint6 < 62 ?
+      nUint6 - 4
+    : nUint6 === 62 ?
+      43
+    : nUint6 === 63 ?
+      47
+    :
+      65;
+
+}
+
+function base64EncArr (aBytes) {
+
+  var eqLen = (3 - (aBytes.length % 3)) % 3, sB64Enc = "";
+
+  for (var nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {
+    nMod3 = nIdx % 3;
+    /* Uncomment the following line in order to split the output in lines 76-character long: */
+    /*
+    if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += "\r\n"; }
+    */
+    nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);
+    if (nMod3 === 2 || aBytes.length - nIdx === 1) {
+      sB64Enc += String.fromCharCode(uint6ToB64(nUint24 >>> 18 & 63), uint6ToB64(nUint24 >>> 12 & 63), uint6ToB64(nUint24 >>> 6 & 63), uint6ToB64(nUint24 & 63));
+      nUint24 = 0;
+    }
+  }
+
+  return  eqLen === 0 ?
+      sB64Enc
+    :
+      sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? "=" : "==");
+
+}
+
+/* UTF-8 array to DOMString and vice versa */
+
+function UTF8ArrToStr (aBytes) {
+
+  var sView = "";
+
+  for (var nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {
+    nPart = aBytes[nIdx];
+    sView += String.fromCharCode(
+      nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */
+        /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */
+        (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128
+      : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */
+        (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128
+      : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */
+        (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128
+      : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */
+        (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128
+      : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */
+        (nPart - 192 << 6) + aBytes[++nIdx] - 128
+      : /* nPart < 127 ? */ /* one byte */
+        nPart
+    );
+  }
+
+  return sView;
+
+}
+
+function strToUTF8Arr (sDOMStr) {
+
+  var aBytes, nChr, nStrLen = sDOMStr.length, nArrLen = 0;
+
+  /* mapping... */
+
+  for (var nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {
+    nChr = sDOMStr.charCodeAt(nMapIdx);
+    nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;
+  }
+
+  aBytes = new Uint8Array(nArrLen);
+
+  /* transcription... */
+
+  for (var nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {
+    nChr = sDOMStr.charCodeAt(nChrIdx);
+    if (nChr < 128) {
+      /* one byte */
+      aBytes[nIdx++] = nChr;
+    } else if (nChr < 0x800) {
+      /* two bytes */
+      aBytes[nIdx++] = 192 + (nChr >>> 6);
+      aBytes[nIdx++] = 128 + (nChr & 63);
+    } else if (nChr < 0x10000) {
+      /* three bytes */
+      aBytes[nIdx++] = 224 + (nChr >>> 12);
+      aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);
+      aBytes[nIdx++] = 128 + (nChr & 63);
+    } else if (nChr < 0x200000) {
+      /* four bytes */
+      aBytes[nIdx++] = 240 + (nChr >>> 18);
+      aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);
+      aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);
+      aBytes[nIdx++] = 128 + (nChr & 63);
+    } else if (nChr < 0x4000000) {
+      /* five bytes */
+      aBytes[nIdx++] = 248 + (nChr >>> 24);
+      aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);
+      aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);
+      aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);
+      aBytes[nIdx++] = 128 + (nChr & 63);
+    } else /* if (nChr <= 0x7fffffff) */ {
+      /* six bytes */
+      aBytes[nIdx++] = 252 + (nChr >>> 30);
+      aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);
+      aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);
+      aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);
+      aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);
+      aBytes[nIdx++] = 128 + (nChr & 63);
+    }
+  }
+
+  return aBytes;
+
+}
+ +

Tests

+ +
/* Tests */
+
+var sMyInput = "Base 64 \u2014 Mozilla Developer Network";
+
+var aMyUTF8Input = strToUTF8Arr(sMyInput);
+
+var sMyBase64 = base64EncArr(aMyUTF8Input);
+
+alert(sMyBase64); // "QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw=="
+
+var aMyUTF8Output = base64DecToArr(sMyBase64);
+
+var sMyOutput = UTF8ArrToStr(aMyUTF8Output);
+
+alert(sMyOutput); // "Base 64 — Mozilla Developer Network"
+ +

Solution #3 – JavaScript's UTF-16 => binary string => base64

+ +

The following is the fastest and most compact possible approach. The output is exactly the same produced by Solution #1 (UTF-16 encoded strings), but instead of rewriting {{domxref("WindowBase64.atob","atob()")}} and {{domxref("WindowBase64.btoa","btoa()")}} it uses the native ones. This is made possible by the fact that instead of using typed arrays as encoding/decoding inputs this solution uses binary strings as an intermediate format. It is a “dirty” workaround in comparison to Solution #1 (binary strings are a grey area), however it works pretty well and requires only a few lines of code.

+ +
"use strict";
+
+/*\
+|*|
+|*|  Base64 / binary data / UTF-8 strings utilities (#3)
+|*|
+|*|  https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
+|*|
+|*|  Author: madmurphy
+|*|
+\*/
+
+function btoaUTF16 (sString) {
+
+	var aUTF16CodeUnits = new Uint16Array(sString.length);
+	Array.prototype.forEach.call(aUTF16CodeUnits, function (el, idx, arr) { arr[idx] = sString.charCodeAt(idx); });
+	return btoa(String.fromCharCode.apply(null, new Uint8Array(aUTF16CodeUnits.buffer)));
+
+}
+
+function atobUTF16 (sBase64) {
+
+	var sBinaryString = atob(sBase64), aBinaryView = new Uint8Array(sBinaryString.length);
+	Array.prototype.forEach.call(aBinaryView, function (el, idx, arr) { arr[idx] = sBinaryString.charCodeAt(idx); });
+	return String.fromCharCode.apply(null, new Uint16Array(aBinaryView.buffer));
+
+}
+ +

Tests

+ +
var myString = "☸☹☺☻☼☾☿";
+
+/* Part 1: Encode `myString` to base64 using native UTF-16 */
+
+var sUTF16Base64 = btoaUTF16(myString);
+
+/* Show output */
+
+alert(sUTF16Base64); // "OCY5JjomOyY8Jj4mPyY="
+
+/* Part 2: Decode `sUTF16Base64` to UTF-16 */
+
+var sDecodedString = atobUTF16(sUTF16Base64);
+
+/* Show output */
+
+alert(sDecodedString); // "☸☹☺☻☼☾☿"
+
+ +

For a cleaner solution that uses typed arrays instead of binary strings, see solutions #1 and #2.

+ +

Solution #4 – escaping the string before encoding it

+ +
function b64EncodeUnicode(str) {
+    // first we use encodeURIComponent to get percent-encoded UTF-8,
+    // then we convert the percent encodings into raw bytes which
+    // can be fed into btoa.
+    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
+        function toSolidBytes(match, p1) {
+            return String.fromCharCode('0x' + p1);
+    }));
+}
+
+b64EncodeUnicode('✓ à la mode'); // "4pyTIMOgIGxhIG1vZGU="
+b64EncodeUnicode('\n'); // "Cg=="
+
+ +

To decode the Base64-encoded value back into a String:

+ +
function b64DecodeUnicode(str) {
+    // Going backwards: from bytestream, to percent-encoding, to original string.
+    return decodeURIComponent(atob(str).split('').map(function(c) {
+        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
+    }).join(''));
+}
+
+b64DecodeUnicode('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
+b64DecodeUnicode('Cg=='); // "\n"
+
+ +

Unibabel implements common conversions using this strategy.

+ +

Solution #5 – rewrite the DOMs atob() and btoa() using JavaScript's TypedArrays and UTF-8

+ +

Use a TextEncoder polyfill such as TextEncoding (also includes legacy windows, mac, and ISO encodings), TextEncoderLite, combined with a Buffer and a Base64 implementation such as base64-js or TypeScript version of base64-js for both modern browsers and Node.js.

+ +

When a native TextEncoder implementation is not available, the most light-weight solution would be to use Solution #3 because in addition to being much faster, Solution #3 also works in IE9 "out of the box." Alternatively, use TextEncoderLite with base64-js. Use the browser implementation when you can.

+ +

The following function implements such a strategy. It assumes base64-js imported as <script type="text/javascript" src="base64js.min.js"/>. Note that TextEncoderLite only works with UTF-8.

+ +
function Base64Encode(str, encoding = 'utf-8') {
+    var bytes = new (typeof TextEncoder === "undefined" ? TextEncoderLite : TextEncoder)(encoding).encode(str);
+    return base64js.fromByteArray(bytes);
+}
+
+function Base64Decode(str, encoding = 'utf-8') {
+    var bytes = base64js.toByteArray(str);
+    return new (typeof TextDecoder === "undefined" ? TextDecoderLite : TextDecoder)(encoding).decode(bytes);
+}
+
+ +

注意: TextEncoderLite 不能正确处理四字节 UTF-8 字符, 比如 '\uD842\uDFB7' 或缩写为  '\u{20BB7}' 。参见 issue
+ 可使用 text-encoding 作为替代。

+ +

某些场景下,以上经由 UTF-8 转换到 Base64 的实现在空间利用上不一定高效。当处理包含大量 U+0800-U+FFFF 区域间字符的文本时, UTF-8 输出结果长于 UTF-16 的,因为这些字符在 UTF-8 下占用三个字节而 UTF-16 是两个。在处理均匀分布 UTF-16 码点的 JavaScript 字符串时应考虑采用 UTF-16 替代 UTF-8 作为 Base64 结果的中间编码格式,这将减少 40% 尺寸。

+ +
+

译者注:下为陈旧翻译片段

+
+ + + +

方案 #1 – 编码之前转义(escape)字符串

+ +
function b64EncodeUnicode(str) {
+    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
+        return String.fromCharCode('0x' + p1);
+    }));
+}
+
+b64EncodeUnicode('✓ à la mode'); // "4pyTIMOgIGxhIG1vZGU="
+
+ +

把base64转换回字符串

+ +
function b64DecodeUnicode(str) {
+    return decodeURIComponent(atob(str).split('').map(function(c) {
+        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
+    }).join(''));
+}
+
+b64DecodeUnicode('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
+b64DecodeUnicode('Cg=='); // "\n"
+ +

Unibabel 是一个包含了一些使用这种策略的通用转换的库。

+ +

方案 #6 – 用JavaScript的 TypedArray 和 UTF-8重写DOM的 atob() 和 btoa()

+ +

使用像TextEncoding(包含了早期(legacy)的windows,mac, 和 ISO 编码),TextEncoderLite 或者 Buffer 这样的文本编码器增强(polyfill)和Base64增强,比如base64-jsTypeScript 版本的  base64-js (适用于长青浏览器和 Node.js)。

+ +

最简单,最轻量级的解决方法就是使用 TextEncoderLite 和 base64-js.

+ +

想要更完整的库的话,参见 StringView – a C-like representation of strings based on typed arrays.

+ +

参见

+ + diff --git a/files/zh-cn/glossary/baseline/index.html b/files/zh-cn/glossary/baseline/index.html new file mode 100644 index 0000000000..2158190685 --- /dev/null +++ b/files/zh-cn/glossary/baseline/index.html @@ -0,0 +1,24 @@ +--- +title: 基线 +slug: Glossary/基线 +translation_of: Glossary/baseline +--- +

基线是指欧洲和西亚文字排版中,用于在上面放置字符的一条假象的基准线。

+ +

字符的降部比如 g 和 p 会向下超出基线, 带弧形的会向上和向下扩展的字形( {{Glossary("glyph", "Glyphs")}} ),比如 C 或 3 会略微向下超出基线。

+ +

东亚文字没有基线,他们的字形放置在方盒子,没有升部和降部。

+ +

学习更多

+ +

基本知识

+ + + +

技术参考

+ + diff --git a/files/zh-cn/glossary/browser/index.html b/files/zh-cn/glossary/browser/index.html new file mode 100644 index 0000000000..a52951c1b7 --- /dev/null +++ b/files/zh-cn/glossary/browser/index.html @@ -0,0 +1,24 @@ +--- +title: 浏览器 +slug: Glossary/浏览器 +translation_of: Glossary/Browser +--- +

网页浏览器是一种从 {{Glossary("World Wide Web","Web")}} 获取和显示页面的程序,并且让用户通过 {{Glossary("hyperlink","超链接")}} 访问更多页面。

+ +

获悉更多

+ +

基础知识

+ + + +

下载一个浏览器

+ + diff --git a/files/zh-cn/glossary/card_sorting/index.html b/files/zh-cn/glossary/card_sorting/index.html new file mode 100644 index 0000000000..9d5a3c4ff5 --- /dev/null +++ b/files/zh-cn/glossary/card_sorting/index.html @@ -0,0 +1,18 @@ +--- +title: 卡片分类法 +slug: Glossary/卡片分类法 +tags: + - 卡片分类法 + - 名称 + - 设计 +translation_of: Glossary/Card_sorting +--- +

卡片分类法是一种简单的技巧 ,{{glossary("Information architecture")}} 通常是邀请参与网站开发的设计师(或是开发其他类型产品的人),让他们写下他们认为这个产品应当包含的内容、服务和功能,然后将这些功能分组。一个很好的例子是考虑网站上每个页面应当显示什么样的内容。这个名字源于这个分类是通过把要分类的项目写在卡片上,再通过排列卡片完成的。

+ +

了解更多

+ +

常识

+ + diff --git a/files/zh-cn/glossary/character_encoding/index.html b/files/zh-cn/glossary/character_encoding/index.html new file mode 100644 index 0000000000..40dbc7ca8a --- /dev/null +++ b/files/zh-cn/glossary/character_encoding/index.html @@ -0,0 +1,26 @@ +--- +title: Character encoding(字符编码) +slug: Glossary/字符编码 +tags: + - 术语 + - 术语表 +translation_of: Glossary/character_encoding +--- +

一套编码系统定义字节与文本间的映射。一连串字节文本能让不同文本解释得以进行。我们指明一套特定编码系统时(如 UTF-8),也就指明了字节得以解释的方式。

+ +

例如,我们通常在 HTML 里声明 UTF-8 字符编码,使用如下:

+ +
+
<meta charset="utf-8">
+ +

这就确保你在 HTML 文档中可以使用几乎任何一种人类语言中的字符,并且会稳定显示。

+
+ +

 了解更多

+ +

常识

+ + diff --git a/files/zh-cn/glossary/compile/index.html b/files/zh-cn/glossary/compile/index.html new file mode 100644 index 0000000000..0e11863653 --- /dev/null +++ b/files/zh-cn/glossary/compile/index.html @@ -0,0 +1,28 @@ +--- +title: 编译 +slug: Glossary/编译 +translation_of: Glossary/Compile +--- +

编译是将相同的程序从一种计算机程序语言转换到另一种语言计算机语言的过程。编译器是运行上述任务的软件。有时候,任务也被称为“汇编”或“构建”,这通常表示不仅仅编译完成,例如,用二进制格式进行打包。

+ +

通常,编译器转换一个人类理解的高级语言例如c或者java到机器语言,例如cpu理解的汇编语言。一些编译器转化同级别语言的被称为转换器或者交叉编译器,例如从TypeScript到jiavascript的编译。这些通常被理解为效率工具。

+ +

绝大多数编译器以预先编译(AOT)或实时编译(JIT)形式工作。作为一个开发者,你通常使用命令行或者集成开发环境(IDE)调用预先编译(AOT)的编译器。最出名的就是gcc编译器了。

+ +

实时编译器通常是用来提高性能的,令你没有感知的。例如在浏览器中,Firefox的SpiderMonkey的JavaScript引擎又一个内置的实时编译器会在你浏览时将网页中的JavaScript代码编译为机器码,从而提供运行效率。类似WebAssembly的项目正在使这些工作做的更好。

+ +

了解更多

+ +

基础知识

+ + + +

学习资料

+ + diff --git a/files/zh-cn/glossary/compile_time/index.html b/files/zh-cn/glossary/compile_time/index.html new file mode 100644 index 0000000000..8c94f6fa5f --- /dev/null +++ b/files/zh-cn/glossary/compile_time/index.html @@ -0,0 +1,16 @@ +--- +title: 编译时间 +slug: Glossary/编译时间 +translation_of: Glossary/Compile_time +--- +

编译时间是指程序从被加载到程序被解析完成所用的时间。

+ +

学习更多

+ +

基础知识

+ + + +

 

diff --git a/files/zh-cn/glossary/cross_axis/index.html b/files/zh-cn/glossary/cross_axis/index.html new file mode 100644 index 0000000000..27412c4d85 --- /dev/null +++ b/files/zh-cn/glossary/cross_axis/index.html @@ -0,0 +1,72 @@ +--- +title: 交叉轴 +slug: Glossary/交叉轴 +translation_of: Glossary/Cross_Axis +--- +

弹性容器 {{glossary("flexbox")}} 的交叉轴和主轴 {{glossary("main axis")}} 垂直,因此如果弹性方向是 {{cssxref("flex-direction")}} 行 row 或者反向行 row-reverse ,那么交叉轴就是从上至下地垂直走向的。

+ +

The cross axis runs down the column

+ +

如果你的主轴是列 column 或者反向列 column-reverse ,那么交叉轴就是水平走向的。

+ +

The cross axis runs along the row.

+ +

要在交叉轴上对齐,是通过弹性容器的 align-items 属性来控制的,或者通过弹性元素的 align-self 属性来单独决定的对齐方式。在多行弹性容器中,交叉轴上有多余控件的话,你还可以用 align-content 来控制行的间距。

+ +

学习更多

+ +

属性参考

+ +
+ +
+ +

拓展阅读

+ + + + + +
+
+
diff --git a/files/zh-cn/glossary/database/index.html b/files/zh-cn/glossary/database/index.html new file mode 100644 index 0000000000..d26907d711 --- /dev/null +++ b/files/zh-cn/glossary/database/index.html @@ -0,0 +1,25 @@ +--- +title: 数据库 +slug: Glossary/数据库 +tags: + - 数据库 +translation_of: Glossary/Database +--- +

数据库是一种用于收集已组织好的数据以便于搜索、结构化和扩充的存储系统。

+ +

网站开发中, 大多数数据库采用关系型数据库管理系统 (RDBMS) 来组织数据, 通过 {{glossary("SQL")}}语言来编程。 但有些数据库没有遵循上述的组织数据的机制,这类被称作 NoSQL 数据库。

+ +

被广泛使用的服务端关系型数据库有 MySQL (或者源于它的 MariaDB ), SQL Server, 和 Oracle Database 等。另一边,出名的 NoSQL 数据库有 MongoDBCassandraRedis等。

+ +

浏览器也有他们特有的数据库系统,被称作 {{glossary("IndexedDB")}}。

+ + diff --git a/files/zh-cn/glossary/dhtml/index.html b/files/zh-cn/glossary/dhtml/index.html new file mode 100644 index 0000000000..c04ab59714 --- /dev/null +++ b/files/zh-cn/glossary/dhtml/index.html @@ -0,0 +1,143 @@ +--- +title: DHTML +slug: DHTML +translation_of: Glossary/DHTML +--- +

1、DHTML 对象 !DOCTYPE 指定了 HTML 文档遵循的文档类型定义(DTD)。

+

a 标明超链接的起始或目的位置。

+

acronym 标明缩写词。

+

address 特定信息,如地址、签名、作者、此文档的原创者。

+

applet 在页面上放置可执行内容。

+

area 定义一个客户端图像映射中一个超级链接区域的形状、坐标和关联 URL。

+

attribute 以对象的形式代表了 HTML 元素的标签属性或属性。

+

b 指定文本应以粗体渲染。

+

base 指定一个显示 URL 用于解析对于外部源的链接和引用,如图像和样式表。

+

baseFont 设置渲染文本时作为缺省字体的基础字体值。

+

bdo 允许作者为选定文本片断禁用双向法则。

+

bgSound 允许页面带有背景声音或创建音轨。

+

big 指定内含文本要以比当前字体稍大的字体显示。

+

blockQuote 设置文本中的一段引语。

+

body 指定文档主体的开始和结束。

+

br 插入一个换行符。

+

button 指定其中所含的 HTML 要被渲染为一个按钮。

+

caption 指定表格的简要描述。

+

center 将后面的文本和图像居中显示。

+

cite 用斜体显示标明引言。

+

clientInformation 包含关于 Web 浏览器的信息。

+

clipboardData 提供了对于预定义的剪贴板格式的访问,以便在编辑操作中使用。

+

code 指定代码范例。

+

col 指定基于列的表格缺省属性。

+

colGroup 指定表格中一列或一组列的缺省属性。

+

comment 标明不可见的注释。

+

currentStyle 代表了在全局样式表、内嵌样式和 HTML 标签属性中指定的对象格式和样式。

+

custom 代表了一个用户自定义元素。

+

dataTransfer 提供了对于预定义的剪贴板格式的访问,以便在拖曳操作中使用。

+

dd 在定义列表中表明定义。定义通常在定义列表中缩进。

+

defaults 编程设定元素行为的缺省属性。

+

del 表明文本已经从文档中删除。

+

dfn 表明术语的定义实例。

+

对话框帮助协助程序 提供对颜色对话框及块格式化和字体集合的访问。

+

dir 引起目录列表。

+

div 指定渲染 HTML 的容器。

+

dl 引起定义列表。

+

document 代表给定浏览器窗口中的 HTML 文档。

+

dt 在定义列表中表明定义术语。

+

em 强调文本,通常以斜体渲染。

+

embed 允许嵌入任何文档。

+

event 代表事件状态,如事件发生的元素,键盘状态,鼠标位置和鼠标按钮状态。

+

external 允许访问由 Microsoft? Internet Explorer 浏览器组件宿主应用程序提供的附加对象模型。

+

fieldSet 在字段集包含的文本和其它元素外面绘制一个方框。

+

font 指定用于渲染所包含文本的新字体、大小和颜色。

+

form 指定所包含控件在表单中起作用。

+

frame 在 FRAMESET 元素内指定单个框架。

+

frameSet 指定一个框架集,用于组织多个框架和嵌套框架集。

+

head 提供了关于文档的无序信息集合。

+

history 包含了用户已浏览的 URL 的信息。

+

hn 以标题样式渲染文本。

+

hr 绘制水平线。

+

html 表明文档包含 HTML 元素。

+

HTML 注释 避免任何内含文本或 HTML 源代码被处理并在浏览器窗口中显示。

+

i 指定文本应以斜体渲染,若可用的话。

+

iframe 创建内嵌浮动框架。

+

img 在文档中嵌入图像或视频剪辑。

+

implementation 包含了关于对象支持的模块信息。

+

IMPORT 从元素行为中导入标签定义。

+

input 创建各种表单输入控件。

+

input type=button 创建按钮控件。

+

input type=checkbox 创建复选框控件。

+

input type=file 创建文件上载控件,该控件带有一个文本框和一个浏览按钮。

+

input type=hidden 传输关于客户/服务器交互的状态信息。

+

input type=image 创建一个图像控件,该控件单击后将导致表单立即被提交。

+

input type=password 创建与 INPUT type=text 控件类似的单行文本输入控件,不过其中并不显示用户输入的内容。

+

input type=radio 创建单选钮控件。

+

input type=reset 创建一个按钮,该按钮单击后将重置表单控件为其缺省值。

+

input type=submit 创建一个按钮,该按钮单击后将提交表单。 input type=text 创建一个单行的文本输入控件。

+

ins 指定被插入到文档中的文本。

+

isIndex 使浏览器显示一个对话框,提示用户输入单行文本。

+

kbd 以固定宽度字体渲染文本。

+

label 为页面上的其它元素指定标签。

+

legend 在 fieldSet 对象绘制的方框内插入一个标题。

+

li 引起列表中的一个项目。

+

link 允许当前文档和外部文档之间建立连接。

+

listing 以固定字体渲染文本。

+

location 包含关于当前 URL 的信息。

+

map 包含客户端图像映射的坐标数据。

+

marquee 创建一个滚动的文本字幕。

+

menu 创建一个项目的无序列表。

+

meta 向服务器和客户端传达关于文档的隐藏信息。

+

namespace 向文档中动态导入一个元素行为。

+

navigator 包含关于 Web 浏览器的信息。

+

nextID 创建编辑软件可以读取的唯一标识符。

+

noBR 不换行渲染文本。 noFrames 包含对于那些不支持 FRAMESET 元素的浏览器使用的 HTML。

+

noScript 指定要在不支持脚本的浏览器显示的 HTML。

+

object 向 HTML 页面中插入对象。

+

ol 绘制文本的编号列表。

+

optGroup 允许作者对 select 元素中的选项进行逻辑分组。

+

option 引起 SELECT 元素中的一个选项。

+

p 引起一段。

+

page 代表 styleSheet 中的一条 @page 规则。

+

param 设置 APPLET、EMBED 或 OBJECT 元素的属性初始值。

+

plainText 以固定宽度字体渲染文本,不处理标签。

+

popup 一种特殊的顶层窗口,主要用于出现在应用程序主窗口之外的对话框、消息框和其它临时窗 口。

+

pre 以固定宽度字体渲染文本。

+

q 分离文本中的引语。

+

rt 指明 RUBY 元素的注音文本。

+

ruby 指明要放置在文本串之上或内嵌的注解或发音指南。

+

rule 代表了层叠样式表(CSS)中由选择符和一个或多个声明组成的的样式。

+

runtimeStyle 代表了居于全局样式表、内嵌样式和 HTML 标签属性指定的格式和样式之上的对象的格式和样式。

+

s 以删除线字体渲染文本。

+

samp 指定代码范例。

+

screen 包含关于客户屏幕和渲染能力的信息。

+

script 为脚本指定由脚本引擎解释的脚本。

+

select 引起列表框或下拉框。

+

selection 代表了当前激活选中区,即高亮文本块,和/或文档中用户可执行某些操作的其它元素。

+

small 指定内含文本要以比当前字体稍小的字体显示。

+

span 指定内嵌文本容器。

+

strike 以删除线字体渲染文本。

+

strong 以粗体渲染文本。

+

style 代表了给定元素所有可能的内嵌样式的当前设置。

+

style 指定页面的样式表。

+

styleSheet 代表了文档中单一的样式表。

+

sub 指定内含文本要以下标的形式显示,通常比当前字体稍小。

+

sup 指定内含文本要以上标的形式显示,通常比当前字体稍小。

+

table 指定所含内容要组织成行列的表格。

+

tBody 指明行作为表格主体。

+

td 指定表格中的单元格。

+

textArea 指定多行文本输入控件。

+

TextNode 将文本字符串代表为文档层次中的结点。

+

TextRange 代表 HTML 元素中的文本。

+

TextRectangle 指定包含元素或 TextRange 对象中一行文本的矩形。

+

tFoot 指明行作为表尾。

+

th 指定标题列。标题列将在单元格中居中并以粗体显示。

+

tHead 指明行作为表头。

+

title 包含文档的标题。

+

tr 指定表格中的一行。

+

tt 以固定宽度字体渲染文本。

+

u 带下划线渲染文本。

+

ul 绘制文本的项目符号列表。

+

userProfile 提供了允许脚本对用户配置信息请求读取访问并执行读取操作的方法。

+

var 定义编程变量。通常以斜体渲染。

+

wbr 向一块 NOBR 文本中插入软换行。

+

window 代表浏览器中一个打开的窗口。

+

xml 在 HTML 页面上定义一个 XML 数据岛。

+

xmp 以固定宽度字体渲染作为示例的字体。

diff --git a/files/zh-cn/glossary/digital_certificate/index.html b/files/zh-cn/glossary/digital_certificate/index.html new file mode 100644 index 0000000000..0f6702c480 --- /dev/null +++ b/files/zh-cn/glossary/digital_certificate/index.html @@ -0,0 +1,12 @@ +--- +title: 数字证书 +slug: Glossary/数字证书 +translation_of: Glossary/Digital_certificate +--- +

数字证书是一个将公开的{{Glossary("Key", "加密密钥")}}和一个组织绑定的数据文件。 一个数字证书包含一个组织的信息,如公共名称(例如mozilla.org),组织单元(例如Mozilla Corporation)以及位置(例如Mountain View)。数字证书通常由{{Glossary("certificate authority")}}签署,以证明其真实性。

+ +

了解更多

+ + diff --git a/files/zh-cn/glossary/domain_name/index.html b/files/zh-cn/glossary/domain_name/index.html new file mode 100644 index 0000000000..cb88cc041b --- /dev/null +++ b/files/zh-cn/glossary/domain_name/index.html @@ -0,0 +1,15 @@ +--- +title: 域名 +slug: Glossary/域名 +translation_of: Glossary/Domain_name +--- +

域名是在 {{Glossary("Internet", "互联网")}} 的网站的地址。域名被用于 {{Glossary("URL","URL")}} 识别一个服务器属于哪个特定的网站。域名包含由句号点(”.“)分隔的名称(标签)的分级序列并以 {{glossary("TLD","扩展名")}} 作为结尾。

+ +

了解更多

+ +

基础知识

+ + diff --git a/files/zh-cn/glossary/dtd/index.html b/files/zh-cn/glossary/dtd/index.html deleted file mode 100644 index 543d822170..0000000000 --- a/files/zh-cn/glossary/dtd/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: DTD -slug: Glossary/DTD -translation_of: Glossary/Doctype -translation_of_original: Glossary/DTD ---- -

{{page("/en-US/docs/Glossary/Doctype")}}

- -

<!DOCTYPE> informs the browser which version of HTML (or XML) you used to write the document. Doctype is a declaration, not a tag; you can also refer to it as "document type declaration", or "DTD" for short.

diff --git a/files/zh-cn/glossary/element/index.html b/files/zh-cn/glossary/element/index.html new file mode 100644 index 0000000000..d199da5b07 --- /dev/null +++ b/files/zh-cn/glossary/element/index.html @@ -0,0 +1,22 @@ +--- +title: Element(元素) +slug: Glossary/元素 +tags: + - HTML + - XML + - 术语 + - 编程 +translation_of: Glossary/Element +--- +

元素是网页的一部分,在 {{glossary("XML")}} 和 {{glossary("HTML")}} 中,一个元素可以包含一个数据项,或是一块文本,或是一张照片,亦或是什么也不包含。 一个典型的元素包括一个具有一些{{glossary("attribute", "属性")}}的开始标签,中间的文本内容和一个结束标签。
+ Example: in <p class="nice">Hello world!</p>, '<p class="nice">' is an opening tag, 'class="nice"' is an attribute and its value, 'Hello world!' is enclosed text content, and '</p>' is a closing tag.

+ +

元素和{{glossary("tag", "标签")}}不是同一种概念。源代码中的标签用来标识元素的开始或结束,而元素是文档对象模型({{Glossary("DOM")}})中的一部分,文档对象模型会被{{glossary("browser", "浏览器")}}渲染、展示为页面。

+ +

相关信息

+ + diff --git a/files/zh-cn/glossary/empty_element/index.html b/files/zh-cn/glossary/empty_element/index.html new file mode 100644 index 0000000000..6d9fb8d229 --- /dev/null +++ b/files/zh-cn/glossary/empty_element/index.html @@ -0,0 +1,40 @@ +--- +title: 空元素 +slug: Glossary/空元素 +tags: + - Glossary + - 中级 + - 词汇 +translation_of: Glossary/Empty_element +--- +

一个空元素(empty element)可能是 HTML,SVG,或者 MathML 里的一个不能存在子节点(例如内嵌的元素或者元素内的文本)的{{Glossary("element")}}。

+ +

HTMLSVG 和 MathML 的规范都详细定义了每个元素能包含的具体内容(define very precisely what each element can contain)。许多组合是没有任何语义含义的,比如一个 {{HTMLElement("audio")}} 元素嵌套在一个 {{HTMLElement("hr")}} 元素里。

+ +

在 HTML 中,通常在一个空元素上使用一个闭标签是无效的。例如, <input type="text"></input> 的闭标签是无效的 HTML。

+ +

在 HTML 中有以下这些空元素:

+ + + +
+

Note: 在极少数情况下,空元素被错误地称为“无效元素”(void elements)。

+
diff --git a/files/zh-cn/glossary/forbidden_header_name/index.html b/files/zh-cn/glossary/forbidden_header_name/index.html new file mode 100644 index 0000000000..6e14c9b0a1 --- /dev/null +++ b/files/zh-cn/glossary/forbidden_header_name/index.html @@ -0,0 +1,39 @@ +--- +title: 禁止修改的消息首部 +slug: Glossary/禁止修改的消息首部 +translation_of: Glossary/Forbidden_header_name +--- +

禁止修改的消息首部指的是不能在代码中通过编程的方式进行修改的HTTP协议消息首部。本文仅讨论相关的HTTP请求首部(关于禁止修改的响应首部,请参考 {{Glossary("Forbidden response header name")}})。

+ +

用户代理对这些消息首部保留全部控制权,应用程序无法设置它们。 Names starting with `Sec-` are reserved for creating new headers safe from {{glossary("API","APIs")}} using Fetch that grant developers control over headers, such as {{domxref("XMLHttpRequest")}}.

+ +

禁止修改的消息首部包括以 Proxy- 和 Sec- 开头的消息首部,以及下面列出的消息首部:

+ + + +
+

注意: 根据最新的规范User-Agent 首部已经从列表中移除。更多内容请参考规范的 forbidden header name list 一节(Firefox 43 实现了对这一更改的支持)。因此,该首部已经可以用于诸如 Fetch 的 Headers 对象,XHR 的 setRequestHeader()? 中。

+
diff --git a/files/zh-cn/glossary/general_header/index.html b/files/zh-cn/glossary/general_header/index.html new file mode 100644 index 0000000000..acb1f99edf --- /dev/null +++ b/files/zh-cn/glossary/general_header/index.html @@ -0,0 +1,11 @@ +--- +title: General header(通用首部) +slug: Glossary/通用首部 +tags: + - HTTP + - 术语 +translation_of: Glossary/General_header +--- +

通用首部指的是可以应用于请求和响应中,但是不能应用于消息内容自身的 {{glossary('Header', 'HTTP 首部')}} 。 取决于应用的上下文环境,通用首部可以是{{glossary("Response header", "响应头部")}}或者{{glossary("request header", "请求头部")}}。但是不可以是{{glossary("entity header", "实体头部")}}。

+ +

最常见的通用首部包括:{{HTTPHeader('Date')}}、{{HTTPheader("Cache-Control")}} 或 {{HTTPHeader("Connection")}}。

diff --git a/files/zh-cn/glossary/graceful_degradation/index.html b/files/zh-cn/glossary/graceful_degradation/index.html new file mode 100644 index 0000000000..acd22a665e --- /dev/null +++ b/files/zh-cn/glossary/graceful_degradation/index.html @@ -0,0 +1,37 @@ +--- +title: Graceful degradation(优雅降级) +slug: Glossary/优雅降级 +tags: + - 优雅降级 + - 设计 + - 词汇表 +translation_of: Glossary/Graceful_degradation +--- +

优雅降级(Graceful degradation)是一种设计理念,其核心是尝试构建可在最新浏览器中运行的现代网站/应用程序,而作为降级体验,在低版本浏览器中仍然提供必要的内容和功能。

+ +

{{Glossary("Polyfill","Polyfill")}}可用于使用JavaScript构建缺少的功能,但应尽可能提供样式和布局等功能的可接受替代方案,例如使用CSS级联或HTML回退行为。在处理常见的HTML和CSS问题中可以找到一些很好的例子。

+ +

这个技术很有用,因为它让Web开发者,在专注开发最强大的网站同时,和某些未知的用户代理,在访问网站时发生的问题间达到权衡。{{Glossary("渐进增强")}}相关而不同—通常被看做优雅降级的相反行为。实际上,这两种方法都是有效的,并且通常可以相互补充。

+ +

了解更多

+ +

基本知识

+ + + + diff --git a/files/zh-cn/glossary/header/index.html b/files/zh-cn/glossary/header/index.html deleted file mode 100644 index a79ef62498..0000000000 --- a/files/zh-cn/glossary/header/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: HTTP header(HTTP 首部) -slug: Glossary/Header -tags: - - Glossary - - HTTP - - 术语 -translation_of: Glossary/HTTP_header ---- -

HTTP header(HTTP 首部,HTTP 头)表示在 HTTP 请求或响应中的用来传递附加信息的字段,修改所传递的消息(或者消息主体)的语义,或者使其更加精确。消息首部不区分大小写,开始于一行的开头,后面紧跟着一个 ':' 和与之相关的值。字段值在一个换行符(CRLF)前或者整个消息的末尾结束。

- -

按照惯例,可以把消息首部分为几类,尽管这种划分不存在于任何一份规范文档中:

- - - -

一个仅包含一个首部的请求:

- -
GET /example.http HTTP/1.1
-Host: example.com
-
- -

重定向请求中必须包含 ({{HTTPHeader("Location")}}) 首部:

- -
302 Found
-Location: /NewPage.html
-
- -

一些典型的首部:

- -
304 Not Modified
-Access-Control-Allow-Origin: *
-Age: 2318192
-Cache-Control: public, max-age=315360000
-Connection: keep-alive
-Date: Mon, 18 Jul 2016 16:06:00 GMT
-Server: Apache
-Vary: Accept-Encoding
-Via: 1.1 3dc30c7222755f86e824b93feb8b5b8c.cloudfront.net (CloudFront)
-X-Amz-Cf-Id: TOl0FEm6uI4fgLdrKJx0Vao5hpkKGZULYN2TWD2gAWLtr7vlNjTvZw==
-X-Backend-Server: developer6.webapp.scl3.mozilla.com
-X-Cache: Hit from cloudfront
-X-Cache-Info: cached
-
- - diff --git a/files/zh-cn/glossary/http_header/index.html b/files/zh-cn/glossary/http_header/index.html new file mode 100644 index 0000000000..a79ef62498 --- /dev/null +++ b/files/zh-cn/glossary/http_header/index.html @@ -0,0 +1,76 @@ +--- +title: HTTP header(HTTP 首部) +slug: Glossary/Header +tags: + - Glossary + - HTTP + - 术语 +translation_of: Glossary/HTTP_header +--- +

HTTP header(HTTP 首部,HTTP 头)表示在 HTTP 请求或响应中的用来传递附加信息的字段,修改所传递的消息(或者消息主体)的语义,或者使其更加精确。消息首部不区分大小写,开始于一行的开头,后面紧跟着一个 ':' 和与之相关的值。字段值在一个换行符(CRLF)前或者整个消息的末尾结束。

+ +

按照惯例,可以把消息首部分为几类,尽管这种划分不存在于任何一份规范文档中:

+ + + +

一个仅包含一个首部的请求:

+ +
GET /example.http HTTP/1.1
+Host: example.com
+
+ +

重定向请求中必须包含 ({{HTTPHeader("Location")}}) 首部:

+ +
302 Found
+Location: /NewPage.html
+
+ +

一些典型的首部:

+ +
304 Not Modified
+Access-Control-Allow-Origin: *
+Age: 2318192
+Cache-Control: public, max-age=315360000
+Connection: keep-alive
+Date: Mon, 18 Jul 2016 16:06:00 GMT
+Server: Apache
+Vary: Accept-Encoding
+Via: 1.1 3dc30c7222755f86e824b93feb8b5b8c.cloudfront.net (CloudFront)
+X-Amz-Cf-Id: TOl0FEm6uI4fgLdrKJx0Vao5hpkKGZULYN2TWD2gAWLtr7vlNjTvZw==
+X-Backend-Server: developer6.webapp.scl3.mozilla.com
+X-Cache: Hit from cloudfront
+X-Cache-Info: cached
+
+ + diff --git a/files/zh-cn/glossary/idempotent/index.html b/files/zh-cn/glossary/idempotent/index.html new file mode 100644 index 0000000000..cc8b22c143 --- /dev/null +++ b/files/zh-cn/glossary/idempotent/index.html @@ -0,0 +1,49 @@ +--- +title: 幂等 +slug: Glossary/幂等 +tags: + - Glossary + - WebMechanics +translation_of: Glossary/Idempotent +--- +

一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。在正确实现的条件下, {{HTTPMethod("GET")}} , {{HTTPMethod("HEAD")}} , {{HTTPMethod("PUT")}} 和 {{HTTPMethod("DELETE")}}  等方法都是幂等的,而  {{HTTPMethod("POST")}}  方法不是。所有的 {{glossary("safe")}} 方法也都是幂等的。

+ +

幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同。例如,第一次调用 {{HTTPMethod("DELETE")}} 方法有可能返回 {{HTTPStatus("200")}} ,但是后续的请求可能会返回 {{HTTPStatus("404")}} 。 {{HTTPMethod("DELETE")}} 的言外之意是,开发者不应该使用 DELETE 法实现具有删除最后条目功能的 RESTful API。

+ +

需要注意的是,服务器不一定会确保请求方法的幂等性,有些应用可能会错误地打破幂等性约束。

+ +

GET /pageX HTTP/1.1 幂等的。连续调用多次,客户端接收到的结果都是一样的:

+ +
GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+GET /pageX HTTP/1.1
+
+ +

POST /add_row HTTP/1.1 是幂等的。如果调用多次,就会增加多行记录:

+ +
POST /add_row HTTP/1.1
+POST /add_row HTTP/1.1   -> Adds a 2nd row
+POST /add_row HTTP/1.1   -> Adds a 3rd row
+
+ +

DELETE /idX/delete HTTP/1.1 幂等的,即便是不同请求之间接收到的状态码不一样:

+ +
DELETE /idX/delete HTTP/1.1   -> Returns 200 if idX exists
+DELETE /idX/delete HTTP/1.1   -> Returns 404 as it just got deleted
+DELETE /idX/delete HTTP/1.1   -> Returns 404
+ +

了解更多

+ +

基本知识

+ + + +

技术知识

+ + diff --git a/files/zh-cn/glossary/iife/index.html b/files/zh-cn/glossary/iife/index.html new file mode 100644 index 0000000000..659d1e8670 --- /dev/null +++ b/files/zh-cn/glossary/iife/index.html @@ -0,0 +1,63 @@ +--- +title: IIFE(立即调用函数表达式) +slug: Glossary/立即执行函数表达式 +tags: + - CodingScripting + - Glossary + - JavaScript + - 术语 +translation_of: Glossary/IIFE +--- +

IIFE( 立即调用函数表达式)是一个在定义时就会立即执行的  {{glossary("JavaScript")}} {{glossary("function","函数")}}。

+ +
(function () {
+    statements
+})();
+ +

这是一个被称为 {{glossary("Self-Executing Anonymous Function", "自执行匿名函数")}} 的设计模式,主要包含两部分。第一部分是包围在 {{jsxref("Operators/Grouping", "圆括号运算符")}} () 里的一个匿名函数,这个匿名函数拥有独立的词法作用域。这不仅避免了外界访问此 IIFE 中的变量,而且又不会污染全局作用域。

+ +

第二部分再一次使用 () 创建了一个立即执行函数表达式,JavaScript 引擎到此将直接执行函数。

+ +

示例

+ +

当函数变成立即执行的函数表达式时,表达式中的变量不能从外部访问。

+ +
(function () {
+    var name = "Barry";
+})();
+// 无法从外部访问变量 name
+name // 抛出错误:"Uncaught ReferenceError: name is not defined"
+
+ +

将 IIFE 分配给一个变量,不是存储 IIFE 本身,而是存储 IIFE 执行后返回的结果。

+ +
var result = (function () {
+    var name = "Barry";
+    return name;
+})();
+// IIFE 执行后返回的结果:
+result; // "Barry"
+ +

了解更多

+ +

了解

+ + + +

常识

+ + + + diff --git a/files/zh-cn/glossary/ip_address/index.html b/files/zh-cn/glossary/ip_address/index.html new file mode 100644 index 0000000000..52686f1c20 --- /dev/null +++ b/files/zh-cn/glossary/ip_address/index.html @@ -0,0 +1,20 @@ +--- +title: IP地址 +slug: Glossary/IP地址 +tags: + - IP地址 + - 初学者 + - 术语表 +translation_of: Glossary/IP_Address +--- +

IP地址是分配给连接到使用Internet协议的网络的每个设备的一串数字。

+ +

在更广泛地使用IPv6之前,"IP地址"通常仍指32位IPv4地址。

+ +

了解更多

+ +

General knowledge

+ + diff --git "a/files/zh-cn/glossary/ip\345\234\260\345\235\200/index.html" "b/files/zh-cn/glossary/ip\345\234\260\345\235\200/index.html" deleted file mode 100644 index 52686f1c20..0000000000 --- "a/files/zh-cn/glossary/ip\345\234\260\345\235\200/index.html" +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: IP地址 -slug: Glossary/IP地址 -tags: - - IP地址 - - 初学者 - - 术语表 -translation_of: Glossary/IP_Address ---- -

IP地址是分配给连接到使用Internet协议的网络的每个设备的一串数字。

- -

在更广泛地使用IPv6之前,"IP地址"通常仍指32位IPv4地址。

- -

了解更多

- -

General knowledge

- - diff --git a/files/zh-cn/glossary/localization/index.html b/files/zh-cn/glossary/localization/index.html new file mode 100644 index 0000000000..aafe809a5d --- /dev/null +++ b/files/zh-cn/glossary/localization/index.html @@ -0,0 +1,62 @@ +--- +title: 本地化 +slug: Localization +translation_of: Glossary/Localization +--- +

Localization (L10n) is the process of translating software user interfaces from one language to another and adapting it to suit a foreign culture. These resources are for anyone with an interest in the technical aspects involved in localization. They are for developers and all contributors.

+ + + + + + + +
+

Documentation

+
+
+ Localization Quick Start Guide
+
+ First read for volunteers wanting to start localizing.
+
+ XUL Tutorial:Localization
+
+ XUL Tutorial section on localizing XUL applications.
+
+ Writing localizable code
+
+ Best practices and guidelines for programmers to play nicely with localization.
+
+ Localizing Help files
+
+ How to separate content from HTML to make these files more easy to localize.
+
+ Custom dialog size
+
+ How to adjust window sizes to fit specific localizations.
+
+ Localizing extension descriptions
+
+ To localize the description of an extension (the string that shows up under extension's name in the Extensions window), you need to use a special preference key to override the description specified in your install.rdf file. This article contains instructions on how to modify this preference key.
+
+ Frequently Asked Localization Questions
+
+ Frequently asked questions about localization.
+
+

View All...

+
+

Community

+
    +
  • View Mozilla forums...
  • +
+

{{ DiscussionList("dev-l10n", "mozilla.dev.l10n") }}

+ + + +
+

 

diff --git a/files/zh-cn/glossary/main_axis/index.html b/files/zh-cn/glossary/main_axis/index.html new file mode 100644 index 0000000000..c3c8b91de1 --- /dev/null +++ b/files/zh-cn/glossary/main_axis/index.html @@ -0,0 +1,50 @@ +--- +title: 主轴 +slug: Glossary/主轴 +translation_of: Glossary/Main_Axis +--- +

主轴是由弹性容器 {{glossary("flexbox")}} 中弹性方向 {{cssxref("flex-direction")}} 属性所定义的的。弹性方向 flex-direction  有4个可能的值,分别是:

+ + + +

选择行 row 或者 row-reverse 反向行,那么主轴方向就会沿着行的走向。

+ +

In this image the flex-direction is row which forms the main axis

+ +

选择列 column 或者反向列 column-reverse ,那么主轴就会从上至下沿着块的走向。

+ +

+ +

在主轴上,你可以用 flex 属性来增加可用空间,从而控制弹性元素的尺寸,你还可以用 justify-content 属性来控制元素周围的空间、间距。

+ +

学习更多

+ +

属性参考

+ +
+ +
+ +

拓展阅读

+ + + +
+
+
diff --git a/files/zh-cn/glossary/oop/index.html b/files/zh-cn/glossary/oop/index.html new file mode 100644 index 0000000000..4f2793cc69 --- /dev/null +++ b/files/zh-cn/glossary/oop/index.html @@ -0,0 +1,21 @@ +--- +title: OOP +slug: Glossary/面向对象编程 +tags: + - 初学者 + - 术语 + - 编写脚本 +translation_of: Glossary/OOP +--- +

OOP(面向对象编程)是一种编程方法,其中数据封装在{{glossary("object","对象")}}中,对象本身在其上运行,而不是其组成部分。

+ +

{{glossary("JavaScript")}} 是高度面向对象的。它遵循基于原型的模型(与基于类的模型相反)。

+ +

了解更多

+ +

常识

+ + diff --git a/files/zh-cn/glossary/origin/index.html b/files/zh-cn/glossary/origin/index.html new file mode 100644 index 0000000000..83090ee98f --- /dev/null +++ b/files/zh-cn/glossary/origin/index.html @@ -0,0 +1,52 @@ +--- +title: Origin +slug: Glossary/源 +translation_of: Glossary/Origin +--- +

Web内容的源由用于访问它的{{Glossary("URL")}} 的方案(协议),主机(域名)和端口定义。只有当方案,主机和端口都匹配时,两个对象具有相同的起源。

+ +

某些操作仅限于同源内容,而可以使用 CORS 解除这个限制。

+ +

同源的例子

+ + + + + + + + + + + + +
http://example.com/app1/index.html
+ http://example.com/app2/index.html
same origin because same scheme (http) and host (example.com)
http://Example.com:80
+ http://example.com
same origin because a server delivers HTTP content through port 80 by default
+ +

不同源的例子

+ + + + + + + + + + + + + + + + +
http://example.com/app1
+ https://example.com/app2
different schemes
http://example.com
+ http://www.example.com
+ http://myapp.example.com
different hosts
http://example.com
+ http://example.com:8080
different ports
+ +

了解更多

+ +

详细信息,请看同源策略

diff --git a/files/zh-cn/glossary/progressive_enhancement/index.html b/files/zh-cn/glossary/progressive_enhancement/index.html new file mode 100644 index 0000000000..7a0b586b9a --- /dev/null +++ b/files/zh-cn/glossary/progressive_enhancement/index.html @@ -0,0 +1,24 @@ +--- +title: 渐进增强 +slug: Glossary/渐进增强 +tags: + - 无障碍 + - 设计 + - 词汇表 +translation_of: Glossary/Progressive_Enhancement +--- +

渐进增强(Progressive enhancement)是一种设计理念,其核心是为尽可能多的用户提供基本内容和功能,同时进一步为现代化浏览器用户提供最佳体验,运行所有需要的代码。

+ +

特性检测通常用于确定浏览器是否可以处理高级内容,而polyfill通常用于使用JavaScript构建缺少的功能。

+ +

另外请关注无障碍支持 — 尽可能提供备选方案。

+ +

这个技术很有用,因为它让Web开发者,在专注开发最强大的网站同时,和某些未知的用户代理在访问网站时发生问题,两者之间达到权衡。 {{Glossary("优雅降级")}} 相关而不同 — 通常被视为与渐进增强相反的方向。实际上,这两种方法都是有效的,并且通常可以相互补充。

+ +

了解更多

+ +

基本知识

+ + diff --git a/files/zh-cn/glossary/proxy_server/index.html b/files/zh-cn/glossary/proxy_server/index.html new file mode 100644 index 0000000000..86774d0a71 --- /dev/null +++ b/files/zh-cn/glossary/proxy_server/index.html @@ -0,0 +1,24 @@ +--- +title: 代理服务器 +slug: Glossary/代理服务器 +tags: + - 代理 + - 服务器 + - 术语 +translation_of: Glossary/Proxy_server +--- +

代理服务器 是用来在不同Internet网络之间进行导航的中继软件或者计算机。 它们有助于访问万维网上的内容。代理服务器会拦截请求并提供响应;它不一定会转发所有请求(比如说在有缓存的情况), 而且也许会修改请求或者响应 (比如说在两个网络环境边界的时候修改请求头部信息)。

+ +

代理可以存在用户自己的电脑上,或者任何其他在用户计算机与互联网上的远程服务器之间的任何地方。一般来说有两种代理类型:

+ + + +

更多资料

+ + diff --git a/files/zh-cn/glossary/pseudo-class/index.html b/files/zh-cn/glossary/pseudo-class/index.html new file mode 100644 index 0000000000..56c818928f --- /dev/null +++ b/files/zh-cn/glossary/pseudo-class/index.html @@ -0,0 +1,18 @@ +--- +title: 伪类 +slug: Glossary/伪类 +tags: + - CSS + - 伪类 + - 选择器 +translation_of: Glossary/Pseudo-class +--- +

在 CSS 中, 一个伪类选择器只依据元素的状态, 而不是元素在文档树中的信息, 来选择目标对象.举例来说, 选择器 a{{ cssxref(":visited") }} 仅仅应用于那些用户已经浏览过的连接.

+ +

了解更多

+ +

技术参考

+ + diff --git a/files/zh-cn/glossary/request_header/index.html b/files/zh-cn/glossary/request_header/index.html new file mode 100644 index 0000000000..666ace7ea4 --- /dev/null +++ b/files/zh-cn/glossary/request_header/index.html @@ -0,0 +1,44 @@ +--- +title: Request header(请求头) +slug: Glossary/请求头 +tags: + - HTTP + - 术语 +translation_of: Glossary/Request_header +--- +

请求头是 {{glossary("header", "HTTP 头")}}的一种,它可在 HTTP 请求中使用,并且和请求主体无关 。某些请求头如 {{HTTPHeader("Accept")}}、{{HTTPHeader("Accept-Language", "Accept-*")}}、 {{HTTPHeader("If-Modified-Since", "If-*")}} 允许执行条件请求。某些请求头如:{{HTTPHeader("Cookie")}}, {{HTTPHeader("User-Agent")}} 和 {{HTTPHeader("Referer")}} 描述了请求本身以确保服务端能返回正确的响应。

+ +

并非所有出现在请求中的 HTTP 首部都属于请求头,例如在 {{HTTPMethod("POST")}} 请求中经常出现的 Content-Length 实际上是一个代表请求主体大小的 entity header,虽然你也可以把它叫做请求头。

+ +

此外,CORS 定义了一个叫做 {{glossary('simple header', 'simple headers')}} 的集合,它是请求头集合的一个子集。如果某次请求是只包含 {{glossary('simple header', 'simple header')}} 的话,则被认为是简单请求,不会触发请求预检({{glossary("preflight request", "preflight")}})。

+ +

下面是一个 HTTP 请求的请求头:

+ +
GET /home.html HTTP/1.1
+Host: developer.mozilla.org
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
+Accept-Language: en-US,en;q=0.5
+Accept-Encoding: gzip, deflate, br
+Referer: https://developer.mozilla.org/testpage.html
+Connection: keep-alive
+Upgrade-Insecure-Requests: 1
+If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
+If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
+Cache-Control: max-age=0
+ +

严格来说在这个例子中的 {{HTTPHeader("Content-Length")}} 不是一个请求头,而是一个实体头({{glossary("entity header")}}):

+ +
POST /myform.html HTTP/1.1
+Host: developer.mozilla.org
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
+Content-Length: 128
+
+ +

深入了解

+ +

技术信息

+ + diff --git a/files/zh-cn/glossary/semantics/index.html b/files/zh-cn/glossary/semantics/index.html new file mode 100644 index 0000000000..54cb20f0b9 --- /dev/null +++ b/files/zh-cn/glossary/semantics/index.html @@ -0,0 +1,97 @@ +--- +title: Semantics(语义) +slug: Glossary/语义 +tags: + - 编程 + - 语义 + - 语义化 +translation_of: Glossary/Semantics +--- +

在编程中,语义指的是一段代码的含义 — 例如 "运行这行 JavaScript 代码会产生怎样的影响?", 或者 "这个 HTML 的元素有什么作用,扮演了什么样的角色"(而不只是 "它看上去像是什么?"。)

+ +

JavaScript 中的语义

+ +

JavaScript 中,考虑一个函数,该函数接受一个字符串参数,然后返回一个以该字符串为文本内容的{{htmlelement("li")}}元素。如果该函数调用是build('Peach'),你会需要去看代码才能理解该函数做了什么吗,如果是createLiWithContent('Peach')呢?

+ +

CSS 中的语义

+ +

CSS 中,考虑给一个列表设置样式,li 元素代表不同类型的水果。通过 div > ul > li,你能知道 DOM 的那一部分会被选择中吗?但如果是 .fruits__item 呢?

+ +

HTML 中的语义

+ +

HTML 中,例如,{{htmlelement("h1")}} 元素是一个语义化元素,赋予了它包裹着的文本“这个页面中最高级别标题功能“的角色 (或含义) 。

+ +
<h1>This is a top level heading</h1>
+ +

默认情况下,绝大多数浏览器的 user agent stylesheet 将会赋予一个 {{htmlelement("h1")}} 元素很大的字号尺寸从而使它看上去更像是一个标题(虽然你可以把它格式化为任何你想要的样式),但是更重要的是它的语义会被在很多地方以不同的方式被使用到, 例如搜索引擎会把它包含的内容作为一个重要的关键词,从而影响这个页面在搜索结果中的排序(参见{{ glossary ("SEO")}}),而且屏幕阅读器会使用它来帮助视障用户更好的使用这个页面。

+ +

另一方面,你可以通过样式(CSS)来让任何的元素看上去像是一个最高级别的标题,就像下面所展示的方法一样:

+ +
<span style="font-size: 32px; margin: 21px 0;">Is this a top level heading?</span>
+ +

这将会把这个元素渲染得像是一个最高级别的标题,但是它的值没有对应到最“最高级别标题”这一语义,所以在此之上,它不会获得更多额外的描述(只是一个普通“span”元素而不是“最高级别标题”这一语义)。所以在恰当的需求下使用恰当的HTML元素是一个不错的主意。

+ +

HTML should be coded to represent the data that will be populated and not based on its default presentation styling. Presentation (how it should look), is the sole responsibility of CSS.

+ +

Some of the benefits from writing semantic markup are as follows:

+ + + +

When approaching which markup to use, ask yourself, "What element(s) best describe/represent the data that I'm going to populate?" For example, is it a list of data?; ordered, unordered?; is it an article with sections and an aside of related information?; does it list out definitions?; is it a figure or image that needs a caption?; should it have a header and a footer in addition to the global site-wide header and footer?; etc.

+ +

语义化元素

+ +

这是一些语义化的元(source)。

+ + + +

了解更多

+ + diff --git a/files/zh-cn/glossary/serialization/index.html b/files/zh-cn/glossary/serialization/index.html new file mode 100644 index 0000000000..8405434f3e --- /dev/null +++ b/files/zh-cn/glossary/serialization/index.html @@ -0,0 +1,23 @@ +--- +title: Serialize +slug: Glossary/Serialize +tags: + - Glossary + - JavaScript + - Serialize +translation_of: Glossary/Serialization +translation_of_original: Glossary/Serialize +--- +

序列化(Serialization )意味着将 {{Glossary("object", "对象")}} 或某种其他类型的数据结构转换为可存储格式(例如,文件或 {{Glossary("buffer")}})。

+ +

在 {{Glossary("JavaScript")}} 中,你可以通过调用 {{jsxref("JSON.stringify()")}} {{Glossary("function", "函数")}}将某个值序列化为 {{Glossary("JSON")}} 格式的 {{Glossary("string", "字符串")}}。

+ +

{{Glossary("CSS")}} 值可以通过调用 {{domxref("CSSStyleDeclaration.getPropertyValue()")}} 函数来序列化。

+ +

了解更多

+ +

General knowledge

+ + diff --git a/files/zh-cn/glossary/serialize/index.html b/files/zh-cn/glossary/serialize/index.html deleted file mode 100644 index 8405434f3e..0000000000 --- a/files/zh-cn/glossary/serialize/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Serialize -slug: Glossary/Serialize -tags: - - Glossary - - JavaScript - - Serialize -translation_of: Glossary/Serialization -translation_of_original: Glossary/Serialize ---- -

序列化(Serialization )意味着将 {{Glossary("object", "对象")}} 或某种其他类型的数据结构转换为可存储格式(例如,文件或 {{Glossary("buffer")}})。

- -

在 {{Glossary("JavaScript")}} 中,你可以通过调用 {{jsxref("JSON.stringify()")}} {{Glossary("function", "函数")}}将某个值序列化为 {{Glossary("JSON")}} 格式的 {{Glossary("string", "字符串")}}。

- -

{{Glossary("CSS")}} 值可以通过调用 {{domxref("CSSStyleDeclaration.getPropertyValue()")}} 函数来序列化。

- -

了解更多

- -

General knowledge

- - diff --git a/files/zh-cn/glossary/simple_header/index.html b/files/zh-cn/glossary/simple_header/index.html new file mode 100644 index 0000000000..c2c1f71d4f --- /dev/null +++ b/files/zh-cn/glossary/simple_header/index.html @@ -0,0 +1,38 @@ +--- +title: 简单头部 +slug: Glossary/简单头部 +tags: + - HTTP + - 简单头部 + - 跨域 +translation_of: Glossary/Simple_header +--- +

以下的 HTTP headers都可以被认为是简单头部:

+ + + +

或者以下客户端头部之一的也可以被认为是简单头部:

+ + + +

当只包含简单头部时,一个请求则被视为简单请求并且在CORS中不需要发送{{glossary("preflight request")}}。

+ +

Learn more

+ + diff --git a/files/zh-cn/glossary/sloppy_mode/index.html b/files/zh-cn/glossary/sloppy_mode/index.html new file mode 100644 index 0000000000..3856bd5b35 --- /dev/null +++ b/files/zh-cn/glossary/sloppy_mode/index.html @@ -0,0 +1,16 @@ +--- +title: 正常模式 +slug: Glossary/正常模式 +translation_of: Glossary/Sloppy_mode +--- +

因为翻译原因,正常模式也被翻译为——马虎模式/稀松模式/懒散模式

+ +

{{Glossary("ECMAScript")}} 5 以及其后续的版本可以选择性的使用一种新模式——严格模式(strict mode),这种严格模式在多个方面改变了JavaScript的语义,从而使得当出现问题时我们更好的理解到底发生了什么。

+ +

常见的,非严格模式——平时我们会称之为正常模式(sloppy mode),这并不是一个官方说法,但是你会经常见到如上的一些说法,其意义就是指代非严格模式,即正常模式。

+ +

相关链接

+ + diff --git a/files/zh-cn/glossary/speculative_parsing/index.html b/files/zh-cn/glossary/speculative_parsing/index.html new file mode 100644 index 0000000000..bded58d8fd --- /dev/null +++ b/files/zh-cn/glossary/speculative_parsing/index.html @@ -0,0 +1,29 @@ +--- +title: 对页面预解析进行优化 +slug: Web/HTML/Optimizing_your_pages_for_speculative_parsing +translation_of: Glossary/speculative_parsing +--- +

在传统的浏览器中,HTML 解析器运行于主线程之中,并且在遇到 </script> 标签后会被阻塞,直到脚本从网络中被获取和执行。 Firefox 4 和后续的版本支持从主线程中分离的预解析技术。 当脚本在获取和执行的过程中,预解析技术能提前解析HTML文档。在Firefox 3.5 和 3.6中, HTML 解析器能够在文档流中预先加载脚本、层叠样式表和图片。然而, 在Firefox 4 和后续的版本中 HTML 解析器也预先运行HTML 树构建算法。 这一举措的优点是当预解析成功后,就没有必要再重新解析已经扫描过并且成功下载的脚本,层叠样式表和图片;缺点就是当预解析失败之后,有很多工作需要去做。

+ +

这篇文档旨在帮助你避免预解析失败和页面加载变慢。

+ +

使预加载成功

+ +

让脚本、层叠样式表和图片预加载成功的规则只有一条:

+ + + +

避免树构建器的输出丢失

+ +

当document.write() 改变了文档树的状态时,树构建器的预构建过程会失败。 例如,当所有被document.write() 插入的内容被解析之后</script> 标签后的预处理状态不再持有。 然而,只有不寻常地使用 document.write() 才会产生问题。 这些事情需要避免:

+ + diff --git a/files/zh-cn/glossary/time_to_first_byte/index.html b/files/zh-cn/glossary/time_to_first_byte/index.html new file mode 100644 index 0000000000..8bcc8f0ce9 --- /dev/null +++ b/files/zh-cn/glossary/time_to_first_byte/index.html @@ -0,0 +1,20 @@ +--- +title: 第一字节时间 +slug: Glossary/第一字节时间 +translation_of: Glossary/time_to_first_byte +--- +

第一字节时间(TTFB)是指从浏览器请求页面到从浏览器接收来自服务器发送的信息的第一个字节的时间。这一次包括DNS查找和使用(三次)TCP握手和SSL握手建立连接(如果请求是通过https发出的)。

+ + + +

TTFB是从请求开始到响应开始之间所用的时间,以毫秒为单位:

+ +
TTFB = responseStart - requestStart
+ +

See Also:

+ + diff --git a/files/zh-cn/glossary/type_conversion/index.html b/files/zh-cn/glossary/type_conversion/index.html new file mode 100644 index 0000000000..7d1eb4c23e --- /dev/null +++ b/files/zh-cn/glossary/type_conversion/index.html @@ -0,0 +1,27 @@ +--- +title: Type conversion(类型转换) +slug: Glossary/类型转换 +tags: + - Type + - 术语 + - 类型 +translation_of: Glossary/Type_Conversion +--- +

类型转换(或类型变换;英文:Type conversion, typecasting)是指将数据由一种类型变换为另一种类型。在编译器自动赋值时,会发生隐式转换,但在代码中,也可以用一些写法强制要求进行显式转换。例如:在表达式 5 + 2.0 中,整数 5 被隐式转换为浮点数,但 Number("0x11") 和 "0x11" 则被显式转换为数字 17。

+ + diff --git a/files/zh-cn/glossary/xhtml/index.html b/files/zh-cn/glossary/xhtml/index.html new file mode 100644 index 0000000000..e562ccca94 --- /dev/null +++ b/files/zh-cn/glossary/xhtml/index.html @@ -0,0 +1,15 @@ +--- +title: XHTML +slug: XHTML +translation_of: Glossary/XHTML +--- +

W3C标准 XHTML

+ +

XHTML(eXtensible HyperText Markup Language,可扩展超文本标记语言)

+ +

2000年底,国际W3C(World Wide Web Consortium)组织公布发行了XHTML 1.0版本。XHTML 1.0是一种在HTML 4.0基础上优化和改进的的新语言,目的是基于XML应用。XHTML是一种增强了的HTML,它的可扩展性和灵活性将适应未来网络应用更多的需求。

+ +

 

+ +

XHTML是在2000年1月26日被国际标准组织机构W3C(World Wide web Consortium)定为一个标准的,认为是HTML的一个最新版本,并且将逐渐替换HTML。现在所有的浏览器都支持XHTML,XHTML兼容 HTML 4.0。也有人认为XHTML就是HTML4.01。如果你在学习过程中自己编写了一个符合标准的站,你可以通过W3C的验证,验证通过后你将会得到一个标志,通常是XHTML1.0认证和CSS验证。大家可以去www.w3.org 这个站点去验证你的站点,如果符合那两个规则则会分别给我们两段代码加到你的网页上向别人展示说明你采用了标准建站。
+ 请认真阅读XHTML相关知识和基础教程,以便您能准确的了解XHTML的新特性,以及应用技巧,还可以得到w3c的有力支持。

diff --git "a/files/zh-cn/glossary/\344\270\273\350\275\264/index.html" "b/files/zh-cn/glossary/\344\270\273\350\275\264/index.html" deleted file mode 100644 index c3c8b91de1..0000000000 --- "a/files/zh-cn/glossary/\344\270\273\350\275\264/index.html" +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: 主轴 -slug: Glossary/主轴 -translation_of: Glossary/Main_Axis ---- -

主轴是由弹性容器 {{glossary("flexbox")}} 中弹性方向 {{cssxref("flex-direction")}} 属性所定义的的。弹性方向 flex-direction  有4个可能的值,分别是:

- - - -

选择行 row 或者 row-reverse 反向行,那么主轴方向就会沿着行的走向。

- -

In this image the flex-direction is row which forms the main axis

- -

选择列 column 或者反向列 column-reverse ,那么主轴就会从上至下沿着块的走向。

- -

- -

在主轴上,你可以用 flex 属性来增加可用空间,从而控制弹性元素的尺寸,你还可以用 justify-content 属性来控制元素周围的空间、间距。

- -

学习更多

- -

属性参考

- -
- -
- -

拓展阅读

- - - -
-
-
diff --git "a/files/zh-cn/glossary/\344\272\244\345\217\211\350\275\264/index.html" "b/files/zh-cn/glossary/\344\272\244\345\217\211\350\275\264/index.html" deleted file mode 100644 index 27412c4d85..0000000000 --- "a/files/zh-cn/glossary/\344\272\244\345\217\211\350\275\264/index.html" +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: 交叉轴 -slug: Glossary/交叉轴 -translation_of: Glossary/Cross_Axis ---- -

弹性容器 {{glossary("flexbox")}} 的交叉轴和主轴 {{glossary("main axis")}} 垂直,因此如果弹性方向是 {{cssxref("flex-direction")}} 行 row 或者反向行 row-reverse ,那么交叉轴就是从上至下地垂直走向的。

- -

The cross axis runs down the column

- -

如果你的主轴是列 column 或者反向列 column-reverse ,那么交叉轴就是水平走向的。

- -

The cross axis runs along the row.

- -

要在交叉轴上对齐,是通过弹性容器的 align-items 属性来控制的,或者通过弹性元素的 align-self 属性来单独决定的对齐方式。在多行弹性容器中,交叉轴上有多余控件的话,你还可以用 align-content 来控制行的间距。

- -

学习更多

- -

属性参考

- -
- -
- -

拓展阅读

- - - - - -
-
-
diff --git "a/files/zh-cn/glossary/\344\273\243\347\220\206\346\234\215\345\212\241\345\231\250/index.html" "b/files/zh-cn/glossary/\344\273\243\347\220\206\346\234\215\345\212\241\345\231\250/index.html" deleted file mode 100644 index 86774d0a71..0000000000 --- "a/files/zh-cn/glossary/\344\273\243\347\220\206\346\234\215\345\212\241\345\231\250/index.html" +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 代理服务器 -slug: Glossary/代理服务器 -tags: - - 代理 - - 服务器 - - 术语 -translation_of: Glossary/Proxy_server ---- -

代理服务器 是用来在不同Internet网络之间进行导航的中继软件或者计算机。 它们有助于访问万维网上的内容。代理服务器会拦截请求并提供响应;它不一定会转发所有请求(比如说在有缓存的情况), 而且也许会修改请求或者响应 (比如说在两个网络环境边界的时候修改请求头部信息)。

- -

代理可以存在用户自己的电脑上,或者任何其他在用户计算机与互联网上的远程服务器之间的任何地方。一般来说有两种代理类型:

- - - -

更多资料

- - diff --git "a/files/zh-cn/glossary/\344\274\230\351\233\205\351\231\215\347\272\247/index.html" "b/files/zh-cn/glossary/\344\274\230\351\233\205\351\231\215\347\272\247/index.html" deleted file mode 100644 index acd22a665e..0000000000 --- "a/files/zh-cn/glossary/\344\274\230\351\233\205\351\231\215\347\272\247/index.html" +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Graceful degradation(优雅降级) -slug: Glossary/优雅降级 -tags: - - 优雅降级 - - 设计 - - 词汇表 -translation_of: Glossary/Graceful_degradation ---- -

优雅降级(Graceful degradation)是一种设计理念,其核心是尝试构建可在最新浏览器中运行的现代网站/应用程序,而作为降级体验,在低版本浏览器中仍然提供必要的内容和功能。

- -

{{Glossary("Polyfill","Polyfill")}}可用于使用JavaScript构建缺少的功能,但应尽可能提供样式和布局等功能的可接受替代方案,例如使用CSS级联或HTML回退行为。在处理常见的HTML和CSS问题中可以找到一些很好的例子。

- -

这个技术很有用,因为它让Web开发者,在专注开发最强大的网站同时,和某些未知的用户代理,在访问网站时发生的问题间达到权衡。{{Glossary("渐进增强")}}相关而不同—通常被看做优雅降级的相反行为。实际上,这两种方法都是有效的,并且通常可以相互补充。

- -

了解更多

- -

基本知识

- - - - diff --git "a/files/zh-cn/glossary/\344\274\252\347\261\273/index.html" "b/files/zh-cn/glossary/\344\274\252\347\261\273/index.html" deleted file mode 100644 index 56c818928f..0000000000 --- "a/files/zh-cn/glossary/\344\274\252\347\261\273/index.html" +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: 伪类 -slug: Glossary/伪类 -tags: - - CSS - - 伪类 - - 选择器 -translation_of: Glossary/Pseudo-class ---- -

在 CSS 中, 一个伪类选择器只依据元素的状态, 而不是元素在文档树中的信息, 来选择目标对象.举例来说, 选择器 a{{ cssxref(":visited") }} 仅仅应用于那些用户已经浏览过的连接.

- -

了解更多

- -

技术参考

- - diff --git "a/files/zh-cn/glossary/\345\205\203\347\264\240/index.html" "b/files/zh-cn/glossary/\345\205\203\347\264\240/index.html" deleted file mode 100644 index d199da5b07..0000000000 --- "a/files/zh-cn/glossary/\345\205\203\347\264\240/index.html" +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Element(元素) -slug: Glossary/元素 -tags: - - HTML - - XML - - 术语 - - 编程 -translation_of: Glossary/Element ---- -

元素是网页的一部分,在 {{glossary("XML")}} 和 {{glossary("HTML")}} 中,一个元素可以包含一个数据项,或是一块文本,或是一张照片,亦或是什么也不包含。 一个典型的元素包括一个具有一些{{glossary("attribute", "属性")}}的开始标签,中间的文本内容和一个结束标签。
- Example: in <p class="nice">Hello world!</p>, '<p class="nice">' is an opening tag, 'class="nice"' is an attribute and its value, 'Hello world!' is enclosed text content, and '</p>' is a closing tag.

- -

元素和{{glossary("tag", "标签")}}不是同一种概念。源代码中的标签用来标识元素的开始或结束,而元素是文档对象模型({{Glossary("DOM")}})中的一部分,文档对象模型会被{{glossary("browser", "浏览器")}}渲染、展示为页面。

- -

相关信息

- - diff --git "a/files/zh-cn/glossary/\345\215\241\347\211\207\345\210\206\347\261\273\346\263\225/index.html" "b/files/zh-cn/glossary/\345\215\241\347\211\207\345\210\206\347\261\273\346\263\225/index.html" deleted file mode 100644 index 9d5a3c4ff5..0000000000 --- "a/files/zh-cn/glossary/\345\215\241\347\211\207\345\210\206\347\261\273\346\263\225/index.html" +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: 卡片分类法 -slug: Glossary/卡片分类法 -tags: - - 卡片分类法 - - 名称 - - 设计 -translation_of: Glossary/Card_sorting ---- -

卡片分类法是一种简单的技巧 ,{{glossary("Information architecture")}} 通常是邀请参与网站开发的设计师(或是开发其他类型产品的人),让他们写下他们认为这个产品应当包含的内容、服务和功能,然后将这些功能分组。一个很好的例子是考虑网站上每个页面应当显示什么样的内容。这个名字源于这个分类是通过把要分类的项目写在卡片上,再通过排列卡片完成的。

- -

了解更多

- -

常识

- - diff --git "a/files/zh-cn/glossary/\345\234\260\345\235\200\350\267\257\347\224\261\345\217\202\346\225\260\345\237\237/index.html" "b/files/zh-cn/glossary/\345\234\260\345\235\200\350\267\257\347\224\261\345\217\202\346\225\260\345\237\237/index.html" deleted file mode 100644 index 8c30be2d15..0000000000 --- "a/files/zh-cn/glossary/\345\234\260\345\235\200\350\267\257\347\224\261\345\217\202\346\225\260\345\237\237/index.html" +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: ARPA -slug: Glossary/地址路由参数域 -tags: - - 专业术语 - - 互联网服务基础设施 -translation_of: Glossary/ARPA ---- -

.arpa (address and routing parameter area, 地址路由参数域 ) 是专门用来互联网基础设施配置的顶级域{{glossary("TLD","top-level domain")}} ,尤其是DNS反向解析,即从 {{glossary("IP 地址")}})找出旗下的主机名(i.e., find the {{glossary('domain name')}} 。

- -

了解更多

- -

通用知识库

- - diff --git "a/files/zh-cn/glossary/\345\237\237\345\220\215/index.html" "b/files/zh-cn/glossary/\345\237\237\345\220\215/index.html" deleted file mode 100644 index cb88cc041b..0000000000 --- "a/files/zh-cn/glossary/\345\237\237\345\220\215/index.html" +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: 域名 -slug: Glossary/域名 -translation_of: Glossary/Domain_name ---- -

域名是在 {{Glossary("Internet", "互联网")}} 的网站的地址。域名被用于 {{Glossary("URL","URL")}} 识别一个服务器属于哪个特定的网站。域名包含由句号点(”.“)分隔的名称(标签)的分级序列并以 {{glossary("TLD","扩展名")}} 作为结尾。

- -

了解更多

- -

基础知识

- - diff --git "a/files/zh-cn/glossary/\345\237\272\347\272\277/index.html" "b/files/zh-cn/glossary/\345\237\272\347\272\277/index.html" deleted file mode 100644 index 2158190685..0000000000 --- "a/files/zh-cn/glossary/\345\237\272\347\272\277/index.html" +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 基线 -slug: Glossary/基线 -translation_of: Glossary/baseline ---- -

基线是指欧洲和西亚文字排版中,用于在上面放置字符的一条假象的基准线。

- -

字符的降部比如 g 和 p 会向下超出基线, 带弧形的会向上和向下扩展的字形( {{Glossary("glyph", "Glyphs")}} ),比如 C 或 3 会略微向下超出基线。

- -

东亚文字没有基线,他们的字形放置在方盒子,没有升部和降部。

- -

学习更多

- -

基本知识

- - - -

技术参考

- - diff --git "a/files/zh-cn/glossary/\345\255\227\347\254\246\347\274\226\347\240\201/index.html" "b/files/zh-cn/glossary/\345\255\227\347\254\246\347\274\226\347\240\201/index.html" deleted file mode 100644 index 40dbc7ca8a..0000000000 --- "a/files/zh-cn/glossary/\345\255\227\347\254\246\347\274\226\347\240\201/index.html" +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Character encoding(字符编码) -slug: Glossary/字符编码 -tags: - - 术语 - - 术语表 -translation_of: Glossary/character_encoding ---- -

一套编码系统定义字节与文本间的映射。一连串字节文本能让不同文本解释得以进行。我们指明一套特定编码系统时(如 UTF-8),也就指明了字节得以解释的方式。

- -

例如,我们通常在 HTML 里声明 UTF-8 字符编码,使用如下:

- -
-
<meta charset="utf-8">
- -

这就确保你在 HTML 文档中可以使用几乎任何一种人类语言中的字符,并且会稳定显示。

-
- -

 了解更多

- -

常识

- - diff --git "a/files/zh-cn/glossary/\345\271\202\347\255\211/index.html" "b/files/zh-cn/glossary/\345\271\202\347\255\211/index.html" deleted file mode 100644 index cc8b22c143..0000000000 --- "a/files/zh-cn/glossary/\345\271\202\347\255\211/index.html" +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: 幂等 -slug: Glossary/幂等 -tags: - - Glossary - - WebMechanics -translation_of: Glossary/Idempotent ---- -

一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。在正确实现的条件下, {{HTTPMethod("GET")}} , {{HTTPMethod("HEAD")}} , {{HTTPMethod("PUT")}} 和 {{HTTPMethod("DELETE")}}  等方法都是幂等的,而  {{HTTPMethod("POST")}}  方法不是。所有的 {{glossary("safe")}} 方法也都是幂等的。

- -

幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同。例如,第一次调用 {{HTTPMethod("DELETE")}} 方法有可能返回 {{HTTPStatus("200")}} ,但是后续的请求可能会返回 {{HTTPStatus("404")}} 。 {{HTTPMethod("DELETE")}} 的言外之意是,开发者不应该使用 DELETE 法实现具有删除最后条目功能的 RESTful API。

- -

需要注意的是,服务器不一定会确保请求方法的幂等性,有些应用可能会错误地打破幂等性约束。

- -

GET /pageX HTTP/1.1 幂等的。连续调用多次,客户端接收到的结果都是一样的:

- -
GET /pageX HTTP/1.1
-GET /pageX HTTP/1.1
-GET /pageX HTTP/1.1
-GET /pageX HTTP/1.1
-
- -

POST /add_row HTTP/1.1 是幂等的。如果调用多次,就会增加多行记录:

- -
POST /add_row HTTP/1.1
-POST /add_row HTTP/1.1   -> Adds a 2nd row
-POST /add_row HTTP/1.1   -> Adds a 3rd row
-
- -

DELETE /idX/delete HTTP/1.1 幂等的,即便是不同请求之间接收到的状态码不一样:

- -
DELETE /idX/delete HTTP/1.1   -> Returns 200 if idX exists
-DELETE /idX/delete HTTP/1.1   -> Returns 404 as it just got deleted
-DELETE /idX/delete HTTP/1.1   -> Returns 404
- -

了解更多

- -

基本知识

- - - -

技术知识

- - diff --git "a/files/zh-cn/glossary/\345\274\202\346\255\245/index.html" "b/files/zh-cn/glossary/\345\274\202\346\255\245/index.html" deleted file mode 100644 index 0bc0353e3d..0000000000 --- "a/files/zh-cn/glossary/\345\274\202\346\255\245/index.html" +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: 异步 -slug: Glossary/异步 -tags: - - 异步 - - 术语表 -translation_of: Glossary/Asynchronous ---- -

异步两个或两个以上的对象或事件同时存在或发生(或多个相关事物的发生无需等待其前一事物的完成)。在计算机技术中,"异步"一词被用于两大语境。

- -
-
网络与通信
-
-

异步通信是一种在双方或多方之间交换消息的方式。其中每个参与方各自在他们方便或可操作的情况下接收并处理消息,而不是在收到消息后立即进行处理。 另外,消息的发送无需等待确认信息,前提是如果出现问题,接收方将请求更正或以其他方式处理该情况。

- -

对人类来说,电子邮件就是一种异步通信方式;发送者发送了一封邮件,接着接收者会在方便时读取和回复该邮件,而不是马上这样做。双方可以继续随时发送和接收信息,而无需双方安排何时进行操作。

- -

在软件进行异步通信时,一个程序可能会向另一软件(如服务器)请求信息,并在等待回复的同时继续执行其他操作。例如,AJAX(Asynchronous JavaScript and {{Glossary("XML")}})编程技术(现在通常简写为"Ajax",不过现在的应用不常用XML,而是用{{Glossary("JSON")}})就是这样一种机制,它通过HTTP从服务器请求较少的数据,当结果可被返回时才返回结果,而不是立即返回。

-
-
软件设计
-
-

异步软件设计通过构建代码扩展了异步的概念,按照这种设计编写的代码使得程序能够要求一个任务与先前的一个(或多个)任务一起执行,而无需为了等待它们完成而停止执行。 当后来的任务完成时,程序将使用约定好的机制通知先前的任务,以便让它知道任务已经完成,以及如果有结果存在的话,这个结果是可用的。

- -

还有许多用来实现异步软件的编程技术。查看文章Asynchronous JavaScript来了解它们吧。

-
-
- -

了解更多

- -

技术参考

- - - -

{{IncludeSubnav("/en-US/docs/Glossary")}}

diff --git "a/files/zh-cn/glossary/\346\212\275\350\261\241\347\274\226\347\250\213/index.html" "b/files/zh-cn/glossary/\346\212\275\350\261\241\347\274\226\347\250\213/index.html" deleted file mode 100644 index a7497bdc94..0000000000 --- "a/files/zh-cn/glossary/\346\212\275\350\261\241\347\274\226\347\250\213/index.html" +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: 抽象编程 -slug: Glossary/抽象编程 -tags: - - 名词解释 - - 抽象 - - 编程 - - 编程脚本 - - 编程语言 -translation_of: Glossary/Abstraction ---- -

在计算机编程{{Glossary("computer programming")}}领域中,抽象编程指在研发大型复杂软件系统时,通过抽象的方法来降低编程复杂度,实现系统快速高效设计和开发的编程模式。它将系统各功能实现的技术细节隐藏在相对简单的 {{Glossary("API", "APIs")}}之后。

- -

更多资料

- -

基础知识

- - - -

 

diff --git "a/files/zh-cn/glossary/\346\225\260\345\255\227\350\257\201\344\271\246/index.html" "b/files/zh-cn/glossary/\346\225\260\345\255\227\350\257\201\344\271\246/index.html" deleted file mode 100644 index 0f6702c480..0000000000 --- "a/files/zh-cn/glossary/\346\225\260\345\255\227\350\257\201\344\271\246/index.html" +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 数字证书 -slug: Glossary/数字证书 -translation_of: Glossary/Digital_certificate ---- -

数字证书是一个将公开的{{Glossary("Key", "加密密钥")}}和一个组织绑定的数据文件。 一个数字证书包含一个组织的信息,如公共名称(例如mozilla.org),组织单元(例如Mozilla Corporation)以及位置(例如Mountain View)。数字证书通常由{{Glossary("certificate authority")}}签署,以证明其真实性。

- -

了解更多

- - diff --git "a/files/zh-cn/glossary/\346\225\260\346\215\256\345\272\223/index.html" "b/files/zh-cn/glossary/\346\225\260\346\215\256\345\272\223/index.html" deleted file mode 100644 index d26907d711..0000000000 --- "a/files/zh-cn/glossary/\346\225\260\346\215\256\345\272\223/index.html" +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: 数据库 -slug: Glossary/数据库 -tags: - - 数据库 -translation_of: Glossary/Database ---- -

数据库是一种用于收集已组织好的数据以便于搜索、结构化和扩充的存储系统。

- -

网站开发中, 大多数数据库采用关系型数据库管理系统 (RDBMS) 来组织数据, 通过 {{glossary("SQL")}}语言来编程。 但有些数据库没有遵循上述的组织数据的机制,这类被称作 NoSQL 数据库。

- -

被广泛使用的服务端关系型数据库有 MySQL (或者源于它的 MariaDB ), SQL Server, 和 Oracle Database 等。另一边,出名的 NoSQL 数据库有 MongoDBCassandraRedis等。

- -

浏览器也有他们特有的数据库系统,被称作 {{glossary("IndexedDB")}}。

- - diff --git "a/files/zh-cn/glossary/\346\255\243\345\270\270\346\250\241\345\274\217/index.html" "b/files/zh-cn/glossary/\346\255\243\345\270\270\346\250\241\345\274\217/index.html" deleted file mode 100644 index 3856bd5b35..0000000000 --- "a/files/zh-cn/glossary/\346\255\243\345\270\270\346\250\241\345\274\217/index.html" +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: 正常模式 -slug: Glossary/正常模式 -translation_of: Glossary/Sloppy_mode ---- -

因为翻译原因,正常模式也被翻译为——马虎模式/稀松模式/懒散模式

- -

{{Glossary("ECMAScript")}} 5 以及其后续的版本可以选择性的使用一种新模式——严格模式(strict mode),这种严格模式在多个方面改变了JavaScript的语义,从而使得当出现问题时我们更好的理解到底发生了什么。

- -

常见的,非严格模式——平时我们会称之为正常模式(sloppy mode),这并不是一个官方说法,但是你会经常见到如上的一些说法,其意义就是指代非严格模式,即正常模式。

- -

相关链接

- - diff --git "a/files/zh-cn/glossary/\346\265\217\350\247\210\345\231\250/index.html" "b/files/zh-cn/glossary/\346\265\217\350\247\210\345\231\250/index.html" deleted file mode 100644 index a52951c1b7..0000000000 --- "a/files/zh-cn/glossary/\346\265\217\350\247\210\345\231\250/index.html" +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 浏览器 -slug: Glossary/浏览器 -translation_of: Glossary/Browser ---- -

网页浏览器是一种从 {{Glossary("World Wide Web","Web")}} 获取和显示页面的程序,并且让用户通过 {{Glossary("hyperlink","超链接")}} 访问更多页面。

- -

获悉更多

- -

基础知识

- - - -

下载一个浏览器

- - diff --git "a/files/zh-cn/glossary/\346\270\220\350\277\233\345\242\236\345\274\272/index.html" "b/files/zh-cn/glossary/\346\270\220\350\277\233\345\242\236\345\274\272/index.html" deleted file mode 100644 index 7a0b586b9a..0000000000 --- "a/files/zh-cn/glossary/\346\270\220\350\277\233\345\242\236\345\274\272/index.html" +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 渐进增强 -slug: Glossary/渐进增强 -tags: - - 无障碍 - - 设计 - - 词汇表 -translation_of: Glossary/Progressive_Enhancement ---- -

渐进增强(Progressive enhancement)是一种设计理念,其核心是为尽可能多的用户提供基本内容和功能,同时进一步为现代化浏览器用户提供最佳体验,运行所有需要的代码。

- -

特性检测通常用于确定浏览器是否可以处理高级内容,而polyfill通常用于使用JavaScript构建缺少的功能。

- -

另外请关注无障碍支持 — 尽可能提供备选方案。

- -

这个技术很有用,因为它让Web开发者,在专注开发最强大的网站同时,和某些未知的用户代理在访问网站时发生问题,两者之间达到权衡。 {{Glossary("优雅降级")}} 相关而不同 — 通常被视为与渐进增强相反的方向。实际上,这两种方法都是有效的,并且通常可以相互补充。

- -

了解更多

- -

基本知识

- - diff --git "a/files/zh-cn/glossary/\346\272\220/index.html" "b/files/zh-cn/glossary/\346\272\220/index.html" deleted file mode 100644 index 83090ee98f..0000000000 --- "a/files/zh-cn/glossary/\346\272\220/index.html" +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Origin -slug: Glossary/源 -translation_of: Glossary/Origin ---- -

Web内容的源由用于访问它的{{Glossary("URL")}} 的方案(协议),主机(域名)和端口定义。只有当方案,主机和端口都匹配时,两个对象具有相同的起源。

- -

某些操作仅限于同源内容,而可以使用 CORS 解除这个限制。

- -

同源的例子

- - - - - - - - - - - - -
http://example.com/app1/index.html
- http://example.com/app2/index.html
same origin because same scheme (http) and host (example.com)
http://Example.com:80
- http://example.com
same origin because a server delivers HTTP content through port 80 by default
- -

不同源的例子

- - - - - - - - - - - - - - - - -
http://example.com/app1
- https://example.com/app2
different schemes
http://example.com
- http://www.example.com
- http://myapp.example.com
different hosts
http://example.com
- http://example.com:8080
different ports
- -

了解更多

- -

详细信息,请看同源策略

diff --git "a/files/zh-cn/glossary/\347\246\201\346\255\242\344\277\256\346\224\271\347\232\204\346\266\210\346\201\257\351\246\226\351\203\250/index.html" "b/files/zh-cn/glossary/\347\246\201\346\255\242\344\277\256\346\224\271\347\232\204\346\266\210\346\201\257\351\246\226\351\203\250/index.html" deleted file mode 100644 index 6e14c9b0a1..0000000000 --- "a/files/zh-cn/glossary/\347\246\201\346\255\242\344\277\256\346\224\271\347\232\204\346\266\210\346\201\257\351\246\226\351\203\250/index.html" +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: 禁止修改的消息首部 -slug: Glossary/禁止修改的消息首部 -translation_of: Glossary/Forbidden_header_name ---- -

禁止修改的消息首部指的是不能在代码中通过编程的方式进行修改的HTTP协议消息首部。本文仅讨论相关的HTTP请求首部(关于禁止修改的响应首部,请参考 {{Glossary("Forbidden response header name")}})。

- -

用户代理对这些消息首部保留全部控制权,应用程序无法设置它们。 Names starting with `Sec-` are reserved for creating new headers safe from {{glossary("API","APIs")}} using Fetch that grant developers control over headers, such as {{domxref("XMLHttpRequest")}}.

- -

禁止修改的消息首部包括以 Proxy- 和 Sec- 开头的消息首部,以及下面列出的消息首部:

- - - -
-

注意: 根据最新的规范User-Agent 首部已经从列表中移除。更多内容请参考规范的 forbidden header name list 一节(Firefox 43 实现了对这一更改的支持)。因此,该首部已经可以用于诸如 Fetch 的 Headers 对象,XHR 的 setRequestHeader()? 中。

-
diff --git "a/files/zh-cn/glossary/\347\251\272\345\205\203\347\264\240/index.html" "b/files/zh-cn/glossary/\347\251\272\345\205\203\347\264\240/index.html" deleted file mode 100644 index 6d9fb8d229..0000000000 --- "a/files/zh-cn/glossary/\347\251\272\345\205\203\347\264\240/index.html" +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: 空元素 -slug: Glossary/空元素 -tags: - - Glossary - - 中级 - - 词汇 -translation_of: Glossary/Empty_element ---- -

一个空元素(empty element)可能是 HTML,SVG,或者 MathML 里的一个不能存在子节点(例如内嵌的元素或者元素内的文本)的{{Glossary("element")}}。

- -

HTMLSVG 和 MathML 的规范都详细定义了每个元素能包含的具体内容(define very precisely what each element can contain)。许多组合是没有任何语义含义的,比如一个 {{HTMLElement("audio")}} 元素嵌套在一个 {{HTMLElement("hr")}} 元素里。

- -

在 HTML 中,通常在一个空元素上使用一个闭标签是无效的。例如, <input type="text"></input> 的闭标签是无效的 HTML。

- -

在 HTML 中有以下这些空元素:

- - - -
-

Note: 在极少数情况下,空元素被错误地称为“无效元素”(void elements)。

-
diff --git "a/files/zh-cn/glossary/\347\253\213\345\215\263\346\211\247\350\241\214\345\207\275\346\225\260\350\241\250\350\276\276\345\274\217/index.html" "b/files/zh-cn/glossary/\347\253\213\345\215\263\346\211\247\350\241\214\345\207\275\346\225\260\350\241\250\350\276\276\345\274\217/index.html" deleted file mode 100644 index 659d1e8670..0000000000 --- "a/files/zh-cn/glossary/\347\253\213\345\215\263\346\211\247\350\241\214\345\207\275\346\225\260\350\241\250\350\276\276\345\274\217/index.html" +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: IIFE(立即调用函数表达式) -slug: Glossary/立即执行函数表达式 -tags: - - CodingScripting - - Glossary - - JavaScript - - 术语 -translation_of: Glossary/IIFE ---- -

IIFE( 立即调用函数表达式)是一个在定义时就会立即执行的  {{glossary("JavaScript")}} {{glossary("function","函数")}}。

- -
(function () {
-    statements
-})();
- -

这是一个被称为 {{glossary("Self-Executing Anonymous Function", "自执行匿名函数")}} 的设计模式,主要包含两部分。第一部分是包围在 {{jsxref("Operators/Grouping", "圆括号运算符")}} () 里的一个匿名函数,这个匿名函数拥有独立的词法作用域。这不仅避免了外界访问此 IIFE 中的变量,而且又不会污染全局作用域。

- -

第二部分再一次使用 () 创建了一个立即执行函数表达式,JavaScript 引擎到此将直接执行函数。

- -

示例

- -

当函数变成立即执行的函数表达式时,表达式中的变量不能从外部访问。

- -
(function () {
-    var name = "Barry";
-})();
-// 无法从外部访问变量 name
-name // 抛出错误:"Uncaught ReferenceError: name is not defined"
-
- -

将 IIFE 分配给一个变量,不是存储 IIFE 本身,而是存储 IIFE 执行后返回的结果。

- -
var result = (function () {
-    var name = "Barry";
-    return name;
-})();
-// IIFE 执行后返回的结果:
-result; // "Barry"
- -

了解更多

- -

了解

- - - -

常识

- - - - diff --git "a/files/zh-cn/glossary/\347\254\254\344\270\200\345\255\227\350\212\202\346\227\266\351\227\264/index.html" "b/files/zh-cn/glossary/\347\254\254\344\270\200\345\255\227\350\212\202\346\227\266\351\227\264/index.html" deleted file mode 100644 index 8bcc8f0ce9..0000000000 --- "a/files/zh-cn/glossary/\347\254\254\344\270\200\345\255\227\350\212\202\346\227\266\351\227\264/index.html" +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: 第一字节时间 -slug: Glossary/第一字节时间 -translation_of: Glossary/time_to_first_byte ---- -

第一字节时间(TTFB)是指从浏览器请求页面到从浏览器接收来自服务器发送的信息的第一个字节的时间。这一次包括DNS查找和使用(三次)TCP握手和SSL握手建立连接(如果请求是通过https发出的)。

- - - -

TTFB是从请求开始到响应开始之间所用的时间,以毫秒为单位:

- -
TTFB = responseStart - requestStart
- -

See Also:

- - diff --git "a/files/zh-cn/glossary/\347\256\200\345\215\225\345\244\264\351\203\250/index.html" "b/files/zh-cn/glossary/\347\256\200\345\215\225\345\244\264\351\203\250/index.html" deleted file mode 100644 index c2c1f71d4f..0000000000 --- "a/files/zh-cn/glossary/\347\256\200\345\215\225\345\244\264\351\203\250/index.html" +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: 简单头部 -slug: Glossary/简单头部 -tags: - - HTTP - - 简单头部 - - 跨域 -translation_of: Glossary/Simple_header ---- -

以下的 HTTP headers都可以被认为是简单头部:

- - - -

或者以下客户端头部之一的也可以被认为是简单头部:

- - - -

当只包含简单头部时,一个请求则被视为简单请求并且在CORS中不需要发送{{glossary("preflight request")}}。

- -

Learn more

- - diff --git "a/files/zh-cn/glossary/\347\256\227\346\263\225/index.html" "b/files/zh-cn/glossary/\347\256\227\346\263\225/index.html" deleted file mode 100644 index 8dcea73131..0000000000 --- "a/files/zh-cn/glossary/\347\256\227\346\263\225/index.html" +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: 算法 -slug: Glossary/算法 -tags: - - 专业术语 - - 编程基础 -translation_of: Glossary/Algorithm ---- -

算法是一个良定义的具体计算步骤的一个序列。

- -

换句话说,一个算法就是由人或机器可重复的解决问题的方法。计算机科学家们使用算法的复杂度(又称O标记法)来表示算法的效率。

- -

例如:

- - - -

常用的算法有寻找最优路径算法,例如“旅行推销员问题”、“树的遍历算法”等。

- -

还有很多机器学习算法例如“线性回归”、“决策树”、“随机森林”、“支持向量机”、“循环神经网络(RNN)”、“长短时记忆(LSTM)神经网络”、“卷积神经网络(CNN)”、“深度卷积神经网络”等。

- -

更多详情

- -

通用知识库(维基百科)

- - - -

技术分析

- - diff --git "a/files/zh-cn/glossary/\347\261\273\345\236\213\350\275\254\346\215\242/index.html" "b/files/zh-cn/glossary/\347\261\273\345\236\213\350\275\254\346\215\242/index.html" deleted file mode 100644 index 7d1eb4c23e..0000000000 --- "a/files/zh-cn/glossary/\347\261\273\345\236\213\350\275\254\346\215\242/index.html" +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Type conversion(类型转换) -slug: Glossary/类型转换 -tags: - - Type - - 术语 - - 类型 -translation_of: Glossary/Type_Conversion ---- -

类型转换(或类型变换;英文:Type conversion, typecasting)是指将数据由一种类型变换为另一种类型。在编译器自动赋值时,会发生隐式转换,但在代码中,也可以用一些写法强制要求进行显式转换。例如:在表达式 5 + 2.0 中,整数 5 被隐式转换为浮点数,但 Number("0x11") 和 "0x11" 则被显式转换为数字 17。

- - diff --git "a/files/zh-cn/glossary/\347\274\226\350\257\221/index.html" "b/files/zh-cn/glossary/\347\274\226\350\257\221/index.html" deleted file mode 100644 index 0e11863653..0000000000 --- "a/files/zh-cn/glossary/\347\274\226\350\257\221/index.html" +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: 编译 -slug: Glossary/编译 -translation_of: Glossary/Compile ---- -

编译是将相同的程序从一种计算机程序语言转换到另一种语言计算机语言的过程。编译器是运行上述任务的软件。有时候,任务也被称为“汇编”或“构建”,这通常表示不仅仅编译完成,例如,用二进制格式进行打包。

- -

通常,编译器转换一个人类理解的高级语言例如c或者java到机器语言,例如cpu理解的汇编语言。一些编译器转化同级别语言的被称为转换器或者交叉编译器,例如从TypeScript到jiavascript的编译。这些通常被理解为效率工具。

- -

绝大多数编译器以预先编译(AOT)或实时编译(JIT)形式工作。作为一个开发者,你通常使用命令行或者集成开发环境(IDE)调用预先编译(AOT)的编译器。最出名的就是gcc编译器了。

- -

实时编译器通常是用来提高性能的,令你没有感知的。例如在浏览器中,Firefox的SpiderMonkey的JavaScript引擎又一个内置的实时编译器会在你浏览时将网页中的JavaScript代码编译为机器码,从而提供运行效率。类似WebAssembly的项目正在使这些工作做的更好。

- -

了解更多

- -

基础知识

- - - -

学习资料

- - diff --git "a/files/zh-cn/glossary/\347\274\226\350\257\221\346\227\266\351\227\264/index.html" "b/files/zh-cn/glossary/\347\274\226\350\257\221\346\227\266\351\227\264/index.html" deleted file mode 100644 index 8c94f6fa5f..0000000000 --- "a/files/zh-cn/glossary/\347\274\226\350\257\221\346\227\266\351\227\264/index.html" +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: 编译时间 -slug: Glossary/编译时间 -translation_of: Glossary/Compile_time ---- -

编译时间是指程序从被加载到程序被解析完成所用的时间。

- -

学习更多

- -

基础知识

- - - -

 

diff --git "a/files/zh-cn/glossary/\350\257\255\344\271\211/index.html" "b/files/zh-cn/glossary/\350\257\255\344\271\211/index.html" deleted file mode 100644 index 54cb20f0b9..0000000000 --- "a/files/zh-cn/glossary/\350\257\255\344\271\211/index.html" +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Semantics(语义) -slug: Glossary/语义 -tags: - - 编程 - - 语义 - - 语义化 -translation_of: Glossary/Semantics ---- -

在编程中,语义指的是一段代码的含义 — 例如 "运行这行 JavaScript 代码会产生怎样的影响?", 或者 "这个 HTML 的元素有什么作用,扮演了什么样的角色"(而不只是 "它看上去像是什么?"。)

- -

JavaScript 中的语义

- -

JavaScript 中,考虑一个函数,该函数接受一个字符串参数,然后返回一个以该字符串为文本内容的{{htmlelement("li")}}元素。如果该函数调用是build('Peach'),你会需要去看代码才能理解该函数做了什么吗,如果是createLiWithContent('Peach')呢?

- -

CSS 中的语义

- -

CSS 中,考虑给一个列表设置样式,li 元素代表不同类型的水果。通过 div > ul > li,你能知道 DOM 的那一部分会被选择中吗?但如果是 .fruits__item 呢?

- -

HTML 中的语义

- -

HTML 中,例如,{{htmlelement("h1")}} 元素是一个语义化元素,赋予了它包裹着的文本“这个页面中最高级别标题功能“的角色 (或含义) 。

- -
<h1>This is a top level heading</h1>
- -

默认情况下,绝大多数浏览器的 user agent stylesheet 将会赋予一个 {{htmlelement("h1")}} 元素很大的字号尺寸从而使它看上去更像是一个标题(虽然你可以把它格式化为任何你想要的样式),但是更重要的是它的语义会被在很多地方以不同的方式被使用到, 例如搜索引擎会把它包含的内容作为一个重要的关键词,从而影响这个页面在搜索结果中的排序(参见{{ glossary ("SEO")}}),而且屏幕阅读器会使用它来帮助视障用户更好的使用这个页面。

- -

另一方面,你可以通过样式(CSS)来让任何的元素看上去像是一个最高级别的标题,就像下面所展示的方法一样:

- -
<span style="font-size: 32px; margin: 21px 0;">Is this a top level heading?</span>
- -

这将会把这个元素渲染得像是一个最高级别的标题,但是它的值没有对应到最“最高级别标题”这一语义,所以在此之上,它不会获得更多额外的描述(只是一个普通“span”元素而不是“最高级别标题”这一语义)。所以在恰当的需求下使用恰当的HTML元素是一个不错的主意。

- -

HTML should be coded to represent the data that will be populated and not based on its default presentation styling. Presentation (how it should look), is the sole responsibility of CSS.

- -

Some of the benefits from writing semantic markup are as follows:

- - - -

When approaching which markup to use, ask yourself, "What element(s) best describe/represent the data that I'm going to populate?" For example, is it a list of data?; ordered, unordered?; is it an article with sections and an aside of related information?; does it list out definitions?; is it a figure or image that needs a caption?; should it have a header and a footer in addition to the global site-wide header and footer?; etc.

- -

语义化元素

- -

这是一些语义化的元(source)。

- - - -

了解更多

- - diff --git "a/files/zh-cn/glossary/\350\257\267\346\261\202\345\244\264/index.html" "b/files/zh-cn/glossary/\350\257\267\346\261\202\345\244\264/index.html" deleted file mode 100644 index 666ace7ea4..0000000000 --- "a/files/zh-cn/glossary/\350\257\267\346\261\202\345\244\264/index.html" +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Request header(请求头) -slug: Glossary/请求头 -tags: - - HTTP - - 术语 -translation_of: Glossary/Request_header ---- -

请求头是 {{glossary("header", "HTTP 头")}}的一种,它可在 HTTP 请求中使用,并且和请求主体无关 。某些请求头如 {{HTTPHeader("Accept")}}、{{HTTPHeader("Accept-Language", "Accept-*")}}、 {{HTTPHeader("If-Modified-Since", "If-*")}} 允许执行条件请求。某些请求头如:{{HTTPHeader("Cookie")}}, {{HTTPHeader("User-Agent")}} 和 {{HTTPHeader("Referer")}} 描述了请求本身以确保服务端能返回正确的响应。

- -

并非所有出现在请求中的 HTTP 首部都属于请求头,例如在 {{HTTPMethod("POST")}} 请求中经常出现的 Content-Length 实际上是一个代表请求主体大小的 entity header,虽然你也可以把它叫做请求头。

- -

此外,CORS 定义了一个叫做 {{glossary('simple header', 'simple headers')}} 的集合,它是请求头集合的一个子集。如果某次请求是只包含 {{glossary('simple header', 'simple header')}} 的话,则被认为是简单请求,不会触发请求预检({{glossary("preflight request", "preflight")}})。

- -

下面是一个 HTTP 请求的请求头:

- -
GET /home.html HTTP/1.1
-Host: developer.mozilla.org
-User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
-Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
-Accept-Language: en-US,en;q=0.5
-Accept-Encoding: gzip, deflate, br
-Referer: https://developer.mozilla.org/testpage.html
-Connection: keep-alive
-Upgrade-Insecure-Requests: 1
-If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
-If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
-Cache-Control: max-age=0
- -

严格来说在这个例子中的 {{HTTPHeader("Content-Length")}} 不是一个请求头,而是一个实体头({{glossary("entity header")}}):

- -
POST /myform.html HTTP/1.1
-Host: developer.mozilla.org
-User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
-Content-Length: 128
-
- -

深入了解

- -

技术信息

- - diff --git "a/files/zh-cn/glossary/\351\200\232\347\224\250\351\246\226\351\203\250/index.html" "b/files/zh-cn/glossary/\351\200\232\347\224\250\351\246\226\351\203\250/index.html" deleted file mode 100644 index acb1f99edf..0000000000 --- "a/files/zh-cn/glossary/\351\200\232\347\224\250\351\246\226\351\203\250/index.html" +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: General header(通用首部) -slug: Glossary/通用首部 -tags: - - HTTP - - 术语 -translation_of: Glossary/General_header ---- -

通用首部指的是可以应用于请求和响应中,但是不能应用于消息内容自身的 {{glossary('Header', 'HTTP 首部')}} 。 取决于应用的上下文环境,通用首部可以是{{glossary("Response header", "响应头部")}}或者{{glossary("request header", "请求头部")}}。但是不可以是{{glossary("entity header", "实体头部")}}。

- -

最常见的通用首部包括:{{HTTPHeader('Date')}}、{{HTTPheader("Cache-Control")}} 或 {{HTTPHeader("Connection")}}。

diff --git "a/files/zh-cn/glossary/\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213/index.html" "b/files/zh-cn/glossary/\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213/index.html" deleted file mode 100644 index 4f2793cc69..0000000000 --- "a/files/zh-cn/glossary/\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213/index.html" +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: OOP -slug: Glossary/面向对象编程 -tags: - - 初学者 - - 术语 - - 编写脚本 -translation_of: Glossary/OOP ---- -

OOP(面向对象编程)是一种编程方法,其中数据封装在{{glossary("object","对象")}}中,对象本身在其上运行,而不是其组成部分。

- -

{{glossary("JavaScript")}} 是高度面向对象的。它遵循基于原型的模型(与基于类的模型相反)。

- -

了解更多

- -

常识

- - -- cgit v1.2.3-54-g00ecf