6.22Web全栈开发学习笔记(Node.js Day1)

Node.js Day1

课程日期:2019年11月16日

课程内容

一、Node.js创建第一个应用

  1. 创建http服务器
/**
 * Created by Administrator on 2019/3/20 0020.
 */
/*
* 1.引入http请求
*
* 2.创建http服务器
*   参数1,request 获取url信息
    参数2,response 浏览器返回响应信息
* */
var http=require('http');
http.createServer(function (req,res){
    // 设置http头部  状态  文件类型  字符集
    res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
    //发送响应数据
    res.write("我是node js");
    //设置监听的端口号
    //请求完成之后结束响应
    res.end();
}).listen(8100);
console.log("http://192.168.0.253:8100");

  1. url模块
/* 
  url 模块
    引入url 模块
    var url=require('url');
    方法:
    url.parse() 解析url地址
*/
var url=require('url');
var src='http://www.baidu.com?name=maodou&sex=0';
//解析地址 
//参数1位解析的路径   参数2:可以将地址上的值解析出来
var path=url.parse(src,true);
console.log(path);
  1. 使用http模块+url模块解析路径上的值
var http=require("http");
var url=require("url");
http.createServer(function (req,res){
    res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});

    //解析路径输出路径上的值
    var path=url.parse(req.url,true);
    res.write(path.query.id);

    res.end();
}).listen(8100);

  1. 安装supervisor自启动工具

在命令行中输入

cnpm install –g supervisor  --save

安装完成后即可使用supervisor启动文件

supervisor ****.js

二、Commonjs nodejs中的自定义模块

Commonjs规范的提出,弥补javascript没有标准的缺陷,提供一个类似后端语言的标准库
也就是说commonjs是模块化的标准,nodejs就是commonjs模块化的实现
在nodejs中除了http,url,fs等等都是nodejs的内置模块,可以直接使用
commonjs中自定义模块的实现:
在nodejs中将公共的功能抽离为单独的js文件作为模块,在外部是没有办法访问的(类似后端的私有的属性和方法);要想使用模块,就必须在模块里面通过exports或者module.exports暴露属性或者方法。在需要的模块使用require引入模块。
在这里插入图片描述
Server.js

var http=require('http');
 var ser=http.createServer(function (req,res){
    // 设置http头部  状态  文件类型  字符集
    res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
    //发送响应数据
    res.write("我是node js");
    //设置监听的端口号
    //请求完成之后结束响应
    res.end();
}).listen(8100);
console.log("http://192.168.0.253:8100");

//两种方式导出都可以
// exports.ser=ser;//导出模块
module.exports=ser;

common.js

/*
在js文件里面引入Server.js模块文件
*/
var server=require("./Server.js");//在当前的目录里面找文件 也可以省略.js后缀

todo.js
var stu={
    name:"HHD",
    setwork:function (){
        return "我在跑nodejs"
    }
}
module.exports=stu;

common2.js

var s=require("./todo");
console.log(s.name);
console.log(s.setwork());

list.js

var stu={
    name:"HHD",
    setwork:function (){
        return "我在跑nodejs"
    }
}
module.exports=stu;

common3.js

var s=require("./node_Module/list");
console.log(s);

三、nodejs第三方包的安装

创建 node项目之后先使用命令进入项目文件,安装项目的配置文件package.json文件。
具体方法是:
使用命令

cnpm init

或者

cnpm init –yes (这种表示严格模式命名)

Nodejs的第三方包的使用:
官网是www.npmjs.com

比如安装md5加密第三方包: md5-node包
安装方法:
npm install md5-node –save
使用方法:

var md5=require('md5-node');
console.log(md5('123456')); //e10adc3949ba59abbe56e057f20f883e

四、nodejs中fs模块(文件系统)的使用

读取文件:

