node-静态资源文件请求一、node环境搭建1、js全栈开发中,server端依赖node环境,所以需要搭建node环境首先是能够剑我们服务器。从官网下载对应的安装包后,直接安装即可(建议安装稳定版)。更新node后可以直接使用命令行工具更新,但是在window系统下比较麻烦。2.创建一个nodeserver项目,首先创建一个项目文件,然后在文件夹中使用npminit来初始化我们的项目,然后根据命令行提示描述我们的项目,最后输入'yes'就会自动创建一个package.json文件。这一步之后,node的环境就搭建好了。可以在官网查看node的文档,加深对node模块的理解。二、Node的http模块搭建服务1.首先在我们定义的服务文件server.js中导入http、url、fs模块。node中的http模块专门用于创建http服务器,http客户端,并同时实现它们2.定义一个变量来创建服务varserver=http.CreateServer([requestListener])其中requestListener是一个函数,将被自动添加到'request'事件中,用户指定收到客户端请求时需要进行的处理。回调函数指定如下:function(request,response){…}在这个回调函数中,使用了两个参数。第一个参数是请求是http的IncomingMessage对象,代表客户端请求,第二个参数是responses,是http的ServerResponse对象,代表服务器响应对象。3、服务器要监听的地址和端口server.listen(port,[host],[backlog],[call])listen有四个参数,其中post用于指定监听的端口号,是必需的。当port参数值为0时,会给http服务器分配一个随机的端口号。其余三个参数为可选参数,host用于指定监听的地址,如果省略则服务端监听localhost,backlog为整数值,用于指定等待队列中最大客户端连接数,callback是一个用来指定触发监听事件时调用的回调函数。varserver=http.createServer(function(request,response){console.log("Serverison")}server.listen(1234,iptable["WLAN:1"],function(){console.log("Listen服务器为:"+iptable["WLAN:1"]+":1234");});3、node的url获取路径1中的文件名,比如我们有一个url地址:localhost:8080/index.htmlindex.html是保存在我们本地机器上的一个静态文件,可以先通过node的url模块获取我们路径名中的文件名,一个URL字符串是一个结构化的字符串对象,它包含了多个有意义的组成部分.解析的时候会返回一个url对象,里面包含了各个组件作为一个属性,下图是url对象包含的属性,url中有一个parse方法,可以解析url地址Url.parse(url.String[,parseQuryString[,slashesDenoteHost]])第一个参数是urlString要解析的URL字符串,parseQuryString是一个布尔值,如果为true,则返回查询到的query,解析成一个对象,slashesDenoteHost也是一个布尔值,如果为真,//之后和下一个/之前的字符串将被解析为主机。例如,//foo/bar将被解析为{host:'foo',pathname:'/bar'}而不是{pathname:'//foo/bar'}。默认为假。这是通过本机获取到的url对象。url中包含:protocol是一个协议l(http,https)host是主机名+端口号port是端口名hash是哈希值search是带'?的查询参数'query是查询参数pathname是请求文件的路径和名称path是请求文件的路径名查询参数href是一个完整的地址但如果解析客户端请求的地址,则url不能完整resolved,url只能解析一个完整的地址,还有一种解析完整url的方法就是使用express插件。四、node的fs模块获取文件1、fs模块中获取文件的主要方法是使用readFileSync和readFile。两种方法都需要传输路径和回调函数fs.readFile(path[.options],callback]用于异步获取文件方法,该方法立即返回操作结果,后续代码要等到调用者执行的操作后才能执行同步方法完成,异步方法中还有一个可选参数,用于传递编码格式fs.readFileSync(path,callback]同步获取File方法,将运行结果作为回调函数的参数返回。方法后调用后,可以立即执行后面的代码,文件有很多后缀,如html、css、js、png等,这些文件类型都在MIME中列出,可以在.mime中查看。//通过异步方法获取文件fs.readFile('.'+pathname,'utf8',function(err,data){if(err){response.writeHead(404,{'Content-Type':'text/plain'})console.log("requirefileisnotfind")}else{response.writeHead(200,{'Content-Type':suffixMIME+';charset=utf-8'})response.end(data)}})启动节点,在浏览器地址输入ip+端口+文件名,效果如图
