Node.js学习笔记(一)

Node.js

  • http模块
//1.引入文件
//2.使用api方法
//3.设置port
const http = require("http");
//req:服务请求的信息;res:服务返回的相关信息
http.createServer((req, res) => {
    //配置响应头的编码格式
    res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
    //发送响应的数据
    res.write("你好!我是Node.js");
    //请求完成后结束响应
    res.end();
}).listen(8100, "localhost", () => {
    console.log("server strat");
});
  • url模块(解析路径)
const http = require("http");
const url = require("url");
//req:服务请求的信息;res:服务返回的相关信息
http.createServer((req, res) => {
    if (req.url!="/favicon.ico") {
        //解析路径及输出路径上的值
        let path=url.parse(req.url,true);
        let query=path.query;
        //配置响应头的编码格式
        res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });
        //发送响应的数据
        res.write("解析路径传值:"+JSON.stringify(query));
        //请求完成后结束响应
        res.end();
    }
}).listen(8100, "localhost", () => {
    console.log("server strat");
});
  • 自启动工具supervisor
    npm install –g supervisor
    安装完成之后启动文件使用 supervisor ****.js
    启动服务之后修改代码会自动启动服务

  • 自定义模块

  1. 在nodejs中将公共的功能抽离为单独的js文件作为模块,在外部是没有办法访问的(类似后端的私有的属性和方法);要想使用模块,就必须在模块里面通过exports或者module.exports暴露属性或者方法。在需要的模块使用require引入模块。注:在nodejs中除了http,url,fs等等都是nodejs的内置模块,可以直接使用。

createServer.js:

const http = require("http");
const url = require("url");
//req:服务请求的信息;res:服务返回的相关信息
http.createServer((req, res) => {
    if (req.url!="/favicon.ico") {
        //解析路径及输出路径上的值
        let path=url.parse(req.url,true);
        let query=path.query;
        //配置响应头的编码格式
        res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });
        //发送响应的数据
        res.write("解析路径传值:"+JSON.stringify(query));
        //请求完成后结束响应
        res.end();
    }
}).listen(8100, "localhost", () => {
    console.log("server strat");
});
//暴露模块
//export default http;
module.exports=http;

server.js:

//请求外部文件(使用相对路径)
//let server=require("./creareServer");
  1. nodejs 可以自动找node_modules文件下的文件 :如果node_modules文件下有文件夹 可在cd进入这个文件 使用命令npm init –yes 安装当前文件的package.json文件,直接请求require(“名字”);

createServer.js:

const url = require("url");
let stuData=require("../model/getData")
module.exports=(req,res)=>{
    if (req.url!="/favicon.ico") {
        //解析路径及输出路径上的值
        let path=url.parse(req.url,true);
        let query=path.query;
        //配置响应头的编码格式
        res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });
        //发送响应的数据
        res.write("解析路径传值:"+JSON.stringify(query));
        //请求完成后结束响应
        res.end();
    }
}

server.js:

const http = require("http");
let server=require("createServer");
//req:服务请求的信息;res:服务返回的相关信息
http.createServer(server).listen(8100, "localhost", () => {
    console.log("server strat");
});
  • Nodejs的第三方包
    第三方包使用建议官网:www.npmjs.com
    比如第三方包: md5-node包
    安装包:npm install md5-node –save
    安装完之后项目里面生成一个node_modules依赖文件

使用:

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

//同步读取
const data=fs.readFileSync("content.txt");
console.log(data.toString());
  1. 获取文件信息
    判断是否是目录还是文件
//读取文件信息
fs.stat("content.txt",function (err,stat){
    if(err)
    {
        console.log(err);
        return  false;
    }
    console.log("是否为文件"+stat.isFile());
    console.log("是否为目录"+stat.isDirectory());
});
  1. 文件的写入 (覆盖,追加)
//异步写入文件   这种文件的写入会覆盖
fs.writeFile("content.txt","我在测试写入文件",function (err){
    if(err)
    {
        console.log(err);
    }
});
//追加文件的写入
let txt="追加文件的写入";
fs.appendFile("content.txt",txt,function (err){
    if(err)
    {
        console.log(err);
    }
});
  1. 读取目录
//读取目录
fs.readdir("upload", (err,files)=>{
    if(err)
    {
        console.log(err);
        return false;
    }
    //打印出当前目录里面的所有目录
    console.log(files);
});

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

  • 静态web服务器

目录结构:
在这里插入图片描述
server.js:

const url = require("url");
const fs = require("fs");
const pathmodule = require("path");
let mime = require("./mime.json");
module.exports = (req, res) => {
    let path = url.parse(req.url);
    let pathname = path.pathname;
    if (pathname != "/favicon.ico") {
        //加载首页
        if (pathname == "/") {
            pathname = "index.html";
        }
        let hname = pathmodule.extname(pathname);
        let extname = mime[hname];
        res.writeHead(200, { "Content-Type": `${extname};charset=utf-8` });
        fs.readFile("static/" + pathname, (err, data) => {
            if (err) {
                throw err;
            }
            res.write(data);
            res.end();
        });
    }

}

readType.js:

const fs=require("fs");
module.exports=(callback)=>{
    // fs.readFile("model/mime.json",(err,data)=>{
    //     if(err)
    //     {
    //         throw err;
    //     }
    //     let json=JSON.parse(data.toString("utf-8"));
    //     callback(json);
    // });
    let json=JSON.parse(fs.readFileSync("model/mime.json").toString("utf-8"));
    return json;
}

app.js:

const http = require("http");
let server=require("./model/server");
http.createServer(server).listen(8100, "localhost", () => {
    console.log("127.0.0.1:8100");
});

static 文件放入静态的资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值