var fs=require("fs");
// Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,
// 例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。
// 异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
// 建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞
//异步读取
fs.readFile("content.txt",function (err,data){
    if(err)
    {
        console.log(err);
        return  false;
    }
    console.log(data.toString());
});

//同步读取
var data=fs.readFileSync("content.txt");
console.log(data.toString());

获取文件信息 判断是否是目录还是文件:

//读取文件信息
fs.stat("content.txt",function (err,stat){
    if(err)
    {
        console.log(err);
        return  false;
    }
    console.log("是否为文件"+stat.isFile());
    console.log("是否为目录"+stat.isDirectory());
});

文件的写入 有覆盖 和追加

//异步写入文件   这种文件的写入会覆盖
fs.writeFile("content.txt","我在测试写入文件",function (err){
    if(err)
    {
        console.log(err);
    }
});
//追加文件的写入
var txt="追加文件的写入";
fs.appendFile("content.txt",txt,function (err){
    if(err)
    {
        console.log(err);
    }
});

创建目录

//创建目录   如果目录已经存在不在创建   一般用于图片的上传与下载上
fs.mkdir("./upload",function (err){
     if(err)
     {
        console.log(err);
        return false;
     }
     console.log("创建upload目录成功!");
});

读取目录:

//读取目录
fs.readdir("upload",function (err,files){
    if(err)
    {
        console.log(err);
        return false;
    }
    //打印出当前目录里面的所有目录
    console.log(files);
});

读取固定目录,判断里面的所有子目录是文件还是文件夹:

//读取目录
var filesinfo="upload";
fs.readdir(filesinfo,function (err,files){
    if(err)
    {
        console.log(err);
        return false;
    }
    //打印出当前目录里面的所有目录
    for(var file in files)
    {
        //注意这里面的方法为异步执行
        fs.stat(filesinfo+"/"+files[file],function (error,stat){
            if(error)
            {
                console.log(error);
                return false;
            }
            console.log(files[file],stat.isDirectory()?"是目录":"是文件");
        })  
    }
});

五、创建静态Web服务器

静态Web服务器目录结构
静态Web服务器的目录结构
server.js

//导入http模块
var http=require('http');
//导入fs模块
var fs=require("fs");
//导入path模块
var path=require("path");
var url=require("url");
var Exname=require("./Extname.js");
http.createServer(function (req,res){
    //在这里可以对路径进行解析  获取pathname 这样可避免get传值之类的
    var pathname=url.parse(req.url).pathname;
    //把无效的请求过滤
    if(pathname!="/favicon.ico")
    {
        if(pathname=="/")
        {
            pathname="index.html";//默认
        }
        //根据目录找到对应的文件
        fs.readFile("static/"+pathname,function (error,data){
            if(error)
            {
                console.log("404");
                //在页面404时可以请求404页面
                return false;
            }
            //现在数据可以打印出去  但是文件的类型不一致   text/html   text/css  text/javascript 等等不一致
            //根据后缀名 确认类型
            var aname=path.extname(pathname);
            var exname=Exname(aname);
            res.writeHead(200,{"Content-Type":""+exname+";charset=UTF-8"});
            res.write(data);
            res.end();
        });
    }
}).listen(8100);

Extname.js

var mim=require("./Mime");
module.exports=function (exname){
    return mim[exname];
    // var type="";
    // switch(exname)
    // {
    //     case ".html": type="text/html";break;
    //     case ".css": type="text/css";break;
    //     case ".js": type="text/javascript";break;
    //     case ".json": type="text/json";break;
    //     default : type="text/html";break;
    // }
    // return type;
}

Mime.js

var fs=require("fs");
var data=null;
//读取文件
//异步获取数据暂时外边拿不到
// fs.readFile("mime.json",function (err,res){
//     if(err)
//     {
//         console.log("404");
//         return false;
//     }
//     data=JSON.parse(res.toString());
// });
data=JSON.parse(fs.readFileSync("mime.json").toString());
module.exports=data;

static 文件放入静态的资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值