Node.js服务器原理详解

       本文和大家分享的是Node.js服务器原理相关内容,一起来看看吧,希望对大家有所帮助。

  web应用搭建需要什么条件?

  web应用,它需要一个客户端。还需要一个服务器。客户端这边,不需要我们去开发,我们直接通过浏览器就可以实现。而服务端这边需要我们自己开发。我们都知道,我们打开浏览器,比如说我们访问麦子学院。我们打开了这个网站过后,那么这个网站可以显示一个对应的网页。这个网页底层,它应该是一些html代码和css样式+我们的js动态效果来组成我们这个页面的。这些东西,我们要通过客户端浏览器显示出来,那么这个服务器首先要把这个数据给我们显示过来。说明服务器上面有一个专门把这些文本给我写过来的一个程序来帮我实现的。

  这个程序怎么实现呢?

  我们前面学http这个模块的时候,这个模块里面我们说到,这个http它可以创建一个服务端。

  这个服务端,它有一个函数,这个函数可以接收用户请求,并且可以相应用户请求,那么是不是我们可以把所有响应的代码写入到这个响应对象里面。

  它是不是可以响应过去呢?这里我们不应该拼接这个字符串。

  而是从文件里面读取出来。从文件里面读取出来,我们考虑一下,我们自己开发这个程序,它读文件,读我们什么文件呢?读我们的html文件,读我们的css文件,读我们的js文,或者是图片文件。

  这些文件都需要代码来读取。并且读完了过后,还要响应到客户端这边,浏览器才能加载出来,看得到。这样来实现的话,我们每次请求都要开发这样的一个程序来读文件,并且判断这个用户请求的路径是什么。我们是不是每次都要开发这个东西呢?这个时候,我们是不是可以写一段代码,把这些读静态文件的东西全部封装在一起。它只要是请求静态文件,那我们就可以通过这段代码来自动的加载静态文件。然后把它写到浏览器这个客户端来。我们自己来开发这段代码,其实它就是我们一个简易的服务器了。

  它可以将我们的静态文件直接从本地服务端读取出来,写入到浏览器这里。

  其实这个服务器除了而已读取这些静态文件之外,它还有很多功能,那么这些功能,比如解析url并验证,响应静态文件等。服务器只要有了这些功能以后,对于我们开发人员来说,只要安装好这个服务器,我们就只需要开发我们对应的组件就行了。开发我们的静态页面,开发我们的css,开发我们的js,开发我们对应的业务组件逻辑。

  编写这些代码,而这个解析请求参数,验证URL请求路径等等一系列任务都交给我们的服务器来执行。

  所以这些,我们只需要专注于写我们自己需要写的代码,而不需要专注我们的代码到底应该怎么响应到客户端上去,怎么样让浏览器接收到。这些都是服务器来完成的事情。

原文链接:http://www.maiziedu.com/wiki/nodejs/server/

时间: 2024-10-09 00:38:32

Node.js服务器原理详解的相关文章

Node.js继承中的静态类对象(《node.js开发实战详解》书中一些错误的改正)

今天气真好,最近挂掉一些面试之后心情略失落. 神马都是浮云,要永远做好世界第二. 不多提了,你问我心态为啥变好了.-------都是情怀,,. 嗯啊,最近在研究node. 别人问?你这水平还node... 哈哈哈,好伤心.... 不多提了,言归正传. 神马模块化神马的先就不多讲了,就一个module.export和export区别,后者对象的属性属于前者,逆命题不成立. 还有util.inherits(A,B)这个API注意一下A只会继承B的原型方法,原型以外的不会继承.不是说原型中数据是共享的

Tomcat服务器原理详解

[目录]本文主要讲解Tomcat启动和部署webapp时的原理和过程,以及其使用的配置文件的详解.主要有三大部分: 第一部分.Tomcat的简介和启动过程 第二部分.Tomcat部署webapp 第三部分.Tomcat处理一个http请求的过程 [简介] Tomcat依赖<CATALINA_HOME>/conf/server.xml这个配置文件启动server(一个Tomcat实例,核心就是启动容器Catalina). Tomcat部署Webapp时,依赖context.xml和web.xml

node.js的npm详解

1.什么是npm呢 npm(Node Package Manager,node包管理器)是node的包管理器,他允许开发人员在node.js应用程序中创建,共享并重用模块.模块就是可以在不同的项目中重用的代码库.他也可以用来共享完整的node.js代码库. 2.安装模块: 安装npm之后就可以从终端安装模块了. 按Windows键+r,输入cmd,调出命令行窗口.利用cd切换到项目所在的目录,在所建项目的根目录下执行如下命令:npm install [module_name],就可以在项目的根目

node.js中socket.io的使用(node.js开发实战详解一个案例分析)

啊,又是这本书.好像里面有个交互图,呃...那个消息响应的顺序好像与我的程序不同. 其实问题也不大,操作实例,控制台运行该文件app.js开启服务: var io=require('socket.io').listen(8080,{log:false}); io.sockets.on('connection',function (socket){ socket.on('msg',function(data){ console.log(data); if(data.state){ if(data.

[转]js中几种实用的跨域方法原理详解

转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域. 下表给出了相对http://store.company.com/dir/page.html同源检测的结果: 要解决跨域的问题,我们可以使用以下几种方法: 一.通过jsonp跨域 在js中,我们直接用XMLHttpRequ

js中几种实用的跨域方法原理详解(转)

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域. 下表给出了相对http://store.company.com/dir/page.html同源检测的结果: 要解决跨域的问题,我们可以使用以下几种方法: 一.通过jsonp跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同

js 面向对象日历实现原理详解

对于前端开发来说,日历空间在网站里应用的很多,比如:填写表单时,是选取一下事件了--等等.下面就来分析一下怎么用js来写一个自己万年历. 在没有开始之前,我们是先弄明白是什么原理,要通过几个步骤来实现. 第一,我们的知道某一个月的某第一天是星期几. 第二,我们得知道某一个月有一共有几天, 只要有了这两部就可以循环出来了,下面看一下代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http

Storm概念、原理详解及其应用(一)BaseStorm

本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数"wordcount"代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:"知其然,并知其所以然". Storm是什么?为什么要用Storm?为什么不用Spark? 第一个问题,以下概念足以解释: Storm是基于数据流的实时处理系统,提供了大吞吐量的实

kickstart安装系统原理详解

前言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. 常规的办法有什么? 光盘安装系统===>一个服务器DVD内置光驱百千块,百台服务器都配光驱就浪费了,因为一台服务器也就开始装系统能用的上,以后用的机会屈指可数.用USB外置光驱,插来插去也醉了. U盘安装系统===>还是同样的问题,要一台一台服务器插U盘. 网络安装系统(ftp,http,nfs) ===>这个方法不错,只要服务器能联网就可以装系统了