Node.js初探(一)——fs、path、http

1、准备工作

(1)浏览器中的JS:JS核心语法(ECMAScript)+WebAPI

(2)为什么JS可以在浏览器中执行?

浏览器中有JS解析引擎:每个浏览器的解析引擎都不一样,Chrome浏览器中的V8解析引擎最好。

(3)为什么JS可以操作DOM和BOM?

每个浏览器内置了BOM和DOM函数,浏览器中的JS才可以调用。

(4)浏览器中的JS运行环境

运行环境:代码正常运行所需的必要条件。浏览器也是一个运行环境,执行JS:V8引擎+内置API

内置API:由运行环境提供的特殊的接口,只能在所属的运行环境中被调用;包括DOM+BOM+Canvas+XMLHttpRequest+JS内置对象+……

(5)JS可以做后端开发,需要借助Node.js

2、初识Node.js

(1)Node.js中的JavaScript运行环境

  • 浏览器是JavaScript的前端运行环境
  • Node.js是JavaScript的后端运行环境
  • Node.js中无法调用DOM和BOM等浏览器内置API,因为Node.js是一个单独的运行环境

(2)学习路径:JS基础语法+Node.js内置模块(fs,path,http)+第三方API模块(express, mysql)

3、在Node.js环境中执行JS代码

node JS代码存放路径

4、终端中的快捷键

⬆️ 上次所执行的命令

tab键 自动补全文件的路径

ESC键 清空当前已经输入的命令

cls 清空终端

cd 文件夹X 切换终端到下一层文件夹X

cd.. 切换终端到上一层文件夹

5、fs文件系统模块(操作文件)

(1)读取文件内容 fs.readFile(path[,options], callback)

path:文件路径

options:编码格式

callback(err, dataStr):回调函数

  • err:读取时的错误信息

  • dataStr:读取到的内容

// 导入fs模块
const fs = require('fs')
fs.readFile('./files/1.txt', 'utf8', (err, str) => {
    console.log(err);
    console.log(str);
})

/**
 * 如果文件读取成功,err=null,str=文件内容
 * 如果文件读取失败,err=错误对象,str=undefined
 */

(2)写入文件内容 fs.writeFile(file, data[,options], callback)

file:文件的存放路径

data:写入的文件内容

options:编码格式

callback(err):回调函数

const fs = require('fs')

fs.writeFile('./files/2.txt', '0987654321', function(err) {
    console.log(err);
})

/**
 * 1、默认写入格式为utf8
 * 2、如果文件不存在,会创建新的文件并写入
 * 3、如果之前文件已存在,会使用新内容覆盖旧的内容
 * 4、写入成功:err=null
 *    写入失败:err=错误对象
 */

(3)fs路径动态拼接

在路径拼接时,默认以终端运行的目录开始拼接,为避免路径错误,因此进行动态拼接

__dirname:当前代码文件所处的目录

const fs = require('fs')
// 使用__dirname拼接的路径是绝对路径,文件在哪里运行都可以正确读取到文件
fs.readFile(__dirname + '/files/1.txt', 'utf8', function(err, res) {
    if (err) {
        return console.log(err.message)
    }
    console.log(res);
})
6、path路径模块

(1)path.join([...paths])

  • path.join()可以拼接多个路径,../会抵消一层路径

  • 使用path.join()拼接路径时,如果路径片段有./,会自动忽略,而使用+进行拼接时,不能识别并忽略./

(2)path.basename(path[,ext])

从path文件路径中,获取到文件名称,如果有ext扩展名,则获取到去掉扩展名的文件名称,扩展名要加.

(3)path.extname(path)

获得路径path中文件的扩展名

7、http模块:创建web服务器

(1)服务器相关概念

  • IP地址:互联网上每台计算机的唯一地址,每台电脑都有自己的IP地址

    • 格式:a.b.c.d a, b, c, d都是0~255之间的十进制整数

    • 自己的电脑也是一台服务器,IP地址为:127.0.0.1

  • 域名和域名服务器

    • 域名是字符型的地址方案,IP和域名是一一对应的关系,这种对应关系存在域名服务器中

    • 127.0.0.1的域名是:localhost

  • 端口号:每个Web服务都对应一个唯一的端口号,客户端发送的网络请求,通过端口号,可以准确交给对应的Web服务进行处理

    • 每个端口号不能同时被多个Web服务占用

    • 在实际应用中,URL中的80端口可以被省略

(2)创建Web服务器

// 1、导入http模块
const http = require('http')
// 2、创建Web服务器:http.createServer()
const server = http.createServer()
// 3、为服务器实例绑定request事件,监听客户端发送的请求:实例.on()
server.on('request', (req, res) => {
    console.log('Someone visit our web server');
})
// 4、启动服务器:实例.listen()
server.listen(80, function() {
    console.log('Server running at http://127.0.0.1');
})

(3)req请求对象:可以访问到与客户端相关的数据和属性

(4)res响应对象:可以访问与服务器相关的数据或属性,使用res.end()进行响应

const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
    const str = `Your request url is ${req.url}, and request method is ${req.method}`
    res.end(str)
})
server.listen(80, () => {
    console.log('server running at http://127.0.0.1');
})

(5)解决中文乱码问题

res.setHeader('Content-Type', 'text/html; charset=utf-8')

(6)根据请求的URL地址,请求不同的内容

const http = require('http')
const server = http.createServer()

server.on('request', (req, res) => {
    // 1、获取请求的URL地址
    const url = req.url
    // 2、设置默认的响应内容
    let content = '<h1>404 Not Found</h1>'
    // 3、判断用户请求的是哪一个地址
    if (url == '/' || url == '/index.html') {
        content = '<h1>首页</h1>'
    } else if (url == '/about.html') {
        content = '<h1>关于</h1>'
    }
    // 4、设置响应头,防止中文乱码
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    // 5、使用res.end()把内容响应给客户端
    res.end(content)
})

server.listen(80, () => {
    console.log('server running at http://127.0.0.1');
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • 一、学习目的和任务 1. 学习目的 了解服务端编程; 使用 Express 构建 Web 项目; 2. 学习任务 ...
    康小曹阅读 138评论 0 1
  • 简介    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Nod...
    GallonLau阅读 368评论 0 2
  • 一、模块1. 在Node环境中,一个.js文件就称之为一个模块(module)。2. 模块化的优点:提高代码的可维...
    YoungEvita阅读 1,530评论 0 0
  • Day1 Node.js是什么 1.Node.js is a JavaScript runtime built o...
    恒_e846阅读 185评论 0 0
  • js运行环境? 浏览器:请求一个HTTP地址,将一个url地址封装成一个请求报文,将响应报文解析 浏览器中的js可...
    阡陌哥哥阅读 290评论 0 1