node.js 慢慢的已经成为前端开发必须掌握的技术,仿佛不会node.js 都不好意思说自己是前端,本篇文章就和大家讨论一下node.js 是什么以及普通的语法,算是一个基本的入门
node.js是什么?
概念:node.js不是一门语言,而是js的一个运行环境
特性:事件驱动、非阻塞I/O
作用:实现现代真正意义的前后端分离,帮助前端人员有更大的操作空间
首先让我学习几个Node 公共模块:
http、url、fs、mime、querystring
1. fs: 文件操作模块
fs.writeFile(‘filePath’,’String/buffer’,function(err){
})
fs.readFile(‘filePath’,function(err,data){
})
注:__dirname 获取当前server路径
2. url: 顾名思义,url处理模块
url.parse(urlString,boolean,boolean)
parse这个方法可以将一个url的字符串解析并返回一个url的对象
参数:urlString指传入一个url地址的字符串
第二个参数(可省)传入一个布尔值,默认为false,为true时,返回的url对象中,query的属性为一个对象。
第三个参数(可省)传入一个布尔值,默认为false,为true时,额,我也不知道有什么不同,可以去看看API。
url.parse("http://user:pass@host.com:8080/p/a/t/h?query=string#hash"); 2 /* 3 返回值: 4 { 5 protocol: 'http:', 6 slashes: true, 7 auth: 'user:pass', 8 host: 'host.com:8080', 9 port: '8080', 10 hostname: 'host.com', 11 hash: '#hash', 12 search: '?query=string', 13 query: 'query=string', 14 pathname: '/p/a/t/h', 15 path: '/p/a/t/h?query=string', 16 href: 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash' 17 } 18 没有设置第二个参数为true时,query属性为一个字符串
3. mime:根据路径后缀获取“Content-Type”的值
mime.getType('filePath')
4. querystring
var querystring = require(‘querystring’)
querystring.parese(buffer) // 把post请求发送的字符串转换为json对象
1 querystring.parse("name=whitemu&sex=man&sex=women"); 2 /* 3 return: 4 { name: 'whitemu', sex: [ 'man', 'women' ] } 5 */ 6 querystring.parse("name=whitemu#sex=man#sex=women","#",null,{maxKeys:2}); 7 /* 8 return: 9 { name: 'whitemu', sex: 'man' } 10 */
var http = require(‘http')
-
try-catch 只能捕获同步异常,不能捕获异步异常
模块化:
export
exports.start = start;
- request 对象:<http.IncomingMessage>
request.headers
request.rawHeaders 请求报文头
request.httpVersion
request.method
request.url //打印请求的url域名后的信息
- response对象
response.wirte(’String/buffer’,’utf-8’,function(res){
})
response.end 通知服务器,所有的请求都完成
response.statusCode 设置响应状态码
response.statusMessage 设置响应状态
response.setHeader(‘Content-Type’,’text/plain')
response.writeHead(404,’not found’,{‘Content-Type’:’text/plain;’charset=uft-8''})
模块:modules : 通过require 才叫模块
包:package 必须有一个package.json才能叫一个包、
package.json 文件:包描述文件、项目描述文件
元数据:表述自身的数据
创建package.json : npm init/npm init -y
Node.js 获取用户通过get方式提交的数据,需要用到url模块
var obj = url.prase(‘filePath’,true)
浏览器:重定向,设置响应报文头
res.statusCode(302)
res.statusMessage(found)
res.setHeader(‘Location’,’/path’)
服务器端获取用户post提交的数据
监听requsst对象的data事件 和监听 request的end事件
request.on(‘data’,function(){
})
Buffer.concat(array)