关于node.js的介绍

认识nodejs

学习nodejs的意义

  1. 了解浏览器端和服务器端的交互过程 可以缩短开发周期
  2. 出现bug 可以快速定位是前端问题还是后端问题
  3. nodejs和其它后端语言拥有一样的功能 可以做数据库的增删改善 爬虫 读写文件

什么是nodejs?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 v8解析js是最快的
nodejs是让js运行在服务器端
nodejs里面的API大多数都是异步

服务器端的js和浏览器端的js有什么区别?

客户端的js三个组成部分 :
1.DOM 文档对象模型 js操作网页内容的一套API
2.BOM 浏览器对象模型 js操作浏览器页面的一套API
3.ECMAScript 一套js语法的规范 for
服务端的js 只有ECMAScript 独立于浏览器运行的

nodejs的执行方法

方法1 REPL(read eval print loop)
读取
解析
打印
循环
1.打开命令框(CMD)
2.输入node 回车
3.输入js代码 按回车执行
4.退出node环境 使用后ctrl + c (按两次)

创建 Node.js 应用

步骤一 、引入 required 模块

我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:

var http = require("http");

步骤二、创建服务器

接下来我们使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。

实例如下,在你项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:

var http = require('http');

http.createServer(function (request, response) {

    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World"
    response.end('Hello World\n');
}).listen(8888);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

读取js(readFile)及参数

//导入文件模块
const fs = require("fs");

//导入http模块
const http = require("http");

//创建http服务
const server = http.createServer((request, response) => {
    // 1.设置响应头  服务器为了告诉浏览器  我返回给你的数据  你用utf-8来解析
    response.setHeader("content-type", "test/html;charset=utf-8")

    // response.end(request.url);

    console.log(request.url);

    //请求路径:  ./www/index.html

    let reqUrl = request.url;

    if (reqUrl === "/index.html") {
    	//参数1 : 需要被读取的文件的路径
		//参数2 : 可选参数 我们这里给的是编码格式
		//参数3 : 回调函数 里面有连个参数 err表示读取失败时返回的信息  data是读取到的文件信息
        fs.readFile("./www/index.html", "utf-8", (err, data) => {
            response.end(data);
        })                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
    }

})
// 开启http服务
server.listen("80", () => {
    console.log("start");

})

写入js(writeFile)及参数

const fs = require("fs");

// 参数1 : 存入信息或者数据的文件路径
// 参数2 : 需要写入的数据
// 参数3 : 回调函数
fs.writeFile("./novels/03.txt", "海客谈瀛洲, 波涛微茫新难求, 越人语天姥, 云霞明灭或可睹......", err => {
    // console.log(err);

    if(!err) {
        console.log('写入成功');
        
    } else {
        console.log("写入失败");
        
    }
    
})

console.log("底部的代码");

执行js

终端里面输入 node 文件名如:

node server.js
Server running at http://127.0.0.1:8888/

绝对路径

const fs = require("fs");

fs.readFile(__dirname + "\\novels\\01.txt","utf-8",(err,data)=>{
    console.log(data);
    
})

console.log(__dirname + "\\novels\\01.txt");
console.log(__filename);

nodejs里面的相对路径 是相对于当前运行node命令的终端所处的相对路径
为了保证在任何地方打开终端 都可以运行 那么我们的路径使用绝对路径
问题 : 万一文件夹存在其他地方 绝对路径也不可靠 解决方法 : __dirname
__dirname 是当前文件所在的文件的绝对路径
__filename 是当前文件的绝对路径

设置setHeader请求头

//导入文件模块
const fs = require("fs");

//导入http模块
const http = require("http");

//创建http服务
const server = http.createServer((request, response) => {
    // 1.设置响应头  服务器为了告诉浏览器  我返回给你的数据  你用utf-8来解析
    response.setHeader("content-type", "test/html;charset=utf-8")

    // response.end(request.url);

    console.log(request.url);

    //请求路径:  ./www/index.html

    let reqUrl = request.url;

    if (reqUrl === "/index.html") {
        fs.readFile("./www/index.html", "utf-8", (err, data) => {
            response.end(data);
        })                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
    }

})
// 开启http服务
server.listen("80", () => {
    console.log("start");

})

拼接path片段的方法

//导入模块
const http = require("http");
const fs = require("fs");
const path = require("path");

