Fixed formatting and typos

This commit is contained in:
Sherman
2019-10-14 20:29:55 +01:00
committed by Kristofer Koishigawa
parent 450f691926
commit 85164b3cd9
7 changed files with 23 additions and 16 deletions

View File

@ -6,11 +6,11 @@ challengeType: 2
---
## Description
<section id='description'> <code>0</code>在开发过程中,能够检查代码中发生的情况非常重要。 Node只是一个JavaScript环境。与客户端JavaScript一样您可以使用控制台显示有用的调试信息。在本地计算机上您将在终端中看到控制台输出。在Glitch上您可以打开屏幕下方的日志。您可以使用“日志”按钮切换日志面板左上角在应用名称下<code>0</code>要开始使用只需在控制台中打印经典的“Hello World”即可。我们建议在应对这些挑战时保持日志面板处于打开状态。阅读日志您可以了解可能发生的错误的性质。
<section id='description'> 在开发过程中,能够检查代码中发生的情况非常重要。 Node只是一个JavaScript环境。与客户端JavaScript一样您可以使用控制台显示有用的调试信息。在本地计算机上您将在终端中看到控制台输出。在Glitch上您可以打开屏幕下方的日志。您可以使用“日志”按钮切换日志面板左上角在应用名称下。 要开始使用只需在控制台中打印经典的“Hello World”即可。我们建议在应对这些挑战时保持日志面板处于打开状态。阅读日志您可以了解可能发生的错误的性质。
</section>
## Instructions
<section id='instructions'> <code>0</code>修改<code>myApp.js</code>文件以将“Hello World”记录到控制台。
<section id='instructions'> 修改<code>myApp.js</code>文件以将“Hello World”记录到控制台。
</section>
## Tests

View File

@ -6,12 +6,19 @@ challengeType: 2
---
## Description
<section id='description'> <code>0</code>我们可以使用<code>res.sendFile(path)</code>方法响应文件。 <code>0</code>您可以将它放在<code>app.get('/', ...)</code>路由处理程序中。在幕后此方法将根据其类型设置适当的标头以指示您的浏览器如何处理您要发送的文件。然后它将读取并发送文件。此方法需要绝对文件路径。我们建议您使用Node全局变量<code>__dirname</code>来计算路径。 <code>0</code>例如<code>absolutePath = __dirname + relativePath/file.ext</code><code>0</code>要发送的文件是<code>/views/index.html</code> 。尝试“显示”你的应用程序你应该看到一个很大的HTML标题以及我们稍后将使用的表单......),没有应用任何样式。 <code>0</code>注意您可以编辑上一个挑战的解决方案也可以创建一个新挑战。如果您创建新解决方案请记住Express会从上到下评估路由。它执行第一个匹配的处理程序。您必须注释掉前面的解决方案否则服务器将继续使用字符串进行响应。
<section id='description'> 我们可以使用<code>res.sendFile(path)</code>方法响应文件。 您可以将它放在<code>app.get('/', ...)</code>路由处理程序中。在幕后此方法将根据其类型设置适当的标头以指示您的浏览器如何处理您要发送的文件。然后它将读取并发送文件。此方法需要绝对文件路径。我们建议您使用Node全局变量<code>__dirname</code>来计算路径。 例如:
```js
absolutePath = __dirname + relativePath/file.ext
```
</section>
## Instructions
<section id='instructions'>
要发送的文件是<code>/views/index.html</code> 。尝试“显示”你的应用程序你应该看到一个很大的HTML标题以及我们稍后将使用的表单......),没有应用任何样式。
<strong>注意:</strong> 您可以编辑上一个挑战的解决方案也可以创建一个新挑战。如果您创建新解决方案请记住Express会从上到下评估路由。它执行第一个匹配的处理程序。您必须注释掉前面的解决方案否则服务器将继续使用字符串进行响应。
</section>
## Tests

View File

