node-静态资源文件请求

node-静态资源文件请求

1、node环境的搭建

一、在js的全栈开发中服务器端依赖于node环境,因此首先须要搭建一个node环境,才可以剑气咱们的服务器。从官网上下载相应的安装包以后,直接安装便可(建议安装稳定版本),以后更新node能够直接使用命令行工具进行更新,可是在window系统下比较麻烦。
二、建立一个node服务器项目,先建立一个项目文件,而后在文件夹中使用npm init去初始化咱们的项目,而后根据命令行的提示去描述咱们的项目,最后输入 ‘yes’后会自动建立一个package.json的文件。这一步结束以后,node的环境算是搭建完成了,能够在官网上查看node的文档来对node模块加深理解。 css

clipboard.png

2、node之http模块搭建服务

一、首先在咱们的定义的服务文件server.js中导入http、url、fs模块,
node中的http模块是专用于建立http服务器、http客户端,以及同时实现这些服务器端与客户端之中全部需求进行的全部处理
二、定义一个变量来建立一个服务
var server = http.CreateServer([requestListener])
其中requestListener是一个函数,会被自动添加到‘request’事件,用户指定当接收到客户端请求时所须要执行的处理,该回调函数的指定方法以下
function (request, response) { … }
在此回调函数中,使用两个参数,第一个参数是request是http的IncomingMessage对象,表示客户端请求, 第二个参数是respons是http的ServerResponse对象,表示服务端响应对象。
三、服务器所要监听的地址及端口
server.listen(port, [host],[backlog],[call])
listen有四个参数,其中post是用于指定要监听的端口号,是必填的,当port的参数值为0时,将为http服务器分配一个随机端口号。其他三个参数为可选参数,host用于指定须要监听的地址,若是省略,服务器将监听localhost,backlog是一个整数值,用于指定位于等待队列中的客户端链接的最大数量,callback是一用来指定listening事件触发时调用的回调函数。html

var server = http.createServer(function(request, response) {
    console.log("服务器已打开") 
}
server.listen(1234, iptable["WLAN:1"], function() {
  console.log("监听的服务器是:" + iptable["WLAN:1"] + ":1234");
});

clipboard.png

3、node之url获取路径中的文件名称

一、好比,咱们有一个url地址是: localhost:8080/index.html
index.html就是一个保存在咱们本机上面的一个静态文件。
能够先经过node的url模块来获取到咱们的路径名称里的文件名。
一个URL字符串是一个结构化的字符串对象,它包含多个有意义的组成部分。当被解析时,会返回一个url对象,它包含每一个组成部分做为属性。下图是url的对象包含的属性 node

clipboard.png

url中有一个parse方法,就是可以将url地址进行解析
Url.parse(url.String [, parseQuryString[, slashesDenoteHost]])
第一个参数是urlString要解析的URL字符串,parseQuryString是一个布尔值,若是为true会将查询到的query返回解析成一个对象,slashesDenoteHost也是一个布尔值,若是为true的话则 // 以后至下一个 以前的字符串会被解析做为 host。 例如,//foo/bar 会被解析为 {host: 'foo', pathname: '/bar'} 而不是 {pathname: '//foo/bar'}。 默认为 false。
这是经过本机获取到的url对象,url中包含:express

protocal是一个协议l(http、https)
host为主机名+端口号
port为端口的名称
hash是哈希值
search是查询的参数并带有‘?’
query是查询到的参数
pathname是请求文件的路径及名称
path是请求文件的路径名称及查询的参数
href是一个完整的地址

可是若是解析客户端请求的地址的时候,url是没法彻底解析的,url只能解析一个完整的地址,还有一种能够解析完整的url就是使用express插件。 npm

clipboard.png

4、node之fs模块获取文件

一、对于fs模块中获取文件地的主要方法是使用readFileSync和readFile,两个方法都须要传输路径和回调函数
fs.readFile(path[.options],callback]
异步获取文件方法,该方法当即返回操做结果,在使用同步方法执行的操做结束以前,不能执行后续的代码,在异步中还有一个传递编码格式的可选参数。
fs.readFileSync(path, callback]
同步获取文件方法,该方法将操做结果做为回调函数的参数进行返回,在方法调用以后,能够当即执行后续的代码
而后文件有许多的后缀,如html、css、js、png等等,这些文件类型在MIME中能够查看。json

// 经过异步方法获取文件
    fs.readFile('.'+pathname, 'utf8',function(err, data){
        if(err) {
            response.writeHead(
                404,
                {'Content-Type': 'text/plain'}
            )
            console.log("require file is not find")
        } else{
            response.writeHead(
                200,
                {'Content-Type': suffixMIME + ';charset=utf-8'}
            )
            response.end(data)
        }
    })

启动node,在浏览器地址中输入ip+端口+文件名,效果如图所示 api

clipboard.png

相关文章
相关标签/搜索