nodejs学习--03

Node介绍

  • Node全名是Node.js,但它不是一个js文件,而是一个软件
  • Nodejs是一个基于Chrome V8引擎的ECMAScript的运行环境
  • Nodejs可以执行js文件(有了Nodejs之后,js文件就能运行在服务器端了)
  • Nodejs提供了大量的工具(API),能够让我们完成文件读写、Web服务器创建等功能
    在这里插入图片描述
nodejs中的JS和浏览器中的JS的区别
  • 安装了浏览器这个软件,它不但可以执行ECMAScript,浏览器这个软件内置了window对象,所以浏览器有处理DOM和BOM的能力。
  • 安装了NodeJs这个软件,它不但可以执行ECMAScript,NodeJS这个软件也内置了一些东西,包括全局成员和模块系统。
    在这里插入图片描述
安装Nodejs

官网: https://Nodejs.org/en/

中文网:http://Nodejs.cn/

体验nodejs

既然说node安装后,也可以执行JS,那么我们就用node执行一行js代码试试,或者写一个js文件,让node执行以下。

  • 执行一行JS代码
    在这里插入图片描述
  • 执行一个JS文件
    在这里插入图片描述
    注意事项:
    • 输入node回车后,要按两次Ctrl+C,才能回到目录中(Ctrl一直按着不放也可以,松开从新按也可以)
    • 执行js文件时,如果当前命令行目录和js文件不在同一个盘符下,要先切换盘符
    • 执行js文件时,如果当前命令行目录和js文件在同一个盘符中,则可以使用相对路径找到js文件并执行
    • 体会,此时执行的js代码或文件和浏览器没有任何关系,他们是通过node执行的

node不但可以执行我们学习过的ECMAScript,node还自带了很多全局对象和很多模块。
在这里插入图片描述

全局变量
  • node中有一个全局变量global,是node中最大的一个对象,相当于浏览器中的window对象。
  • global中的成员在使用时,可以省略global,这点也类似浏览器中的window

下面介绍几个全局对象global中的成员:

  • console,我们在初体验时,使用了console,它可不是浏览器中的console对象,使用的是node中的console
  • process,和进程相关的对象
  • setInterval,同理,也是node中的,不是浏览器中的
  • require(),它是全局对象global中的一个方法,用于在js文件中引入另外的文件
  • __dirname,当前执行文件的绝对路径(在js文件中使用)
  • __filename,当前执行文件的绝对路径,包含文件名(在js文件中使用)
node核心模块

path模块

处理路径的模块

  • 操作文件的时候经常要对文件的路径做处理,或者获取文件的后缀,使用 path 模块。
  • path 是 Node 本身提供的 API,专门用来处理路径。
  • path 仅仅用来处理路径的字符串,不一定存在对应的物理文件。
  • 使用方法
    • 加载模块
// 使用核心模块之前,首先加载核心模块
let path = require('path');
// 或者
const path = require('path');
  • 调用path模块中的方法,来处理相应的问题,下面列举path模块中的几个方法
方法作用
path.basename(path[, ext])返回 path 的最后一部分(文件名)
path.dirname(path)返回目录名
path.extname(path)返回路径中文件的扩展名(包含.)
path.format(pathObject)将一个对象格式化为一个路径字符串
path.join([…paths])拼接路径
path.parse(path)把路径字符串解析成对象的格式
path.resolve([…paths])基于当前工作目录拼接路径

工作目录:当前运行 Node 程序的目录

const path = require('path');

// extname -- 获取文件后缀
console.log(path.extname('index.html')); // .html
console.log(path.extname('index.coffee.md')); // .md

// join -- 智能拼接路径
console.log(path.join('/a', 'b', 'c')); // \a\b\c
console.log(path.join('a', 'b', 'c')); // a\b\c
console.log(path.join('/a', '/b/../c')); // \a\c
console.log(path.join('/a', 'b', 'index.html')); // \a\b\index.html
console.log(path.join(__dirname, 'a', 'index.html')); // 得到一个绝对路径
fs模块

文件操作模块

文件系统,对文件/文件夹的操作 file system

  • 使用方法
    • 加载模块
// 引入模块,引入模块的时候,可以使用var、let,但是建议使用const,因为我们不希望它改变
const fs = require('fs');
  • 调用fs模块的方法,下面列举fs模块中的常用方法
API作用备注
fs.access(path, callback)判断路径是否存在
fs.appendFile(file, data, callback)向文件中追加内容
fs.copyFile(src, callback)复制文件
fs.mkdir(path, callback)创建目录
fs.readDir(path, callback)读取目录列表
fs.rename(oldPath, newPath, callback)重命名文件/目录
fs.rmdir(path, callback)删除目录只能删除空目录
fs.stat(path, callback)获取文件/目录信息
fs.unlink(path, callback)删除文件
fs.watch(filename[, options][, listener])监视文件/目录
fs.watchFile(filename[, options], listener)监视文件
// readFile -- 异步读取文件
fs.readFile('./test.json', (err, data) => {
    if (err) {
        console.log('读取文件出错');
    } else {
        console.log(data); // 读取到的二进制数据
    }
});

fs.readFile('./test.json', 'utf-8', (err, data) => {
    if (err) {
        console.log('读取文件出错');
    } else {
        console.log(data); // 读取到的原始数据
    }
});
// writeFile -- 异步写入文件
fs.writeFile('./abc.html', 'hello world', (err) => {
    if (err) {
        console.log('写入文件失败');
    } else {
        console.log('文件写入成功');
    }
});
querystring模块

查询字符串处理模块

  • 处理查询字符串(请求参数)的模块
  • 使用方法
    • 加载模块
    const querystring = require('querystring');
    
    • 调用querystring模块中的方法
       // parse -- 将查询字符串解析成JS对象
      console.log(querystring.parse('id=1&name=zs&age=20')); 
      // { id: '1', name: 'zs', age: '20' }
      
      // stringify -- 将JS对象转成查询字符串
      console.log(querystring.stringify({ id: '1', name: 'zs', age: '20' }));
      // id=1&name=zs&age=20
      
url模块
  • 提供两套处理url的API
  • 遗留的API,提供url.parse();方法解析url
  • 新的API,通过实例化URL,来解析url
  • 使用方法
    • 加载模块
    const url = require('url');
    
    • 遗留API使用方法
    let myURL = url.parse('/test.html?id=11&age=22'); // 返回一个包含url各个部分的对象
    
    • 新的API使用方法,实例化的时候,必须传递一个完整的url
    // 直接提供一个完整的url
    let myURL = new URL('http://www.xxx.com/test.html?id=11&age=22');
    // 或
    // 提供两个参数,一是文件路径及参数部分,二是域名,总之,二者组合必须是完整的url
    let myURL = new URL('/test.html?id=11&age=22', 'http://www.xxx.com');
    
    // 得到的myURL是一个对象,包含url中的各个部分
    // 如果需要解析参数部分,则使用querystring模块,或使用URL的一个子对象searchParams中的		get方法
    let age = myURL.searchParams.get('age')// 22
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值