@ -6,12 +6,12 @@ challengeType: 2
---
## Description
<section id='description'> <code>0</code>虽然HTML服务器提供您猜对了HTML但API提供数据。 <dfn>REST</dfn> REpresentational State TransferAPI允许以简单的方式进行数据交换而无需客户端知道有关服务器的任何细节。客户端只需要知道资源的位置URL以及它想要对其执行的操作动词。当您获取某些信息而不修改任何信息时将使用GET动词。目前用于在Web上移动信息的首选数据格式是JSON。简单地说JSON是一种将JavaScript对象表示为字符串的便捷方式因此可以轻松传输。 <code>0</code>让我们通过在路径<code>/json</code>处创建一个以JSON响应的路由来创建一个简单的API。您可以像往常一样使用<code>app.get()</code>方法执行此操作。在路由处理程序内部使用方法<code>res.json()</code> ,将对象作为参数传入。此方法关闭请求 - 响应循环返回数据。在幕后它将有效的JavaScript对象转换为字符串然后设置相应的标题以告诉您的浏览器您正在提供JSON并将数据发回。有效对象具有通常的结构<code>{key: data}</code> 。数据可以是数字,字符串,嵌套对象或数组。数据也可以是变量或函数调用的结果,在这种情况下,它将在转换为字符串之前进行评估。 <code>0</code>将对象<code>{"message": "Hello json"}</code>作为JSON格式的响应提供给对路由<code>/json</code>的GET请求。然后将浏览器指向your-app-url / json您应该在屏幕上看到该消息。
<section id='description'> 虽然HTML服务器提供您猜对了HTML但API提供数据。 <dfn>REST</dfn> REpresentational State TransferAPI允许以简单的方式进行数据交换而无需客户端知道有关服务器的任何细节。客户端只需要知道资源的位置URL以及它想要对其执行的操作动词。当您获取某些信息而不修改任何信息时将使用GET动词。目前用于在Web上移动信息的首选数据格式是JSON。简单地说JSON是一种将JavaScript对象表示为字符串的便捷方式因此可以轻松传输。 让我们通过在路径<code>/json</code>处创建一个以JSON响应的路由来创建一个简单的API。您可以像往常一样使用<code>app.get()</code>方法执行此操作。在路由处理程序内部使用方法<code>res.json()</code> ,将对象作为参数传入。此方法关闭请求 - 响应循环返回数据。在幕后它将有效的JavaScript对象转换为字符串然后设置相应的标题以告诉您的浏览器您正在提供JSON并将数据发回。有效对象具有通常的结构<code>{key: data}</code> 。数据可以是数字,字符串,嵌套对象或数组。数据也可以是变量或函数调用的结果,在这种情况下,它将在转换为字符串之前进行评估。
</section>
## Instructions
<section id='instructions'>
将对象<code>{"message": "Hello json"}</code>作为JSON格式的响应提供给对路由<code>/json</code>的GET请求。然后将浏览器指向 <code>your-app-url/json</code>,您应该在屏幕上看到该消息。
</section>
## Tests

View File

@ -7,12 +7,12 @@ challengeType: 2
## Description
<section id='description'>
HTML服务器通常有一个或多个用户可以访问的目录。您可以放置应用程序所需的静态资产样式表脚本图像。在Express中您可以使用中间件<code>express.static(path)</code>来实现此功能,其中参数是包含资产的文件夹的绝对路径。如果您不知道中间件是什么,请不要担心。我们稍后会详细讨论它。基本上,中间件是拦截路由处理程序,添加某种信息的函数。需要使用<code>app.use(path, middlewareFunction)</code>方法<code>app.use(path, middlewareFunction)</code> 。第一个路径参数是可选的。如果您没有通过它,将为所有请求执行中间件。 <code>0</code>使用<code>app.use()</code>为所有请求安装<code>express.static()</code>中间件。 assets文件夹的绝对路径是<code>__dirname + /public</code><code>0</code>现在您的应用应该能够提供CSS样式表。从公共文件夹外部将显示挂载到根目录。你的头版现在应该看起来好一点
HTML服务器通常有一个或多个用户可以访问的目录。您可以放置应用程序所需的静态资产样式表脚本图像。在Express中您可以使用中间件<code>express.static(path)</code>来实现此功能,其中参数是包含资产的文件夹的绝对路径。如果您不知道中间件是什么,请不要担心。我们稍后会详细讨论它。基本上,中间件是拦截路由处理程序,添加某种信息的函数。需要使用<code>app.use(path, middlewareFunction)</code>方法<code>app.use(path, middlewareFunction)</code> 。第一个路径参数是可选的。如果您没有通过它,将为所有请求执行中间件。
</section>
## Instructions
<section id='instructions'>
使用<code>app.use()</code>为所有请求安装<code>express.static()</code>中间件。 assets文件夹的绝对路径是<code>__dirname + /public</code> 。 现在您的应用应该能够提供CSS样式表。从公共文件夹外部将显示挂载到根目录。你的头版现在应该看起来好一点!
</section>
## Tests

View File

