基础
①node.js是一个开发平台,配置很多api,可以直接调用。
②node.js可以开发控制台程序,桌面应用程序,web应用程序。
③可使用nvm控制多个node.js的版本,可使用nvm uese xxx版本号切换。
④进程模块是变量模块,fs模块require('')
非序列模块。
文件操作 ①文件编写:
var fs = require('fs'); //加载
var msg ='hello world'; //实现
fs.writeFile('.txt',msg,'utf8',function(err){
});//调用
②异步和同步:同步是一对,异步是同时;计时器等先放进web连续api,再进数值,再执行。
③读取文件:
var fs = require('fs');
fs.readFile('.txt'[,'utf8'],function(err,data){//传递utf8可直接转数据
data.toString('utf8');//加载fs.readFile
④解决相对路径出错的问题:__dirname
:正在执行的JS文件所在的目录。__filename
:正在执行的JS文件完整的路径。
⑤路径模块的使用:
var fs = require('fs'); //加载
var path = require('path');
var filename = path.join(__ dirname,'.txt');
⑥node.js参数都是错误优先。
⑦创建一个简单http服务器程序:
var http = require('http'); //加载http模块
var server = http.createServer(); //创建一个http服务对象
// requset包含用户请求的数据;响应到向用户响应数据,服务器向客户端响应数据时必须使用response
server.on('request',function(request,res){
/ /监听用户的请求事件//服务器通过设置http响应报文头,告诉游览器使用响应的编码来解析网页
res.setHeader('Content-Type','text/plain;charset= utf-8');// text / html可以读取标签
res.write('hello world');
//响应开始后必须结束
res.end();})
server.listen(8080,function(){//启动服务})
⑧简写http服务程序:
var http = require('http'); //加载http模块
http.createServer(function(req,res){
//获取用户请求路径req.url
res.end();
}).listen(8080,function(){
})
⑨读取html页并响应:
var http = require('http'); //加载http模块
var fs = require('fs'); //读取文件模块
var path = require('path'); //路径路径模块
http.createServer(function(req,res){
if(req.url == '/'|| req.url == '/index'){
fs.readFile(path.join(__ dirname,'htmls','index.html'),function(err,data){
if(err){
throw err;
}
res.end(data);
})
}else if(req.url =='/images/index.png'){
fs.readFile(path.join(__ dirname,'images','index.png'),function(err,data) {
if(err){
throw err;
}
res.end(data);
})
}else if(req.url =='/css/index.css'){
fs.readFile(path.join(__ dirname,'css','index.css'),function(err,data){
if(err){throw err; }
res.setHeader('Content-Type','text/css');
res.end(data);
})}else{}}).listen(8080,function(){})
⑩模拟apach服务:
var http = require('http'); //加载http模块
var fs = require('fs'); //读取文件模块
var path = require('path');//拼接路径模块
var mime = require('mime');
http.createServer(function(req,res){
//获取pulic目录的完整路径
var publicDir = path.join(__dirname,'public');
//根据public路径和用户请求的路径req.url 计算出用户请求静态资源的完整路径
var filename = path.join(publicDir,req.url);
//根据完整路径读取文件
fs.readFile(filename,function(err,data){
if(err){
res.end('文件不存在 404');
}else{
//通过第三方模块mime,判断不同资源对应的Content-Type类型。npm install mime
res.setHeader('Content-Type',mime.getType(filename));
res.end(data);
}
});
}).listen(8080,function(){})
☆ url就是一个标识。
request/response对象
①服务器解析用户提交的http请求报文,结果解析到request对象
②response是在服务器端用来向用户做出响应的对象。
③request的常用api:(http.IncomingMessage)request
④response的常用api:(ServerResponse)response
☆ 设置http状态码:
res.statusCode设置http响应状态码;
res.statusMessage设置http响应状态码对应的消息;
res.writeHead(404,‘Not Found’,{Content-Type:‘text/plain;charset=utf-8’})
res.statusCode = 404;
res.statusMessage = 'Not Found';
npm
①npm是世界上最大的js管理器,最大的软件注册处。
②发现可重用代码,集成代码包到项目中。
③让js开发者共享和重用代码变得更容易,更容易。更新正在被共享的代码
④module模块和封装包的区别:
在node.js的里可以通过需要加载的就是模块模块,不能加载的就是包包 包的英文一个文件或目录,必须有的package.json描述。
⑤package.json是包/项目描述文件;
描述自身的数据是元数据。
⑥package-lock.json提供地址下载,迁移时方便。