一、首先我们一起认识node:
node是一门技术,并不是一门新的语言。是JavaScript运行环境。
二、那么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还有很多内置的方法,如比较常用的有读文件、写入文件等等。
var fs = require("fs"); // 异步写文件 var obj = { "uname" : "admin", "upassword" : "admin" } var arr = []; // su shu arr.push(obj); var obj2 = { "uname" : "admin2", "upassword" : "admin2" } arr.push(obj2) var str = JSON.stringify(arr); fs.writeFile('./data/03.json',str,'utf8',function(err){ //如果写入成功,这个err为null // console.log(err); if(err){ throw err; //如果错误,将错误抛出 } console.log('文件写入成功') // 如果文件不存在,会帮你去创建对应的文件,但是不会创建文件夹 }) // 同步写文件 fs.writeFileSync(file, data[, options]) // 异步的追加文件 fs.appendFile(path, data[, options], callback) // 同步的追加文件 fs.appendFileSync(path, data[, options]) fs.appendFile("./data/04.json","hello world","utf8",function(err){ console.log(err); console.log('OK') })
五、用node.js创建服务器
了解了node.js的相关知识,知道了一些模块和方法,那么如何运用node.js创建一个服务器呢:
var http = require("http"); //引入http的模块,用来提供服务 var fs = require("fs"); 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.write("<h1>hello world</h1>"); // response.write("<h1>hello world</h1>"); // // 输出对应的中文的时候,要有对应的格式和对应的编码 // response.write("<h1>你好</h1>"); // response.end("<h2>hello world</h2>"); //结束,结束必须有,不然表示这个请求和响应没有完成 // response.end("<h2>hello world</h2>"); // console.log(request.method); // console.log(request.url); if(request.url == "/login.html" && request.method == "GET"){ // response.end("这个是登录界面") fs.readFile("./login.html",'utf8',function(err,data){ response.end(data); }) }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 停止 console.log('服务运行在localhost:8888')