node.js 18讲代码笔记

node.js

模块引用

//app.js

var stuff =  require('./count')

console.log(stuff.counter(['aa','nodejs','react']));
console.log(stuff.add(7,8));

//count.js
var counter = function(arr){
    return "there are " +arr.length + " elements in the array";
}

var add  = function(a,b){
    return `the sum of the 2 number is ${a+b} `;

}

var pi = 7;
// module.exports.counter = counter;
// module.exports.add = add;
// module.exports.pi = pi;

module.exports = {
    counter : counter,
    add: add,
    pi:pi
}

这里是app.js 引用count.js事件

//app.js
var events =  require('events');//事件的一个库

//新增事件
var myEmitter = new events.EventEmitter();

//给事件加绑定函数
myEmitter.on('someEvent',function(message){
    console.log(message);
})

//手动触发事件
myEmitter.emit('someEvent','the event was emitted');

//app.js2

var events =  require('events');//事件的一个库
var util = require('util');//工具库

//定义一个类

var Person = function(name){
    this.name = name
}

//person 类 继承了 events类
util.inherits(Person,events.EventEmitter);
//新建三个对象
var xiaoming = new Person('xiaoming');
var lili = new Person('lili');
var lucy = new Person('lucy');
//把对象放数组中
var person = [xiaoming, lili, lucy];

//循环数组每个对象都有绑定一个事件
person.forEach(function(person){
    person.on('speak',function(message){
        console.log(person.name + "said: " + message);
    })
});

//触发事件
xiaoming.emit('speak','hi');
lucy.emit('speak','I want a curry');

//读写文件 同步 异步

//app.js
//文件系统的库
var fs = require('fs');

//读文件 sync 是同步的意思
var readme = fs.readFileSync('input.txt','utf8');
console.log(readme);

//写文件
fs.writeFileSync('writeMe.txt',"hello world!");

//node 执行javascript的时候是单线程的
//去了sync就是异步了
var read = fs.readFile('writeMe.txt','utf8',function(err,data){
    console.log(data);
});

console.log('finished');


//创建和删除目录 app.js

//文件系统的库
var fs = require('fs');
//unlink 删除 加 sync 后变成同步
fs.unlink('writeMe.txt',function(){
    console.log('delete writeMe.txt file');
});
//创建目录
fs.mkdirSync('stuff');
//删除目录
fs.rmdirSync('stuff');

//app.js2

//文件系统的库
var fs = require('fs');
//创建目录
fs.mkdir('stuff',function(){
    fs.readFile('input.txt','utf8',function(err,data){
        fs.writeFile('./stuff/writeMe.txt',data,function(){
            console.log('copy successfully');
        })
    })
});

web 服务器part1//app.js
var http = require('http');
//创建一个服务器 请求 相应
var sever =  http.createServer(function(request,response){
    console.log('Request received');
    //响应纯文本类型
    response.writeHead(200, {'Content-Type':'text/plain'});
    response.write('hello come to my web!');
    response.end();
})
sever.listen(3000,'127.0.0.1');
console.log('sever started on localhost 3000')

part2 怎么响应json给客户端//app.js

var http = require('http');
var onRequest = function(request,response){
    console.log('Request received');
    //响应json类型
    response.writeHead(200, {'Content-Type':'applacation:json'});
    var myobj = {
        name:'app',
        job:'teacher',
        age:27
    }
    response.end(JSON.stringify(myobj));
}
//创建一个服务器 请求 相应
var sever =  http.createServer(onRequest);
sever.listen(3000,'127.0.0.1');
console.log('sever started on localhost 3000')

part3 怎么响应html文件//app.js

var http = require('http');
var fs = require('fs');
var onRequest = function(request,response){
    console.log('Request received');
    //响应json类型
    response.writeHead(200, {'Content-Type':'text/html'});
    var myReadStream = fs.createReadStream(__dirname + '/index.html','utf8'); 
   myReadStream.pipe(response);
}
//创建一个服务器 请求 相应
var sever =  http.createServer(onRequest);
sever.listen(3000,'127.0.0.1');
console.log('sever started on localhost 3000')


part4 用模块化思想组织//app.js 除了引用库 其他的全写一个函数里,然后再其他页面引用

var http = require('http');
var fs = require('fs');

function startServer(){
    var onRequest = function(request,response){
        console.log('Request received');
        //响应json类型
        response.writeHead(200, {'Content-Type':'text/html'});
        var myReadStream = fs.createReadStream(__dirname + '/index.html','utf8'); 
       myReadStream.pipe(response);
    }
    //创建一个服务器 请求 相应
    var sever =  http.createServer(onRequest);
    sever.listen(3000,'127.0.0.1');
    console.log('sever started on localhost 3000')
}

