初识Node和内置模块
初识Node与内置模块
概述:了解Node.js,熟悉内置模块:fs模块、path模块、http模块
初识Node.js
浏览器中的JavaScript运行环境
运行环境是指代码正常运行所需的必要环境
- 对于Chrome浏览器运行环境=V8引擎+内置API(DOM、BOM等)
- V8引擎负责解析和执行Js代码
- 内置API是由运行环境提供的特殊接口,只能运行在所属的运行环境中
JavaScript能否做后端开发?
也许你听到的后端开发语言大多是:Java、Python、PHP等,但其实Js也能做后端开发,虽然性能不如他们,但对于前端开发人员十分友好。
如果我们把Js代码运行浏览器中,就可以进行前端开发;如果运行到Node.js中,就可以实现后端开发。
什么是Node.js?
Node.js是一个基于Chrome V8引擎的JavaScript运行环境
Node.js官网:http://nodejs.org/zh-cn/
Node.js中的JavaScript运行环境
对于Node.js运行环境=V8引擎+内置API
- 浏览器是Js的前端运行环境
- Node.js是Js的后端运行环境
- Node.js中无法调用DOM和BOM等浏览器内置API
Node.js可以做什么?
很多框架和工具,都基于Node的基础功能,学会Node.js,可以“帮助前端程序员胜任更多工作”:
- 基于Express框架,快速构建Web应用
- 基于Electron框架,构建跨平台桌面应用
- 基于restify框架,构建API接口项目
- 读写和操作数据库、创建使用的命令行工具辅助开发等
如何走Node.js这条路?
JavaScript基础语法——Node.js内置API模块(fs、path、http等)——第三方API模块(express、koa、egg、mysql等)
Node.js环境安装
官网下载安装
区分LST版本和Current版本:
- LST:长期稳定版,适于追求稳定性的企业级项目
- Current:新特性尝鲜版,适于热衷于尝试新特性的用户
查看已安装的版本号
//打开终端(Terminal)
ndoe -v
在Node.js中执行JavaScript代码
打开终端
输入node要执行的Js文件路径
F:\xxx\xxx\Node.js>node index.js
终端中的快捷键:
- 方向键↑:快速定位上一次命令
- Tab:自动补全文件名
- esc:快速清空已输入的命令
- cls:清空终端内容
fs文件系统模块
什么是fs模块?
fs模块是Node.js官方提供的用来操作文件的模块,它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
fs.readFile()方法,读取文件内容
fs.writeFile()方法,写入内容
const fs=require('fs')
读取指定文件中的内容
- 参数1:文件的存放路径
- 参数2:读取时采用的编码格式(可选)
- 参数3:回调函数,得到失败和成功的结果
fs.readFile(path[,options],callback)
const fs = require('fs');
fs.readFile('./files/1.txt', 'utf8', function (err, dataStr) {
console.log(err)
console.log("------------------")
console.log(dataStr)
})
向指定的文件中写入内容
- 参数1:文件的存放路径
- 参数2:写入的内容
- 参数3:读取时采用的编码格式(可选)
- 参数4:回调函数,得到失败和成功的结果
fs.writeFile(file,data[,options],callback)
const fs = require('fs');
fs.writeFile('./files/1.txt', 'Hello World!', function (err) {
console.log(err)
})
路径动态拼接错误问题
在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径,很容易出现路径动态拼接错误问题。
原因:代码运行时,会以node命令时所处的目录,动态拼接被操作文件的完整路径。
解决:直接提供完整的绝对路径(移植性差,不利于维护)。
fs.writeFile(__dirname+'/files/2.txt', newStr, function (err) {
if (err) {
return console.log("文件写入失败!+", err.message)
}
console.log("文件写入成功!")
})
path路径模块
什么是path模块?
path模块是Node.js官方提供的用来处理路径的模块,它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
path.join()方法,将多个路径片段拼接成一个完整的路径字符串
path.basename()方法,将路径中的文件名解析出来
const path=require('path')
路径拼接
path.join([...paths])
const path = require('path')
const pathStr = path.join('/a', '/b/c', '../', '/d', 'e') //../抵消一层
console.log(pathStr)//\a\b\d\e
获取路径中的文件名
- 参数1:文件的存放路径
- 参数2:文件扩展名
path.basename(path[,ext])
const path = require('path')
const fpath = './files/1.txt'
const fullname = path.basename(fpath)
console.log(fullname)//1.txt
const nameWithoutExt = path.basename(fpath, '.txt')
console.log(nameWithoutExt)//1
获取路径中的文件扩展名
path.extname(path)
http模块
什么是http模块?
在网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器。
http模块是Node.js官方提供的用来创建Web服务器的模块的模块,通过提供的http.createServer()方法,就能把一台普通的电脑,变成一台Web服务器,从而对外提供Wbe资源。
const http=require('http')
服务器和普通电脑的区别在于:服务器上安装了Web服务器软件,例如IIS、Apache等
再Node.js中,我们不需要使用IIS、Apache等第三方web服务器软件。因为我们可以基于Node.js的http模块,通过几行代码,手写一个服务器软件,从而对外提供web服务。
创建最基本的web服务器
- 导入http模块
- 创建web服务器实例
- 为服务器实例绑定reques时间,监听客户端请求
- 启动服务器
const http = require('http')
const server = http.createServer()
server.on('request', function (req, res) {
console.log("Someone visit our web server")
})
server.listen(8082, function () {
console.log("Server running at http://127.0.0.1:8082")
})
req请求对象
访问与客户端相关的数据或属性
const http = require('http')
const server = http.createServer()
server.on('request', req=>{
const url=req.url//客户端请求的url地址
const method=req.method//客户端请求的method类型
})
server.listen(8082, function () {
console.log("Server running at http://127.0.0.1:8082")
})
res响应对象
访问与服务器相关的数据或属性
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
const url = req.url//客户端请求的url地址
const method = req.method//客户端请求的method类型
//调用res.end向客户端响应内容
res.end("Hello World!")
})
server.listen(8082, function () {
console.log("Server running at http://127.0.0.1:8082")
})
解决中文乱码问题
res.setHeader('Content-Type','text/html; charset=utf-8')
初识Node和内置模块的更多相关文章
- 初识node.js(通过npm下载项目依赖的包的过程)
一.初识node.js 简单的说Node.js 就是运行在服务器端的JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事 ...
- 前端知识(一)02 初识 Node.js-谷粒学院
目录 初识Node.js 一.Node.js的概念 1.JavaScript引擎 2.什么是Node.js 3.Node.js有什么用 二.BFF 1.BFF 解决什么问题 2.BFF是什么 三.安装 ...
- Node.js 内置模块crypto加密模块(3) HMAC
HMAC:哈希消息认证码 ( Hash-based Message Authentication Code ) HMAC是密钥相关的哈希算法 使用 HMAC 进行加密的Node实现的一种方法: &qu ...
- Node.js之路【第一篇】初识Node.js
什么是Node.js 1.Node.js就是运行在服务端的JavaScrip. 2.Node.js是一个基于Chrome JavaScrip运行时简历的一个平台. 3.Node.js是一个非阻塞I/O ...
- 初识node.js
Node.js不是一种语言:不是框架:也不是工具.它是用于运行基于JavaScript应用程序的运行时环境.
- .NET程序员也学Node.js——初识Node.js
清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...
- 什么是Node.js?带你初识Node
什么是Node.js Nodejs是一个基于Chrome v8引擎的JavaScript运行环境 Node.js使用了一个事件驱动,非阻塞式I/O的模型,使其轻量又高效. Node.js 的包管理器 ...
- 1.初识Node.js
Node.js基础知识大汇总 1.下载并安装npm,检测安装是否成功(在命令行输入node -v,看是否会输出对应版本号) 2.写一个hello world 程序. (1).打开notepad,新建一 ...
- Node.js实战项目学习系列(1) 初识Node.js
前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...
- nodejs笔记之初识node
1.安装node; node -v //检测node是否安装成功 node可以做什么: 搭建服务器: 读写文件: 连接数据库: 爬虫: node的模块系统: 原生模块(如http,fs); 自定义模 ...
随机推荐
- pytorch学习笔记(8)--现有模型的使用和修改
官网网址: https://pytorch.org/vision/0.9/models.html#semantic-segmentation (1).ImageNet train_data = tor ...
- Flask的介绍、安装和使用
Flask的介绍 Flask其实就是Python-web中的一个框架,也就是说Flask是一个工具,提供了库和技术来让你建立一个web的应用程序.这个程序可以使一些web页面.博客.基于web的日历应 ...
- STM32 GPIO配置(寄存器)生成工具
在写程序的时候需要用寄存器配置GPIO方向.模式,每一个都需要去计算 感觉相当麻烦,所以写了一个用来计算的小工具 链接:https://pan.baidu.com/s/1PEn0Q0IiA5mJJbs ...
- Spring可扩展的XML Schema机制 NamespaceHandlerSupport
对xml文件的解析 1.可自定义标签, 2.可以覆盖原有的注册方法, 包括但不限于bean 加载,注解
- 写一些Linux文件夹操作的一些感悟。
rwx 权限 对目录的作用 读权限(r) 表示具有读取目录结构列表的权限,也就是说,可以看到目录中有哪些文件和子目录.一旦对目录拥有 r 权限,就可以在此目录下执行 ls 命令,查看目录中的内容. 写 ...
- mysql重新设置列的自增初始值
alter table xxx auto_increment = 100; 因为设置了列的自增之后,若删除过一些行,下次再新增时还会从已删除的id算起自增,为了让数据看起来连续,可以重新设置自增起始值 ...
- React++antd+ProComponents可编辑表格EditableProTable组件实现表单中的可编辑列表组件
需求: 在新增&编辑表单中,共分三个表单模块,第二个模块设计为一个可编辑表格组件,其中可选下拉列表依赖外层第一个模块的某条数据值,提供新增.编辑.删除.按规定条件去重等功能,并在第三个模块中自 ...
- tomcat 重启脚本
1 创建脚本后将脚本放到tomcat/bin目录下并授权,就可以通过此脚本一键重启拉! #!/bin/bash tomcat_path1="$( cd "$( dirname &q ...
- 面向对象3(Java)
多态 基本介绍 即同一方法可以根据发送对象的不同而采用多种不同的行为方式 一个对象的实际类型是确定的,但是可以指向对象的引用类型可以很多 多态存在的条件:a.有继承关系:b.子类重写父类方法:c.父类 ...
- Mysql explain 每个属性含义
Mysql explain explain 常用于分析sql语句的执行效率,使用时在正常的select语句之前添加explain并执行就会返回执行信息,返回的执行信息如下: id:id列的编号是se ...