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);