//创建服务器对象
const server = http.createServer((request, response) => {
    console.log(request.url);

    var reqUrl = request.url;

    if (reqUrl === "/index.html") {
        //读取index.html页面的内容
        fs.readFile(path.join(__dirname, "www", reqUrl), "utf-8", (err, data) => {
            if (!err) {
                response.end(data);
            } else {
                console.log(err);

            }
        })
    } else if (reqUrl === "/css/index.css") {
        //读取index.html页面的内容
        fs.readFile(path.join(__dirname, "www", reqUrl), (err, data) => {
            if (!err) {
                response.end(data);
            } else {
                console.log(err);

            }
        })
    } else if (reqUrl === "/img/1.png") {
        //读取index.html页面的内容
        fs.readFile(path.join(__dirname, "www", reqUrl), (err, data) => {
            if (!err) {
                response.end(data);
            } else {
                console.log(err);

            }
        })
    } else if (reqUrl === "/favicon.ico") {
        //读取index.html页面的内容
        fs.readFile(path.join(__dirname, "www", reqUrl), (err, data) => {
            if (!err) {
                response.end(data);
            } else {
                console.log(err);

            }
        })
    } else {
        response.end(
            `<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
            <html> <head> 
            <title>404 Not Found</title>
            </head><body>
            <h1>Not Found</h1>
            <p>The requested URL ${reqUrl} was not found on this server.</p>
            < /body></htm1>`)
    }
})
//开启服务器
server.listen("4399", () => {
    console.log("start");
})

url.parse()方法

是将一个URL字符串转换成对象并返回。

语法:

url.parse(urlStr, [parseQueryString], [slashesDenoteHost]);

接收参数:

1.urlStr 是url字符串
2.parseQueryString
为true时将使用查询模块分析查询字符串,默认为false

3.slashesDenoteHost

默认为false,//foo/bar 形式的字符串将被解释成 { pathname: ‘//foo/bar’ }

如果设置成true,//foo/bar 形式的字符串将被解释成 { host: ‘foo’, pathname: ‘/bar’ }

//导入http模块
const http = require("http");

const url = require("url");

//创建服务器对象
const server = http.createServer((request,response)=>{
    console.log(request.method);
    response.end(request.method);

    console.log(request.url);

    const reqUrl = request.url;

    console.log(url.parse(reqUrl,true));
    const getdata = url.parse(reqUrl,true).query;

    console.log(getdata);
    console.log(getdata.name);
    console.log(getdata.skill);
})

//开启服务器
server.listen("8848",()=>{
    console.log("start");
    
})

使用post传递数据

//导入http模块
const http = require("http");

const url = require("url");

const reqMed = request.method;

if (reqMed === "GET") {
    console.log(request.url);

    const reqUrl = request.url;

    //引入url模块  调用parse来解析url
    console.log(url.parse(reqUrl, true));
    const getdata = url.parse(reqUrl, true).query;
    console.log(getdata);
    console.log(getdata.name);
    console.log(getdata.skill);
} else if (reqMed === "POST") {
    // const reqUr1 = request.url;
    使用获取get请求数据的方法老获取post请求的数据    是获取不到的     因为他压根儿没进url
    // console. log(url. parse(reqUr1, true)); 
    // const getdata = url. parse(requr1, true) .query; 
    // console. log(getdata);
    // post请求传递的数据可能比较大     不会一次性产地完毕       分段传输 所以我们要使用字符 串来接收数据
    varpostStr = "";
    request.on("data", (data) => {
        // console.1og(data);
        // console.1og(data. toString()); 
        // console. 1og( decodeURI(data . toString()));
        poststr += data;

    })
        // end事件表示数据传输完毕
        // end事件没有参数
    request.on("end", () => {
        // post请求传递的数据不是url 只是单单纯的key=value&key1=va1ue1这种类型的字符胡
        //我们可以直接使用querystring. parse来解析
        const postData = querystring.parse(postStr);
        console.log(postData);
    })
}

//开启服务器
server.listen("8848", () => {
    console.log("start");

})

使用get传递数据

// 导入express模块
const express = require('express')
const { response } = require('express')

// 创建服务器对象
const app = express()
 
// 发送get请求  检测"/"url
//回调函数是检测到url  才会执行
app.get('/', function (request, response) {

// 这里的response是express模块提供的  
// 注意区分http模块里面的 response.end方法
  response.send('Hello World');
})
 

app.get("/list", (request, response) => {
    response.send(["爆炒牛肉", "红烧排骨", "鱼香肉丝", "西湖醋鱼", "西红柿炒番茄", "土豆炒马铃薯配洋芋"])
})

// 开启监听
app.listen(3000)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值