exports.startServer = startServer;

//count.js

var server = require('./app');
server.startServer();

part5 路由//app.js


var http = require('http');
var fs = require('fs');

function startServer(){
    var onRequest = function(request,response){
        console.log('Request received' + request.url);
      if(request.url==='/'){
        response.writeHead(200, {'Content-Type':'text/html'});
        fs.createReadStream(__dirname + '/index.html','utf8').pipe(response);
      }else if(request.url ==='/home'){
        response.writeHead(200, {'Content-Type':'text/html'});
        fs.createReadStream(__dirname + '/home.html','utf8').pipe(response);
      }else if(request.url==='/js/json'){
        response.writeHead(200, {'Content-Type':'application/json'});
        var jsonObj = {
            name:'yqcznb',
            wr:'Everything will be ok!'
        }
        response.end(JSON.stringify(jsonObj));
      }else{
          response.writeHead(200,{'Content-Type':'text/html'});
          fs.createReadStream(__dirname + '/404.html','utf8').pipe(response);
      }
        
    }
    //创建一个服务器 请求 相应
    var sever =  http.createServer(onRequest);
    sever.listen(3001,'127.0.0.1');
    console.log('sever started on localhost 3001')
}

exports.startServer = startServer;

part6 重构路由代码//app.js

var server = require('./server');
var router = require('./router');
var handler = require('./handler');

var handle = {};
handle["/"] = handler.home;
handle["/home"] = handler.home;
handle["/review"] = handler.review;
handle["/api"] = handler.api_records;
server.startServer(router.route, handle);
//router.js

var fs = require("fs");
function route(handle, pathname, response){
    console.log('Routing a request for ' + pathname);
    if(typeof handle[pathname] === 'function'){
        handle[pathname](response);
    }else{
        response.writeHead(200, {'Content-Type':'text/html'});
        fs.createReadStream(__dirname + '/404.html','utf8').pipe(response);
    }
}

module.exports.route = route;

//handler.js
var fs = require('fs');
function home(response){
    response.writeHead(200, {'Content-Type':'text/html'});
    fs.createReadStream(__dirname + '/index.html','utf8').pipe(response);
}

function review(response){
    response.writeHead(200, {'Content-Type':'text/html'});
    fs.createReadStream(__dirname + '/home.html','utf8').pipe(response);
}

function api_records(response){
    response.writeHead(200, {'Content-Type':'application/json'});
        var jsonObj = {
            name:'yqcznb',
            wr:'Everything will be ok!'
        }
        response.end(JSON.stringify(jsonObj))
}

module.exports = {
    home:home,
    review:review,
    api_records:api_records
}

//server.js
var http = require('http');
var fs = require('fs');

function startServer(route,handle){
    var onRequest = function(request,response){
        console.log('Request received' + request.url);
        route(handle, request.url, response); 
    }
    //创建一个服务器 请求 相应
    var sever =  http.createServer(onRequest);
    sever.listen(3001,'127.0.0.1');
    console.log('sever started on localhost 3001')
}

module.exports.startServer = startServer;

part7 使用GET或POST

//app.js
var server = require('./server');
var router = require('./router');
var handler = require('./handler');

var handle = {};
handle["/"] = handler.home;
handle["/home"] = handler.home;
handle["/review"] = handler.review;
handle["/api"] = handler.api_records;
server.startServer(router.route, handle);

//router.js
var fs = require("fs");
function route(handle, pathname, response,params){
    console.log('Routing a request for ' + pathname);
    if(typeof handle[pathname] === 'function'){
        handle[pathname](response, params);
    }else{
        response.writeHead(200, {'Content-Type':'text/html'});
        fs.createReadStream(__dirname + '/404.html','utf8').pipe(response);
    }
}

module.exports.route = route;

//handler.js
var fs = require('fs');
function home(response){
    response.writeHead(200, {'Content-Type':'text/html'});
    fs.createReadStream(__dirname + '/index.html','utf8').pipe(response);
}

function review(response){
    response.writeHead(200, {'Content-Type':'text/html'});
    fs.createReadStream(__dirname + '/home.html','utf8').pipe(response);
}

function api_records(response, params){
    response.writeHead(200, {'Content-Type':'application/json'});
    response.end(JSON.stringify(params))
}

module.exports = {
    home:home,
    review:review,
    api_records:api_records
}
//index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <form action="/api" method="POST">
        name: <input type="text" name="name">
        age: <input type="text" name="age">
        <input type="submit" value="Submit">
    </form>
</body>
</html>
发布了29 篇原创文章 · 获赞 9 · 访问量 5852

猜你喜欢

转载自blog.csdn.net/Jadeyqc/article/details/102631348