美文网首页
node 随笔 初级

node 随笔 初级

作者: Z_19f4 | 来源:发表于2017-11-26 21:23 被阅读0次

这是一篇 node随笔 我的node水平 处于菜鸟的水平 写这个随笔整理一下自己现在脑中一些混乱的知识 。
这些随笔是基于我看了node.js 入门后所写下来的 我觉得这本书 浅显易懂 对于想入门node的同学 还是蛮好的
我读了这本书 很开心。
围绕实现一个功能来书写的。
目标:
1.用户可以通过浏览器使用应用
2.* 当用户请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单。
3.* 用户可以选择一个图片并提交表单,随后文件将被上传到[http://domain/upload] (http://domain/upload),该页面完成上传后会把图片显示在页面上。

然后我们来分析一下这些模块:
1.我们需要提供web页面所以我们需要一个http服务
2.对于不同的请求,根据请求的url,我们的服务器需要给予不同的响应,因此我们需要一个路由,用于把请求对应到请求处理程序。
3.当请求服务器接收通过路由传递之后,需要可以对进行处理,因此我们需要最终的请求处理程序。
4.路由还应该能处理POST数据,并且把数据封装成更好友好的格式传递给请求处理程序,因此需要请求数据处理能力

  1. 我们不仅仅处理URL对应的请求,还要把内容显示出来,这意味着我们需要一些 视图逻辑供请求处理程序使用 以便将内容发送给用户的浏览器。
    6.最后用户需要上传图片,所以我们需要上传处理功能来处理这方面的细节。
注释: 对于node.js来说 我们不仅仅在实现一个应用 ,同时还实现了整个HTTP服务。
一个基础的http服务

在项目中创建一个server.js的文件 实现如下代码
实现node中模块之间的调用

var http = require("http");

function start() {
  function onRequest(request, response) {
    console.log("Request received.");
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
  }

  http.createServer(onRequest).listen(8888);
  console.log("Server has started.");
}

exports.start = start;

搞定 使用命令 启动服务

node server.js

打开 http://localhost:8888/ 就可以看见一个写着hello world 的网页
然后在创建一个主文件 index.js 并在其中启动我们的http了 ,
创建index.js的内容如下

var server=require('./server')
server.start();

题外话:

服务器是如何处理请求的

我们来分析一下 我们的回调函数onRequest()的主体部分 。
当回调启动的时候,我们的onRequest函数被触发,有两个参数传入:request和response 。
他们是对象 ,你可以使用他们的方法来处理 HTTP请求的细节,并且响应请求(比如向发出请求的浏览器发回一些东西)。
所以我们的代码是:当收到请求的时候,使用response.writeHead()函数发送一个 HTTP状态200和 HTTP头内容类型(content-type),使用response.write()函数在HTTP相应主体中发送文本“hello world”
最后我们调用response.end()完成响应。
request是关于请求细节的内容 目前 我们没有涉及。

如何来进行请求的"路由"

我们要为路由提供请求的 URL和其他需要的GET和POST参数,随后路由根据这些数据来执行相应的代码
(这里的代码对应整应用的第三个部分:一系列在接收请求时真正工作的处理程序 )
因此我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数, 这一功能应当属于路由还是服务器(甚至作为一个模块自身的功能)确实值得探讨,但这里暂定其为我们的HTTP服务器的功能。
我们需要的所有的数据 都会包含在request中,该对象作为onRequest回调函数的第一个参数,但是为了了解这些数据 我们需要了解到 url和querystring模块

我们现在来创建给路由的文件 route.js

function route(pathname) {
  console.log("About to route a request for " + pathname);
}

exports.route = route;
路由给真正的请求程序

添加一个requestHandlers的模块--对每一个请求程序 做出具体的反应

相关文章

  • node 随笔 初级

    这是一篇 node随笔 我的node水平 处于菜鸟的水平 写这个随笔整理一下自己现在脑中一些混乱的知识 。这些随...

  • webApp环境搭建教程

    WebApp初级教程 1. 安装Node.js node 官网 2. 利用Node.js安装cordova 、io...

  • node.js 学习笔记001 :Hello,world !

    node.js 学习笔记001 :Hello,world ! 推荐通过git上的一个Node教程来学习初级nod...

  • Node.js 有什么弊端

    《深入浅出 Node.js》阅读随笔 此文为《为什么选择 Node.js》姊妹篇,简单聊一下 Node.js 的缺...

  • JS DOM入门

    1.JS初级主要就两个作用一、通过Dom找元素二、给元素添加/删除class 2.Node类型Node.ELEME...

  • Node 随笔

    什么是FormData 它是浏览器环境提供的一个特殊的对象,不属于ECMAScript标准 作用就是对二进制数据进...

  • Node.js 有必要写测试用例吗?

    《深入浅出 Node.js》阅读随笔 先说结论:很有必要!不单是 Node.js,除非是作为体验或者 Demo 演...

  • 异步编程的困惑

    《深入浅出 Node.js》阅读随笔 众所周知,Node.js 虽然也有部分同步编程的方式,但主要还是以后异步编程...

  • 发布/订阅模式

    《深入浅出 Node.js》阅读随笔 Node.js 下使用发布/订阅的模式写程序,可以很优雅的解藕业务逻辑,尤其...

  • Node.js 中的单元测试

    《深入浅出 Node.js》阅读随笔 Node.js 中的单元测试与通常后端语言中单元测试大致相同,主要包含断言、...

网友评论

      本文标题:node 随笔 初级

      本文链接:https://www.haomeiwen.com/subject/kgxlbxtx.html