From 964fa9a0ad5bad5487290bad85656e63de6fbe0d Mon Sep 17 00:00:00 2001 From: "Queen Vinyl Da.i'gyu-Kazotetsu" Date: Sat, 15 Jul 2023 00:03:32 -0700 Subject: [PATCH] Apply suggestions from code review Co-authored-by: A1lo --- files/zh-cn/games/introduction/index.md | 2 +- .../techniques/3d_on_the_web/glsl_shaders/index.md | 6 +++--- .../learn/javascript/first_steps/variables/index.md | 6 +++--- .../server-side/first_steps/website_security/index.md | 8 ++++---- .../react_getting_started/index.md | 4 ++-- files/zh-cn/mozilla/firefox/releases/3/index.md | 2 +- files/zh-cn/web/api/performance/now/index.md | 2 +- .../zh-cn/web/api/webrtc_api/session_lifetime/index.md | 2 +- files/zh-cn/web/css/number/index.md | 2 +- files/zh-cn/web/guide/houdini/index.md | 2 +- files/zh-cn/web/javascript/guide/modules/index.md | 10 +++++----- files/zh-cn/web/javascript/language_overview/index.md | 2 +- .../zh-cn/web/javascript/reference/functions/index.md | 2 +- .../web/performance/critical_rendering_path/index.md | 4 ++-- .../django/web_application_security/index.md | 2 +- files/zh-tw/web/api/node/insertbefore/index.md | 2 +- 16 files changed, 29 insertions(+), 29 deletions(-) diff --git a/files/zh-cn/games/introduction/index.md b/files/zh-cn/games/introduction/index.md index eb2efb3425c1a8..fb47761e305a6c 100644 --- a/files/zh-cn/games/introduction/index.md +++ b/files/zh-cn/games/introduction/index.md @@ -31,7 +31,7 @@ slug: Games/Introduction 2. 提高营销和曝光度。你不限于在某商店推广你的游戏。相反,你可以像其他媒体一样在 Web 宣传和推广你的游戏,利用网络的固有性和共享性接触新客户。 3. 你可以掌握最重要的事项:支付。你不必交付超过收入的 30% 给他人,仅仅就因为你的游戏在他们的生态系统。相反,你可以管理任何你想要的和使用任何你喜欢的付款处理服务。 4. 拥有更多控制权的是,只要你愿意,你可以随时更新游戏。不必着急等待审核通过,仅当其他公司的某某人决定你的关键 bug 修复是否会在今天或明天交付。 -5. 掌握你的数据分析!不必依靠别人作出所有决定,你需要什么分析,你可以收集自己的 — 或选择你最喜欢的第三方平台,来收集有关你的销售和游戏产生的信息。 +5. 掌握你的数据分析!不必依靠别人作出所有决定,你需要什么分析,你可以收集自己的——或选择你最喜欢的第三方平台,来收集有关你的销售和游戏产生的信息。 6. 你可以用你的方式更密切地管理你的客户关系。再也不用苦苦等待只能通过应用商店有限的机制来过滤客户的反馈。用你想要的方式与客户交流,没有中间人。 7. 你的玩家可以随时随地玩你的游戏。因为 Web 是无处不在的,你的顾客可以在手机,平板,家庭手提,个人电脑或其他设备上关注游戏动态。 diff --git a/files/zh-cn/games/techniques/3d_on_the_web/glsl_shaders/index.md b/files/zh-cn/games/techniques/3d_on_the_web/glsl_shaders/index.md index 2faf1c7be0a120..7e88bd61ad2578 100644 --- a/files/zh-cn/games/techniques/3d_on_the_web/glsl_shaders/index.md +++ b/files/zh-cn/games/techniques/3d_on_the_web/glsl_shaders/index.md @@ -5,7 +5,7 @@ slug: Games/Techniques/3D_on_the_web/GLSL_Shaders {{GamesSidebar}} -使用 GLSL 的着色器 (shader), GLSL 是一门特殊的有着类似于 C 语言的语法,在图形管道 (graphic pipeline) 中直接可执行的 OpenGL 着色语言。着色器有两种类型 — 顶点着色器 (Vertex Shader) 和片段着色器 (Fragment Shader). 前者是将形状转换到真实的 3D 绘制坐标中,后者是计算最终渲染的颜色和其他属性用的。 +使用 GLSL 的着色器(shader),GLSL 是一门特殊的有着类似于 C 语言的语法,在图形管道 (graphic pipeline) 中直接可执行的 OpenGL 着色语言。着色器有两种类型——顶点着色器 (Vertex Shader) 和片段着色器(Fragment Shader)。前者是将形状转换到真实的 3D 绘制坐标中,后者是计算最终渲染的颜色和其他属性用的。 GLSL 不同于 JavaScript, 它是强类型语言,并且内置很多数学公式用于计算向量和矩阵。快速编写着色器非常复杂,但创建一个简单的着色器并不难。在这篇文章我们将介绍使用着色器的基础知识,并且构建一个使用 Three.js 的例子来加速代码编写。 @@ -17,7 +17,7 @@ GLSL 不同于 JavaScript, 它是强类型语言,并且内置很多数学公 ### 顶点着色器 -顶点着色器操作 3D 空间的坐标并且每个顶点都会调用一次这个函数。其目的是设置 `gl_Position` 变量 — 这是一个特殊的全局内置变量,它是用来存储当前顶点的位置: +顶点着色器操作 3D 空间的坐标并且每个顶点都会调用一次这个函数。其目的是设置 `gl_Position` 变量——这是一个特殊的全局内置变量,它是用来存储当前顶点的位置: ```glsl void main() { @@ -43,7 +43,7 @@ void main() { 让我们构建一个简单的例子来解释这些着色器的动作。假设你已经看过[Three.js 教程](/zh-CN/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js)并掌握了场景,物体和材质的基本概念。 -> **备注:** 记住你没必要使用 Three.js 或者其他库来编写着色器 — 纯[WebGL](/zh-CN/docs/Web/API/WebGL_API) 完全够了。我们这里使用 Three.js 来制作背景代码更简单和易理解。所以你只需关注着色器代码。Three.js 和其他 3D 库给你抽象了很多东西出来 — 如果你想要用纯 WebGL 创建这个例子,你得写很多其他的代码才能运行。 +> **备注:** 记住你没必要使用 Three.js 或者其他库来编写着色器——纯[WebGL](/zh-CN/docs/Web/API/WebGL_API) 完全够了。我们这里使用 Three.js 来制作背景代码更简单和易理解。所以你只需关注着色器代码。Three.js 和其他 3D 库给你抽象了很多东西出来——如果你想要用纯 WebGL 创建这个例子,你得写很多其他的代码才能运行。 ### 环境设置 diff --git a/files/zh-cn/learn/javascript/first_steps/variables/index.md b/files/zh-cn/learn/javascript/first_steps/variables/index.md index 743fad346f1aed..e616d87bf47ea3 100644 --- a/files/zh-cn/learn/javascript/first_steps/variables/index.md +++ b/files/zh-cn/learn/javascript/first_steps/variables/index.md @@ -67,9 +67,9 @@ if (name === 'Adam') { // ... and so on ... ``` -你可能暂时还没有完全理解这些代码和语法,但是你应该能够理解到 — 如果我们没有变量,我们就不得不写大量的代码去枚举和检查输入的名字,然后去显示它们。这样做显然是低效率和不可行的 — 你没有办法列举出所有可能的输入。 +你可能暂时还没有完全理解这些代码和语法,但是你应该能够理解到——如果我们没有变量,我们就不得不写大量的代码去枚举和检查输入的名字,然后去显示它们。这样做显然是低效率和不可行的——你没有办法列举出所有可能的输入。 -变量的另一个特性就是它们能够存储任何的东西 — 不只是字符串和数字。变量可以存储更复杂的数据,甚至是函数。你将在后续的内容中体验到这些用法。 +变量的另一个特性就是它们能够存储任何的东西——不只是字符串和数字。变量可以存储更复杂的数据,甚至是函数。你将在后续的内容中体验到这些用法。 我们说,变量是用来存储数值的,那么有一个重要的概念需要区分。变量不是数值本身,它们仅仅是一个用于存储数值的容器。你可以把变量想象成一个个用来装东西的纸箱子。 @@ -77,7 +77,7 @@ if (name === 'Adam') { ## 声明变量 -要想使用变量,你需要做的第一步就是创建它 — 更准确的说,是声明一个变量。声明一个变量的语法是在 `var` 或 `let` 关键字之后加上这个变量的名字: +要想使用变量,你需要做的第一步就是创建它——更准确的说,是声明一个变量。声明一个变量的语法是在 `var` 或 `let` 关键字之后加上这个变量的名字: ```js let myName; diff --git a/files/zh-cn/learn/server-side/first_steps/website_security/index.md b/files/zh-cn/learn/server-side/first_steps/website_security/index.md index 2d9bcf6f404eac..bbd3764ffc721d 100644 --- a/files/zh-cn/learn/server-side/first_steps/website_security/index.md +++ b/files/zh-cn/learn/server-side/first_steps/website_security/index.md @@ -46,11 +46,11 @@ XSS 是一个术语,用来描述一类允许攻击者通过网站将客户端 > **备注:** XSS 攻击在历史上较其他类型更为常见。 -有两种主要的方法可以让站点将注入的脚本返回到浏览器 — 通常被称做 反射型 和 持久型 XSS 攻击。 +有两种主要的方法可以让站点将注入的脚本返回到浏览器——通常被称做 反射型 和 持久型 XSS 攻击。 -- 反射型 XSS 攻击发生在当传递给服务器的用户数据被立即返回并在浏览器中原样显示的时候 — 当新页面载入的时候原始用户数据中的任何脚本都会被执行! +- 反射型 XSS 攻击发生在当传递给服务器的用户数据被立即返回并在浏览器中原样显示的时候——当新页面载入的时候原始用户数据中的任何脚本都会被执行! - 举个例子,假如有个站点搜索函数,搜索项被当作 URL 参数进行编码,这些搜索项将随搜索结果一同显示。攻击者可以通过构造一个包含恶意脚本的搜索链接作为参数(例如 `http://mysite.com?q=beer`),然后把链接发送给另一个用户。如果目标用户点击了这个链接,当显示搜索结果时这个脚本就会被执行。正如上述讨论的,这促使攻击者获取了所有需要以目标用户进入站点的信息 — 可能会购买物品或分享联系人信息。 + 举个例子,假如有个站点搜索函数,搜索项被当作 URL 参数进行编码,这些搜索项将随搜索结果一同显示。攻击者可以通过构造一个包含恶意脚本的搜索链接作为参数(例如 `http://mysite.com?q=beer`),然后把链接发送给另一个用户。如果目标用户点击了这个链接,当显示搜索结果时这个脚本就会被执行。正如上述讨论的,这促使攻击者获取了所有需要以目标用户进入站点的信息——可能会购买物品或分享联系人信息。 - 持久型 XSS 攻击:恶意脚本存储在站点中,然后再原样地返回给其他用户,在用户不知情的情况下执行。 @@ -102,7 +102,7 @@ CSRF 攻击允许恶意用户在另一个用户不知情的情况下利用其身 最终的结果就是任何已登陆到站点的用户在点击了提交按钮后都会进行这个交易。John 发财啦! -> **备注:** 这里的诀窍是,John 不需要访问那些用户的 cookie(或者说身份信息) — 用户的浏览器存储了这些信息,而且会自动将其包含在发送给对应服务器的请求中。 +> **备注:** 这里的诀窍是,John 不需要访问那些用户的 cookie(或者说身份信息)——用户的浏览器存储了这些信息,而且会自动将其包含在发送给对应服务器的请求中。 杜绝此类攻击的一种方式是在服务器端要求每个 POST 请求都包含一个用户特定的由站点生成的密钥 ( 这个密钥值可以由服务器在发送用来传输数据的网页表单时提供)。这种方式可以使 John 无法创建自己的表单,因为他必须知道服务器提供给那个用户的密钥值。即使他找出了那个密钥值,并为那个用户创建了表单,他也无法用同样的表单来攻击其他的所有用户。 diff --git a/files/zh-cn/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.md b/files/zh-cn/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.md index a8fbe8076c35e2..a37d6c357bedad 100644 --- a/files/zh-cn/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.md +++ b/files/zh-cn/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.md @@ -351,7 +351,7 @@ ReactDOM.render(, document.getElementById('root')); logo ``` -可以看到, `` 标签的 `src` 属性值是在大括号中的 — `{logo}`. 这是 JSX 识别变量的方式。React 将会识别 `{logo}`,知道您在我们 app 第二行引入的 logo,然后 React 会读取这个文件它并渲染。 +可以看到,`` 标签的 `src` 属性值是在大括号中的——`{logo}`。这是 JSX 识别变量的方式。React 将会识别 `{logo}`,知道你在我们 app 第二行引入的 logo,然后 React 会读取这个文件它并渲染。 让我们试着设置一个我们自己的变量,在 `App` return 之前,添加 `const subject = 'React';`。您的代码现在应该如下所示: @@ -449,7 +449,7 @@ function App(props) { ## 总结 -以上就是我们对 React 的初步认识,包括如何在本地下载它,创建一个初始 app,以及一些基本的操作。在下篇文章,我们将会开始创建我们的第一个 app — 一个任务清单。在我们开始下篇文章之前,让我们先复习下我们现在所学的。 +以上就是我们对 React 的初步认识,包括如何在本地下载它,创建一个初始 app,以及一些基本的操作。在下篇文章,我们将会开始创建我们的第一个 app——一个任务清单。在我们开始下篇文章之前,让我们先复习下我们现在所学的。 在 React 中: diff --git a/files/zh-cn/mozilla/firefox/releases/3/index.md b/files/zh-cn/mozilla/firefox/releases/3/index.md index 76aa7e9b3270bb..0c839384c87836 100644 --- a/files/zh-cn/mozilla/firefox/releases/3/index.md +++ b/files/zh-cn/mozilla/firefox/releases/3/index.md @@ -97,7 +97,7 @@ slug: Mozilla/Firefox/Releases/3 - **附件组件安装更简便。** 你可以更容易的通过第三方下载附件组件并安装它。 - **新的下载管理器。** 新的下载管理器使你更容易的定位下载文件。 - **断点下载。** 现在可以在重启浏览器或重新获得网络连接时继续尚未完成的下载任务。 -- **全屏缩放。** 今后,你可以使用菜单或快捷键,可以缩放整个网页的内容 — 这个比例取决除了文字排版,还取决于更合适的图片排版 . +- **全屏缩放。** 今后,你可以使用菜单或快捷键,可以缩放整个网页的内容——这个比例取决除了文字排版,还取决于更合适的图片排版。 - **标签滚动和快捷菜单。** 通过新的标签滚动和标签快捷菜单可以更容易的定位标签。 - **保存您当前的浏览内容。** 当你退出 Firefox 3 时,Firefox 3 会提示你是否保存当前标签。 - **优化的标签打开方式。** 在标签中打开一个书签文件夹时,会创建一个新标签二不是覆盖现有的。 diff --git a/files/zh-cn/web/api/performance/now/index.md b/files/zh-cn/web/api/performance/now/index.md index 9caa3297324bb0..696b97277646d5 100644 --- a/files/zh-cn/web/api/performance/now/index.md +++ b/files/zh-cn/web/api/performance/now/index.md @@ -68,7 +68,7 @@ Cross-Origin-Opener-Policy: same-origin Cross-Origin-Embedder-Policy: require-corp ``` -这些头确保顶层文档不会与跨源文档共享浏览上下文组。COOP 过程 — 隔离你的文档,潜在的攻击者如果在弹出窗口中打开你的全局对象,就无法访问它,从而防止一组被称为 [XS-Leaks](https://github.com/xsleaks/xsleaks) 的跨源攻击。 +这些头确保顶层文档不会与跨源文档共享浏览上下文组。COOP 过程——隔离你的文档,潜在的攻击者如果在弹出窗口中打开你的全局对象,就无法访问它,从而防止一组被称为 [XS-Leaks](https://github.com/xsleaks/xsleaks) 的跨源攻击。 ## 规范 diff --git a/files/zh-cn/web/api/webrtc_api/session_lifetime/index.md b/files/zh-cn/web/api/webrtc_api/session_lifetime/index.md index 6d79b97ae514e3..19d91f2b29b7c5 100644 --- a/files/zh-cn/web/api/webrtc_api/session_lifetime/index.md +++ b/files/zh-cn/web/api/webrtc_api/session_lifetime/index.md @@ -51,7 +51,7 @@ slug: Web/API/WebRTC_API/Session_lifetime 4. 呼叫者创建并与接收者共享一个唯一的标识符或某种令牌,使得它们之间的呼叫可以由信令服务器上的代码来识别。此标识符的确切内容和形式取决于您。 5. 每个 Peer 连接到一个约定的信令服务器,如 WebSocket 服务器,他们都知道如何与之交换消息。 6. 每个 Peer 告知信令服务器他们想加入同一 WebRTC 会话(由步骤 4 中建立的令牌标识)。 -7. _描述,候选地址等 — 之后会有更多_ +7. _描述、候选地址等——之后会有更多_ ## ICE 重连 diff --git a/files/zh-cn/web/css/number/index.md b/files/zh-cn/web/css/number/index.md index 8b051e593892af..a780eecd61dab2 100644 --- a/files/zh-cn/web/css/number/index.md +++ b/files/zh-cn/web/css/number/index.md @@ -7,7 +7,7 @@ slug: Web/CSS/number ## 语法 -`<数字>` [CSS](/zh-CN/docs/CSS) 数据类型代表一个数字,可为整数或小数。它的语法扩展了{{cssxref("<integer>")}}的数据值。要表示一个小数则加上小数部分 — “."后跟一或多为十进制数字--到任何{{cssxref("<integer>")}}数据值。像{{cssxref("<integer>")}}数据类型一样,\没有任何单位,并不是一个 CSS 尺寸。 +`` [CSS](/zh-CN/docs/Web/CSS) 数据类型代表一个数字,可为整数或小数。它的语法扩展了 {{cssxref("<integer>")}} 的数据值。要表示一个小数则加上小数部分——“."后跟一或多为十进制数字——到任何 {{cssxref("<integer>")}} 数据值。像 {{cssxref("<integer>")}} 数据类型一样,\ 没有任何单位,并不是一个 CSS 尺寸。 ## 插值 diff --git a/files/zh-cn/web/guide/houdini/index.md b/files/zh-cn/web/guide/houdini/index.md index b4b2e0eaf4f846..cfd135f83b8121 100644 --- a/files/zh-cn/web/guide/houdini/index.md +++ b/files/zh-cn/web/guide/houdini/index.md @@ -8,7 +8,7 @@ Houdini 是一组底层 API,它们公开了 CSS 引擎的各个部分,从而 ## Houdini 的优点 -当样式改变时 Houdini 相比 JavaScript[.style](/zh-CN/docs/Web/API/ElementCSSInlineStyle/style) 的方式能够能够更快的解析。浏览器在应用脚本中发现的任何样式更新之前,会对 CSSOM 进行解析 — 包括布局、绘制和合成过程。此外,对于 JavaScript 样式更新,布局、绘制和复合过程也会重复进行。Houdini 代码不会等待第一个渲染周期完成。相反,它被包含在第一个周期中 — 创建可渲染的、可理解的样式。Houdini 为在 JavaScript 中使用 CSS 值提供了一个基于对象的 API。 +当样式改变时 Houdini 相比 JavaScript[.style](/zh-CN/docs/Web/API/ElementCSSInlineStyle/style) 的方式能够能够更快的解析。浏览器在应用脚本中发现的任何样式更新之前,会对 CSSOM 进行解析——包括布局、绘制和合成过程。此外,对于 JavaScript 样式更新,布局、绘制和复合过程也会重复进行。Houdini 代码不会等待第一个渲染周期完成。相反,它被包含在第一个周期中——创建可渲染的、可理解的样式。Houdini 为在 JavaScript 中使用 CSS 值提供了一个基于对象的 API。 Houdini 的 CSS Typed OM 是一个包含类型和方法的 CSS 对象、并且暴露出了作为 JavaScript 对象的值。比起先前基于字符串的,对 [`HTMLElement.style`](/zh-CN/docs/Web/API/HTMLElement/style) 进行操作的方案,对 JavaScript 对象进行操作更符合直觉。每个元素和样式表规则都拥有一个样式对应表,该对应表可以通过 [`StylePropertyMap`](/zh-CN/docs/Web/API/StylePropertyMap) 来获得。 diff --git a/files/zh-cn/web/javascript/guide/modules/index.md b/files/zh-cn/web/javascript/guide/modules/index.md index 864f93760ee347..484b32f94d60f0 100644 --- a/files/zh-cn/web/javascript/guide/modules/index.md +++ b/files/zh-cn/web/javascript/guide/modules/index.md @@ -117,7 +117,7 @@ import { name, draw, reportArea, reportPerimeter } from '/js-examples/modules/ba 使用 [`import`](/zh-CN/docs/Web/JavaScript/Reference/Statements/import) 语句,然后你被花括号包围的用逗号分隔的你想导入的功能列表,然后是关键字 from,然后是模块文件的路径。模块文件的路径是相对于站点根目录的相对路径,对于我们的 `basic-modules` 应该是 `/js-examples/modules/basic-modules`。 -当然,我们写的路径有一点不同 — 我们使用点语法意味“当前路径”,跟随着包含我们想要找的文件的路径。这比每次都要写下整个相对路径要好得多,因为它更短,使得 URL 可移植 — 如果在站点层中你把它移动到不同的路径下面仍然能够工作(修订版 1889482)。 +当然,我们写的路径有一点不同——我们使用点语法意味“当前路径”,跟随着包含我们想要找的文件的路径。这比每次都要写下整个相对路径要好得多,因为它更短,使得 URL 可移植——如果在站点层中你把它移动到不同的路径下面仍然能够工作(修订版 1889482)。 那么看看例子吧: @@ -164,10 +164,10 @@ reportPerimeter(square1.length, reportList); ## 其他模块与标准脚本的不同 -- 你需要注意本地测试 — 如果你通过本地加载 HTML 文件 (比如一个 `file://` 路径的文件), 你将会遇到 CORS 错误,因为 JavaScript 模块安全性需要。你需要通过一个服务器来测试。 +- 你需要注意本地测试——如果你通过本地加载 HTML 文件(比如一个 `file://` 路径的文件),你将会遇到 CORS 错误,因为 JavaScript 模块安全性需要。你需要通过一个服务器来测试。 - 另请注意,你可能会从模块内部定义的脚本部分获得与标准脚本中不同的行为。这是因为模块自动使用严格模式。 - 加载一个模块脚本时不需要使用 `defer` 属性 (see [`