@ -6,13 +6,13 @@ challengeType: 2
---
## Description
<section id='description'> <code>0</code>在myApp.js文件的前两行中您可以看到如何轻松创建Express应用程序对象。这个对象有几种方法我们将在这些挑战中学到很多方法。一个基本方法是<code>app.listen(port)</code> 。它告诉您的服务器侦听给定端口,使其处于运行状态。您可以在文件底部看到它。这是内部评论,因为出于测试原因,我们需要应用程序在后台运行。您可能想要添加的所有代码都介于这两个基本部分之间。 Glitch将端口号存储在环境变量<code>process.env.PORT</code> 。它的价值是<code>3000</code><code>0</code>让我们的第一个字符串在Express中路由采用以下结构 <code>app.METHOD(PATH, HANDLER)</code> 。 METHOD是小写的http方法。 PATH是服务器上的相对路径它可以是字符串甚至是正则表达式。 HANDLER是Express匹配路由时调用的功能。 <code>0</code>处理程序采用表单<code>function(req, res) {...}</code> 其中req是请求对象res是响应对象。例如处理程序
<blockquote>function(req, res) {<br> res.send('Response String');<br>}</blockquote> <code>0</code>将提供字符串'Response String'。 <code>0</code>使用<code>app.get()</code>方法为字符串Hello Express提供服务以匹配/ root路径的GET请求。通过查看日志确保您的代码正常工作然后在浏览器中查看结果单击Glitch UI中的“Show Live”按钮
<section id='description'> 在myApp.js文件的前两行中您可以看到如何轻松创建Express应用程序对象。这个对象有几种方法我们将在这些挑战中学到很多方法。一个基本方法是<code>app.listen(port)</code> 。它告诉您的服务器侦听给定端口,使其处于运行状态。您可以在文件底部看到它。这是内部评论,因为出于测试原因,我们需要应用程序在后台运行。您可能想要添加的所有代码都介于这两个基本部分之间。 Glitch将端口号存储在环境变量<code>process.env.PORT</code> 。它的价值是<code>3000</code> 。 让我们的第一个字符串在Express中路由采用以下结构 <code>app.METHOD(PATH, HANDLER)</code> 。 METHOD是小写的http方法。 PATH是服务器上的相对路径它可以是字符串甚至是正则表达式。 HANDLER是Express匹配路由时调用的功能。 处理程序采用表单<code>function(req, res) {...}</code> 其中req是请求对象res是响应对象。例如处理程序
<blockquote>function(req, res) {<br> res.send('Response String');<br>}</blockquote> 将提供字符串'Response String'
</section>
## Instructions
<section id='instructions'>
使用<code>app.get()</code>方法为字符串Hello Express提供服务以匹配/ root路径的GET请求。通过查看日志确保您的代码正常工作然后在浏览器中查看结果单击Glitch UI中的“Show Live”按钮。
</section>
## Tests

View File

@ -6,14 +6,14 @@ challengeType: 2
---
## Description
<section id='description'> <code>0</code>除了GET之外还有另一个常见的http动词它是POST。 POST是用于使用HTML表单发送客户端数据的默认方法。在REST约定中POST用于发送数据以在数据库中创建新项目新用户或新博客文章。我们在这个项目中没有数据库但我们将学习如何处理POST请求。 <code>0</code>在这些请求中数据不会出现在URL中它隐藏在请求正文中。这是HTML请求的一部分也称为有效负载。由于HTML是基于文本的即使您没有看到数据也不意味着它们是秘密的。 HTTP POST请求的原始内容如下所示
<blockquote>POST /path/subpath HTTP/1.0<br>From: john@example.com<br>User-Agent: someBrowser/1.0<br>Content-Type: application/x-www-form-urlencoded<br>Content-Length: 20<br>name=John+Doe&age=25</blockquote> <code>0</code>正如您所见正文被编码为查询字符串。这是HTML表单使用的默认格式。使用Ajax我们还可以使用JSON来处理具有更复杂结构的数据。还有另一种编码类型multipart / form-data。这个用于上传二进制文件。 <code>0</code>在本练习中我们将使用urlencoded主体。 <code>0</code>要解析来自POST请求的数据您必须安装一个包body-parser。该软件包允许您使用一系列中间件这些中间件可以解码不同格式的数据。请参阅<a href="https://github.com/expressjs/body-parser" target="_blank" >此处</a>的文档。 <code>0</code>在package.json中安装body-parser模块。然后在文件的顶部需要它。将其存储在名为bodyParser的变量中。
<code>bodyParser.urlencoded({extended: false})</code>返回处理url编码数据的中间件。 <code>extended=false</code>是一个配置选项告诉解析器使用经典编码。使用它时值可以只是字符串或数组。扩展版本允许更多的数据灵活性但它被JSON击败。将<code>app.use()</code>传递给前一个方法调用返回的函数。像往常一样,必须在需要它的所有路由之前安装中间件。
<section id='description'> 除了GET之外还有另一个常见的http动词它是POST。 POST是用于使用HTML表单发送客户端数据的默认方法。在REST约定中POST用于发送数据以在数据库中创建新项目新用户或新博客文章。我们在这个项目中没有数据库但我们将学习如何处理POST请求。 在这些请求中数据不会出现在URL中它隐藏在请求正文中。这是HTML请求的一部分也称为有效负载。由于HTML是基于文本的即使您没有看到数据也不意味着它们是秘密的。 HTTP POST请求的原始内容如下所示
<blockquote>POST /path/subpath HTTP/1.0<br>From: john@example.com<br>User-Agent: someBrowser/1.0<br>Content-Type: application/x-www-form-urlencoded<br>Content-Length: 20<br>name=John+Doe&age=25</blockquote> 正如您所见正文被编码为查询字符串。这是HTML表单使用的默认格式。使用Ajax我们还可以使用JSON来处理具有更复杂结构的数据。还有另一种编码类型multipart / form-data。这个用于上传二进制文件。 在本练习中我们将使用urlencoded主体。 要解析来自POST请求的数据您必须安装一个包body-parser。该软件包允许您使用一系列中间件这些中间件可以解码不同格式的数据。请参阅<a href="https://github.com/expressjs/body-parser" target="_blank" >此处</a>的文档。
</section>
## Instructions
<section id='instructions'>
在package.json中安装body-parser模块。然后在文件的顶部需要它。将其存储在名为bodyParser的变量中。
<code>bodyParser.urlencoded({extended: false})</code>返回处理url编码数据的中间件。<strong>注意:</strong><code>extended=false</code>是一个配置选项告诉解析器使用经典编码。使用它时值可以只是字符串或数组。扩展版本允许更多的数据灵活性但它被JSON击败。将<code>app.use()</code>传递给前一个方法调用返回的函数。像往常一样,必须在需要它的所有路由之前安装中间件。
</section>
## Tests

