一、关于
本文致力于教你如何使用Node.js开发应用,并将教会你在这个过程中需要的所有“高级”Java知识。看了这篇文章,对Node入门就够了。
二、代码状态
所有代码都经过春哥测试,全部通过。
第三,文章的阅读对象
1.有编程基础。2.想转向Node.js. 3后端的技术发烧友。Node.js新手。
第四,进入话题1。环境设备
请直接上Node.js官网,如下图,点击最新版本下载安装。
Node.js安装完成后,打开终端,在终端中输入以下命令,检查安装是否成功。
上次登录时间:6月27日星期二19:38在控制台上
李月春:~岳春丽$ node -v
v8.1.3
李玉春:~岳春丽$ npm -v
5.0.3
李月春:~岳春丽$
如果能正确显示node和npm的版本,Node.js的安装就成功了。
2.《你好世界》
第一输出模式
好了,我们不废话了,开始我们的第一个Node.js应用:“Hello World”。
李玉春:~岳春丽$节点
>。控制台日志(“你好世界!”);
HelloWorld!
不明确的
>。控制台日志(“从零到一的全栈部落!”);
全栈部落从零到一!
不明确的
>。process.exit()
李月春:~岳春丽$
直接在终端输入命令节点,然后输入一个控制台. log("Hello World!");,输入,可以输出HelloWorld。
简要解释为什么每次打印后都会出现未定义的。原因是输入js代码后,按enter键,节点执行代码后会输出返回值。如果没有返回值,会显示undefined,类似Chrome调试工具。
如上面的代码所示,当您进入process.exit()并按enter键时,您可以退出节点模式。
第二输出模式
上次登录时间:2918年6月17日27:00
李玉春:~岳春丽$ ls
应用程序下载图标
创意云文件库公共
桌面电影
文档音乐
李月春:~岳春丽$ cd Desktop/
liyu chun:desktop yue chunli $ mkdir nodejs入门
李月春:桌面音乐
/Users/liyu chun/Desktop
李宇春:台式机简介岳春丽$ CD Nodejs/
李月春:nodejs岳春丽简介$ pwd
入门/用户/liyu chun/桌面/nodejs
liyu chun:nodejs简介
liyu chun:nodejs岳春丽$ cat helloworld.js简介
控制台日志(“你好世界!”);
liyu chun:nodejs简介岳春丽$ node helloworld.js
HelloWorld!
李月春:nodejs岳春丽简介
命令解释:ls:查看当前路径下的文件和文件夹。Pwd:检查电流路径。Cd桌面:切换到桌面。mkdir nodejs入门:在当前路径下创建nodejs入门文件夹。cd nodejs入门:进入nodejs入门文件夹。Vi helloworld.js:创建一个helloworld.js文件,进入console.log("Hello World!")文件中),保存并退出。Cat helloworld.js:检查helloworld.js文件的内容。节点helloworld.js:在当前路径下执行helloworld.js文件。
PS:如果不熟悉命令行,可以用其他编辑器创建helloworld.js文件,进入console.log("Hello World!"),将文件保存到桌面,然后打开终端,将HelloWorld.js文件直接拖放到终端,直接在终端执行节点helloworld.js输出HelloWorld!。
好了,我承认这个应用有点无聊,来点“干货”吧。
接下来,我们将通过VSCode对Node.js进行编码。
动词 (verb的缩写)基于Node.js 1的完整web应用。用例
让我们简单地设定目标,但它必须是现实的:
用户可以通过浏览器使用我们的应用程序。
当用户请求http://domain/start时,可以看到一个带有文件上传表单的欢迎页面。
用户可以选择一张图片并提交表单,然后文件会上传到http://domain/upload,上传后图片会显示在页面上。
差不多,你现在也可以去谷歌找点东西乱搞一下,完成功能。但我们还不会这么做。
再者,在完成这个目标的过程中,我们不仅需要基础代码,无论代码是否优雅。我们还需要对此进行抽象,以找到构建更复杂的Node.js应用程序的合适方法。
2.应用不同的模块分析
让我们分解这个应用程序。为了实现上述用例,我们需要实现哪些部分?
我们需要提供网页,所以我们需要一个HTTP服务器
对于不同的请求,根据请求的网址,我们的服务器需要给出不同的响应,所以我们需要一个路由来将请求映射到请求处理程序
在请求被服务器接收并通过路由之后,它需要被处理,所以我们需要最终的请求处理程序
路由还应该能够处理POST数据,并将数据封装成更友好的格式,传递给请求处理程序,所以需要请求数据处理功能
我们不仅需要处理对应于网址的请求,还需要显示内容,这意味着我们需要一些视图逻辑来让请求处理程序将内容发送到用户的浏览器
最后,用户需要上传图片,所以我们需要上传处理功能来处理这方面的细节
现在让我们开始实现,从第一部分开始——HTTP服务器。
第六,搭建应用模块1。一个基本的HTTP服务器
使用VSCode创建一个server.js文件,并将该文件保存到桌面上的nodejs条目文件夹中。
在server.js文件中写入以下内容:
让http = require(" http ");
http.createServer(函数(请求,响应){
response.writeHead(200,{ " Content-Type ":" text/plain " });
回复。写(“你好世界”);
response . end();
}).听(8888);
以上代码是一个完整的Node.js服务器,如下图所示,点击VSCode左下角按钮,打开VSCode终端,在终端输入node server.js进行验证。
现在应该看起来清楚多了:我们将一个匿名函数传递给了createServer函数。
这段代码也可以达到同样的目的:
/**
*/
//请求到来的http模块require)Node.js,并分配给http变量。
让http = require(" http ");
//箭头函数
让onRequest =(请求,响应)= > 1;{
response.writeHead(200,{ " Content-Type ":" text/plain " });
回复。写(“你好世界”);
response . end();
}
//将函数作为参数传递
http.createServer(onRequest)。听(8888);
Console.log("请打开http://127.0.0.1:8888 ... "在浏览器中);
也许是我们该问这个问题的时候了:我们为什么要用这个方法?
5.事件驱动回调
事件驱动是Node.js最初的工作方式,这也是它速度如此之快的原因。
当我们使用HTTP.createServer方法时,当然,我们不仅仅希望服务器监听某个端口,我们还希望它在服务器接收到HTTP请求时做些什么。
我们创建了服务器,并向创建它的方法传递了一个函数。每当我们的服务器收到一个请求,这个函数就会被调用。
这就是传说中的回调。我们把一个函数传递给一个方法,这个方法调用这个函数在对应的事件发生时回调。
让我们试试下面的代码:
/**
*/
//请求到来的http模块require)Node.js,并分配给http变量。
让http = require(" http ");
//箭头函数
让onRequest =(请求,响应)= > 1;{
控制台日志(“收到请求。”);
response.writeHead(200,{“Content-Type”:“text/plain;charset = utf-8 " });
response . end();
}
//将函数作为参数传递
http.createServer(onRequest)。听(8888);
控制台日志(“服务器已启动。”);
Console.log("请打开http://127.0.0.1:8888 ... "在浏览器中);
请注意,当我们访问服务器上的网页时,我们的服务器可能会输出“请求已收到”两次。那是因为大多数浏览器在你访问http://localhost:8888/fav icon . ico的时候都会尝试读取http://localhost:8888/。
}
//导出包含启动函数的服务器对象
//对象格式为
/**
* {
*开始
* }
*/
//该对象导入其他文件后可以使用,可以任意名称接收。
exports.start = start
在server.js的当前文件路径下新建一个index.js文件,内容如下:
/**
*/
//从` server `模块导入服务器对象
let server =require('。/server ');
//启动服务器
server . start();
如下图所示运行index.js文件。
我首先在Safari浏览器中打开http://127.0.0.1:8888,浏览器显示如下效果:
请求/已收到。
然后我打开了http://127.0.0.1:8888...在谷歌浏览器中,浏览器渲染如下:
博根:如何“路由”请求“岳春丽$ node index.js”
服务器已启动。
请在您的浏览器中打开http://127.0.0.1:8888...
收到请求/开始。
收到请求/上传。
现在,我们的应用程序可以通过它们的网址路径来区分不同的请求——这使我们能够使用路由(尚未完成)来基于网址路径将请求映射到处理程序。
在我们想要构建的应用程序中,这意味着来自/start和/upload的请求可以用不同的代码来处理。稍后我们将看到这些内容是如何集成的。
现在我们可以编写路由,创建一个名为router.js的文件,并添加以下内容:
/**
*/
函数route(路径名){
console.log("即将路由对"+pathname的请求);
}
exports.route = route
正如您所看到的,这段代码没有做任何事情,但是现在应该做了。在添加更多逻辑之前,我们先来看看路由和服务器如何集成。
首先,让我们扩展服务器的start()函数,将路由函数作为参数传递:
/**
*/
//请求到来的http模块require)Node.js,并分配给http变量。
让http = require(" http ");
让URL = require(" URL ");
//用函数包装前面的内容
让start =(route)= >开始。{
//箭头函数
让onRequest =(请求,响应)= > 1;{
让pathname =url.parse(request.url)。路径名;
控制台日志(“请求“+路径名+”已收到。”);
路线(路径名);
response.writeHead(200,{“Content-Type”:“text/plain;charset = utf-8 " });
response . end();
}
//将函数作为参数传递
http.createServer(onRequest)。听(8888);
控制台日志(“服务器已启动。”);
Console.log("请打开http://127.0.0.1:8888 ... "在浏览器中);
}
exports.start = start
同时,我们会相应地扩展index.js,这样路由功能就可以注入到服务器中:
/**
*/
//从` server `模块导入服务器对象
let server =require('。/server ');
让router =require("。/router ");
//启动服务器
server . start(router . route);
在这里,我们传递的函数仍然没有任何作用。
如果您现在启动应用程序(node index.js,请始终记住此命令行),然后请求一个URL,您将看到应用程序输出的相应信息,这表明我们的HTTP服务器已经在使用路由模块,并将请求的路径传递给路由:
Bogon:如何“路由”请求v 2.0岳春丽$ node index.js
服务器已启动。
请在您的浏览器中打开http://127.0.0.1:8888...
请求/已收到。
关于路由对/的请求
1.《nodejs教程 Node.js 原生开发入门完全教程(上)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《nodejs教程 Node.js 原生开发入门完全教程(上)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1254807.html