[Node]Day2—Node.js的组成、基础语法、模块化开发、第三方模块的使用

本文详细介绍了Node.js的基础,包括其组成、基础语法,并深入探讨了模块化开发,讲解了系统模块如fs和path的使用。此外,还涵盖了如何使用npm管理第三方模块,如nodemon、nrm和Gulp,以及Gulp插件的应用,如HTML压缩、CSS和JS处理等。同时,文章还提到了package.json文件及其作用和模块查找规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Node.js的组成、基础语法

3.1 Node.js 的组成

  • JavaScript由三部分组成,ECMAScript+ DOM + BOM
  • Node.js是由ECMAScript+Node环境提供的附加API组成的,包括文件、网络、路径等更强大的API

在这里插入图片描述

3.2 Node.js 的基础语法

语法核心:ECMAScript

比如什么基本的let、const、var、for...in,if-else,console.log

下面来简单运行一下

比如,我在目录E:\A_Study\Node_Study\Day01下新建一个文件httpServer.js

var http=require('http')
http.createServer(function(request,response){
   
   
    response.writeHead(200,{
   
   'Content-Type':'text/plain'});
    response.end('Hello node\n');
}).listen(8888);

console.log('Server running at http://127.0.0.1:8888/');

E:\A_Study\Node_Study\Day01文件夹下按住Shift键,再点击右键,打开Windows PowerShell

运行命令

node httpServer.js

在这里插入图片描述
用Node.js 创建一个Http Server,当访问http://127.0.0.1:8888/时,可以看到 Hello Node 被打印出来了

在这里插入图片描述

命令行使用小技巧:

1、在文件夹下直接打开当前目录的运行窗口:文件夹按住Shift键、右击打开Windows PowerShell

2、清除所有的log:使用clear命令

二、模块化开发

3.4 Node.js 模块化开发

再讲模块化开发之前,先来讲下JavaScript开发的两大弊端:

  • 文件依赖:比如开发轮播图时,先用到slider.js,而slider.js依赖于scroll.js,而scroll.js 又依赖于JQuery.js
  • 命名冲突:比如先引入的a.js中定义了num =10,后引入的b.js 中也有num=50 ,这是命名相同的num 会被后者覆盖。

在这里插入图片描述
那么模块化开发可以很好地解决上面的两个弊端。

模块化开发:一个功能就是一个模块,多个模块可以组成完整的应用,抽离一个模块不会影响其他功能的运行。
在这里插入图片描述

  • 在Node.js中,规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数,默认情况下在外部无法得到
  • 模块内部可以使用 exports 对象进行成员导出,使用require方法导入其他模块
    在这里插入图片描述

具体示例:

a.js

// 定义变量
let version=1.0

// 定义方法
const sayHi= name=>console.log('Hi!'+name)

// 向模块外部导出数据

exports.version=version

exports.sayHi=sayHi

b.js

let a=require('./a.js')  //  b.js中导入模块a  

console.log(a.version)  // 输出b.js 的version 变量
 
console.log(a.sayHi('huahua'))  // 调用b.js中的sayHi方法

结果:
在这里插入图片描述

导出方式:

  • exports 对象导出
  • module.exports 对象导出

exportsmodule.exports的别名(地址引用关系),即下面两种写法等价

exports.version=version;
module.exports.version=version;

但如果exportsmodule.exports分别指向不同地址时,最终导出的结果为module.exports所导出对象,导出对象最终以module.exports为准。

//module.exports.js

const x=1;

exports.x=x; 

module.exports={
   
   
	name:'张三'
}

//b.js

const a=require('./module.exports.js') 
console.log(a)

//{
   
   name:'张三'}

3.5 系统模块

3.5.1 什么是系统模块?

Node运行环境提供的API,因为这些API都是以模块化的方式进行开发的,所以Node运行环境提供的API为系统模块。

在这里插入图片描述

3.5.2 系统模块fs文件操作

const fs=require('fs');
1. 读取文件 readFile

[,'文件编码']为可选项

fs.readFile('文件路径/文件名称'[,'文件编码'],callback);

//readFile.js

//通过require('fs') 对模块进行引用
const fs=require('fs')
fs.readFile('file.txt',function(err,doc){
   
   
	//如果文件读取错误 参数err的值为错误对象,否则err的值为null
    if(err) return console.error(err);
    
    if(err=null){
   
   //文件读取成功,err为null
	     console.log(doc.toString());//doc参数为文件内容
    }

})
console.log('程序执行结束')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值