View File

@ -7,12 +7,12 @@ challengeType: 2
## Description
<section id='description'>
<code>.env</code>文件是一个隐藏文件用于将环境变量传递给应用程序。这个文件是秘密的没有人可以访问它它可以用来存储你想保密或隐藏的数据。例如您可以存储来自外部服务或数据库URI的API密钥。您还可以使用它来存储配置选项。通过设置配置选项您可以更改应用程序的行为而无需重写某些代码。 <code>0</code>可以从应用程序访问环境变量<code>process.env.VAR_NAME</code><code>process.env</code>对象是一个全局Node对象变量作为字符串传递。按照惯例变量名都是大写的单词用下划线分隔。 <code>.env</code>是一个shell文件因此您不需要在引号中包装名称或值。同样重要的是要注意当您为变量赋值时等号周围不能有空格例如<code>VAR_NAME=value</code> 。通常,您将每个变量定义放在单独的行上。 <code>0</code>让我们添加一个环境变量作为配置选项。将变量<code>MESSAGE_STYLE=uppercase</code>存储在<code>.env</code>文件中。然后告诉您在上一次质询中创建的GET <code>/json</code>路由处理程序,如果<code>process.env.MESSAGE_STYLE</code>等于<code>uppercase</code>则将响应对象的消息转换为<code>uppercase</code> 。响应对象应该成为<code>{"message": "HELLO JSON"}</code>
<code>.env</code>文件是一个隐藏文件用于将环境变量传递给应用程序。这个文件是秘密的没有人可以访问它它可以用来存储你想保密或隐藏的数据。例如您可以存储来自外部服务或数据库URI的API密钥。您还可以使用它来存储配置选项。通过设置配置选项您可以更改应用程序的行为而无需重写某些代码。 可以从应用程序访问环境变量<code>process.env.VAR_NAME</code><code>process.env</code>对象是一个全局Node对象变量作为字符串传递。按照惯例变量名都是大写的单词用下划线分隔。 <code>.env</code>是一个shell文件因此您不需要在引号中包装名称或值。同样重要的是要注意当您为变量赋值时等号周围不能有空格例如<code>VAR_NAME=value</code> 。通常,您将每个变量定义放在单独的行上。
</section>
## Instructions
<section id='instructions'>
让我们添加一个环境变量作为配置选项。将变量<code>MESSAGE_STYLE=uppercase</code>存储在<code>.env</code>文件中。然后告诉您在上一次质询中创建的GET <code>/json</code>路由处理程序,如果<code>process.env.MESSAGE_STYLE</code>等于<code>uppercase</code>则将响应对象的消息转换为<code>uppercase</code> 。响应对象应该成为<code>{"message": "HELLO JSON"}</code>
</section>
## Tests