nodejs基础快速上手

 

node 快速了解

hello node.js

console.log("hello Node.js");
let http = require("http");
// request 请求对象   response 响应的对象
let server = http.createServer(function (request, response) {
    // 这是一个写入流  200 :传一个状态码 Content-Type: 传一个什么样的内容给浏览器
    response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});
    // 会出现两次访问
    if(request.url !== "/favicon.ico") {
        // 清除第二次访问
        console.log("访问");
        response.write("hell node.js");
        // 要加上这个, 不然会一直转
        response.end("结束");
    }
});
// 监听 8000 端口
server.listen(8000, "127.0.0.1");
console.log("Server running at http://127.0.0.1:8000/");

模块

// moudule.app.js
var counter = function (arr) {
    return "there are " + arr.length + " el";
}
var adder = function (a, b) {
    return `the sum of the 2 number is ${a+b}`;
}
var PI = 3.14;
// module.exports.counter = counter;
// module.exports.adder = adder;
// module.exports.PI = PI;

module.exports = {
    counter,
    adder,
    PI
}
// module.js
// 模块全部导入
var stuff = require('./module.app')
// 只导入部分模块
var pi = require("./module.app").PI;
var { adder} = require("./module.app")

console.log(stuff.counter([23, 3, 5]));
console.log(stuff.adder(23, 3));
console.log(adder(23, 9));
console.log(stuff.PI);
console.log(pi);

事件

let events = require("events");

// 新增事件对象
let myEmitter = new events.EventEmitter();

// 绑定事件监听函数 someEvent: 事件名称
myEmitter.on("someEvent", function (message) {
    console.log(message);
})

// 手动触发事件
myEmitter.emit("someEvent", "手动触发事件");

例子, 用 ES6 的语法也可以

let events = require("events");
// 是一个工具库
let util = require("util");

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

// util.inherits(子类, 父类); 实现子类可以继承父类
util.inherits(Person, events.EventEmitter);

let xiaoming = new Person("xiaoming");
let lucy = new Person("lucy");

// // 用 ES6 的语法
// class Person extends events.EventEmitter {
//     constructor (name) {
//         super();
//         this.name = name;   
//     }
// }

let person = [xiaoming, lucy];
person.forEach(function (person) {
    person.on("say",(message) => {
        console.log(person.name + " say: " + message);            
    }) 
});

xiaoming.emit("say", "hi");
lucy.emit("say","hello");

输出为

xiaoming say: hi
lucy say: hello

读取文件fs

let fs = require("fs");

// 同步读文件
let readSyncData = fs.readFileSync("readMe.txt", "utf-8");

// 只要是异步操作都要有回调函数
fs.readFile("readMe.txt", "utf-8", (err, data) => {
    console.log("异步读文件\n\t我读出的数据是:", data);
})

let writeData = "我fs.js在给你writeMe.txt写数据。。。"
fs.writeFile("./writeMe.txt", writeData, (err) => {
    console.log("异步写文件完成");
    console.log(err);
})
console.log("同步读文件, 读出的内容是",readSyncData);

// node 执行javascript代码是单线程的, 是一句一句的执行代码,但当
// 执行到 有异步操作的时候,主线程就把他挂载上,之后就继续往下执行代码,
// 具体哪个时候执行也不清楚, 当主线程执行完了就可以再来执行这个异步的代码

操作目录和文件

同步的只需在后面写 Sync, 再去掉回调函数

// 1. 创建/删除 目录
// fs.mkdir("dirFS", (err) => {});
// fs.rmdir("dirFs", (err) => {});

// // 2. 创建/删除 文件
// fs.write()
// fs.unlink("writeMe.txt", (err) => {});

请求/响应数据

  • 请求、响应 JSON , 在发送 json 时, 要用JSON.stringify(jsonData)
    把json数据转化为字符串,这样才能传输, 在客户端要用josn 时, 用 json 的放 JSON.parse(str) 把字符串转化为对象

    // 请求 json数据 并解析
    let http = require("http");
    // request 请求对象   response 响应的对象
    let server = http.createServer(function (request, response) {
        // 这是一个写入流  200 :传一个状态码 Content-Type: 传一个什么样的内容给浏览器
        response.writeHead(200, {"Content-Type": "application/json"});
        let myObj = {
            name: "zhfei",
            job: "programmer",
            age: 22
        }
        // 要把 JSON 数据序列化为字符串才能在网络中传输
        // 在客户端反序列化 JSON.parse()
        response.end(JSON.stringify(myObj));
        // 监听 端口
    });
    server.listen(3000, "127.0.0.1");
    console.log("Server running at http://127.0.0.1:3000/");
    
  • 请求/响应 HTML

    注意, Conten-type: 的值要为 text/html , 不然浏览器不会解析

    // 请求 HTML 数据 并解析
    let http = require("http");
    let fs = require('fs');
    let myReadStream;
    
    // 写在这里不对,浏览器刷新什么都没有了
    //  myReadStream = fs.createReadStream(__dirname + "/index.html", "utf8");
    // request 请求对象   response 响应的对象
    let server = http.createServer(function (request, response) {
        // 如果是 text/plain 浏览器就不会解析HTML了
        response.writeHead(200, {"Content-Type": "text/html"});
    
        // 把 HTML 写入响应 
        myReadStream = fs.createReadStream(__dirname + "/index.html", "utf8");
        myReadStream.pipe(response)
    
    });
    server.listen(3000, "127.0.0.1");
    console.log("Server running at http://127.0.0.1:3000/");
    
posted @ 2019-03-10 00:26  zh阿飞  阅读(455)  评论(0编辑  收藏  举报