Node.js相关总结
node是一门技术,并不是一门新的语言。是JavaScript运行环境。
node在解析JavaScript,依靠的是什么?
依靠的是谷歌浏览器中的v8引擎,所以不需要考虑兼容性,node因为是直接用v8引擎去解析,所以没有window对象
二、那么Node.js与JavaScript的区别是什么?
本质:
Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行
Node.js是一个可以快速构建网络服务及应用的平台,是用Javascript语言构建的服务平台,可用于后端建立服务器
区别:
Javascript 主要应用前端 是编程语言 客户端编程语言(需要浏览器的javascript解释器进行解释执行)
node.js 主要应用后端 1个平台 运行环境(一个基于Chrome JavaScript运行时建立的平台,它是对Google V8引擎进行了封装的运行环境)简单的说node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似javascript的结构语法进行编程,在node.js上运行。
三、那么node.js有什么优点和缺点呢?
优点:
1.事件驱动
2.异步编程
3.非阻塞模式的IO
4.轻量高效
缺点:
1.可靠性低
2.单进程,单线程,只支持单核cpu,不能充分的利用多核cpu服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。
四、node.js的语法
node.js的语法就是JavaScript的语法,基本语法与 javascript 一样,这里我们使用exports导出一个函数,然后再另一文件中通过require导入入一个模块例如 :
在 a.js 中写一个函数var hello=function(){ console.log('hello')}export.hello=hello;
在 b.js 中 需要用hello这个函数var a=require('a');a.hello()
什么是模块化?
把代码全部拆分成模块,主要是方便管理和维护,一个文件就是一个模块。
在node中,有一些内置的模块(包),通过require函数引入:
fs 文件系统
http 创建服务
path 路径
querystring 参数模块
url 地址栏
当然也可以自定义模块
当然,node.js还有很多内置的方法,如比较常用的有读文件、写入文件等等。
node.js的常用方法
引入模块:var fs = require('fs')
fs模块的常用方法:
/ fs.writeFile(file,str,'utf8',function(err){ //如果写入成功,这个err为null // if(err){ // throw err; //如果错误,将错误抛出 // } // // 如果文件不存在,会帮你去创建对应的文件,但是不会创建文件夹 // }) // 同步写文件 // fs.writeFileSync(file, data[, options]) // 异步的追加文件 // fs.appendFile(path, data[, options], callback) // 同步的追加文件 // fs.appendFileSync(path, data[, options]) // 异步的创建文件夹 // fs.mkdir(path,function(err){ // console.log(err); //node会报错,但是错误都不会抛出,不会影响后续代码的执行 // }) // 同步的创建文件夹 // fs.mkdirSync(path[, options]) // 异步读文件夹 // fs.readdir(path[, options], callback) //里面的文件以数组的形式表示出来,进行判断,判断是否是文件夹 // 如果是文件夹,继续读文件夹,如果是文件,直接读文件,然后展示 // 同步的读文件夹 // fs.readdirSync(path[, options]) // 异步判断文件或者文件夹是否存在 // fs.access(path[, mode], callback) 能否判断文件夹是否存在 // fs.access("./data",function(err){ //这个方法是可以判断文件和文件夹是否存在 // console.log(err); // console.log('OK'); // }) // 同步判断文件或者文件夹是否存在 // fs.accessSync(path[, mode]) //同步读文件 fs.readFile(file,'utf8',function(err,data){ response.end(data); }) //异步读文件 fs.readFilesync(file,'utf8',function(err,data){ response.end(data); })
五、服务器的搭建
var http = require("http"); //引入http的模块,用来提供服务 var server = http.createServer(); //创建一个服务器 //server监听request事件,callback server.on('request',function(request,response){ //设置请求头 response.writeHead(200,{"Content-Type" : "text/html;charset=utf8"}); // 注意:图片,script,css,文本,html都要与之对应 // response.write("<h1>hello world</h1>"); // // 输出对应的中文的时候,要有对应的格式和对应的编码 // response.end("<h2>hello world</h2>"); //结束,结束必须有,不然表示这个请求和响应没有完成 //接口 if(request.url == "/login.html" && request.method == "GET"){ response.end("这个是登录界面") }else if(request.url == "/register" && request.method == "GET"){ response.end("这个是注册界面") } else if(request.url == "/login" && request.method == "POST"){ response.end("登录成功") } else { response.end("404"); } }); // 服务搭建完成,监听端口 server.listen(8888); //ctrl+c 停止
简略版(基本硬式步骤)
var http = require("http"); var server = http.createServer(); server.on("request",function(request,response){ }) server.listen(8888);