// 知道CommonJS规定了哪些内容:就是对代码进行模块化的拆分与组合时,需要遵循哪些规则

//    1.使用什么样的语法格式来引用模块

//    2.在模块中使用什么样的语法格式向外暴露成员

// Node.js中模块的根据来源不同分为三大类;三大分类各自是什么

// 1.内置模块(内置模块是由Node.js 官方提供的,例如fs、path、http等)

// 2.自定义模块(用户创建的每个js文件,都是自定义模块)

// 使用require()方法加载其他模块时,会执行被加载模块中的代码

// 3.第三方模块(由第三方开发的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

//例1:创建主模块(main.js)和功能模块(circle.js),
//在功能模块下创建两个函数,传递半径,
//返回圆的面积或者周长;在主模块下调用暴露的两个函数

main.js 里面代码

const a=require("./circle")
const zc=a.zhouchang(3);
const b=require("./circle01")
const mj=b.mianji(3);
console.log(`周长是${zc} 面积是${mj.toFixed(2)}`)
//mianji
module.exports.mianji=function(r){
return Math.pow(r,2)*Math.PI
}
//zhouchang
module.exports.zhouchang=function(r){
return 2*PI*r
}

在03_1.js文件中引入到同一级目录模块03_2,目录【03_2是个文件夹】中包含index.js,
//在文件中创建函数传递任意两个数字返回总和,暴露该函数;最后在03_1.js
//中调用这个函数

03_1.js

const a =require("./03_2")

03_2文件夹下的02.js

console.log('我先显示')
const a =require("./index.js")
console.log(a.fn(1,3))

03_2文件下的index.js

module.exports.fn=function(a,b){return a+b
}

03_2下面的package包配置文件【设定谁先优先,谁就先在03_2文件下优先被找到】

{
"main":"02.js"
}

//(2)记录的包

//1.查询字符串模块(querrystring.js)
//查询字符串:浏览器端向服务端传递参数的一种形式,位于网址,格式
//http://www.codeboy.com:9999/products.html?kw=小米&a=1
//查询字符串模块用于操作查询字符串的工具模块
//parse()将查询字符串转为对象

//例子:
const querystring=require("querystring");
console.log(querystring);
//查询字符串
var str='kw=小米&a=1';
//将查询字符串转为对象,获取传递的值
var obj=querystring.parse(str);//parse 字符串
console.log(obj)//[Object: null prototype] { kw: '小米', a: '1' }
console.log(obj.kw,obj.a)//小米

//例如:获取以下查询字符串中传递的参数值【lid=18&count=2】答案如下:

const querystring=require("querystring");
//查询字符串
var str='lid=18&count=2'
//将查询字符串转为对象,获取传递的值
var obj=querystring.parse(str);//parse 把字符串转为对象
console.log(obj)
console.log(obj.lid,obj.count)//18,2

// 2.IP地址就是互联网上每台计算机的唯一地址:不直观,不便于记忆
//域名和域名服务器
// ip地址和域名是一 一对应的关系,这份对应关系存放在一个叫DNS的电脑里
// 域名服务器就是提供IP地址和域名之间的转换服务的服务器
// 端口号:就像门牌号
// 注意:每个端口号不能同时被多个web服务占用
// 在实际应用中,URL中的80端口可以被省略

//3.URL模块
将URL转换为对象

var
str='http://www/codeboy.com:9999/1.html?lid=8#one';
var obj=new URL(str);
console.log(obj.search.slice(1));//lid=8

//例如:获取以下URL中传递的参数,打印以下格式:
//’班级编号:xxx 课程名称:xxx‘

//

var
str='http://www/tmooc.cn:443/web.html?cid=2110&cname=node.js#one';
var obj=new URL(str);
var str=obj.search.slice(1);//?cid=2110&cname=node.js
const querystring=require("querystring");
var obj=querystring.parse(str);//parse 把字符串转为对象
//console.log(obj)
console.log(`班级编号${obj.cid}  课程名称:${obj.cname}`)//班级编号2110  课程名称:node.js

//4.定时器模块(timer)
//(1)一次定时器:
//开启

var timer=setTimeout(function(){console.log('bom!!!')
},3000)
//清除
clearTimeout(timer);

//(2)周期性定时器

var timer=setInterval(function(){
console.log('bom!!!')
},2000)clearInterval(timer)

//(3)立即执行定时器

console.log(2);
setImmediate(function(){console.log(3);
})
console.log(1);
输出 2 1 3

//所有定时器中的回调函数都是在事件队列中执行

//例如:使用周期定时器,每隔3秒钟打印’嘀嘀嘀‘,打印3次后清楚定时器
//方法一:

var i=0;
var timer=setInterval(function(){i++;if(i===3)clearInterval(timer)console.log('嘀嘀嘀')},3000)

//方法二:

var count=0;
var timer=setInterval(function(){console.log('嘀嘀嘀')count++;if(i===3){clearInterval(timer);}
},1000);

//1.立即执行定时器
//processs.nextTick(回调函数)
//2.同步和异步
//同步:在主程序中执行,会阻止后续代码的执行,通过返回值来获取结果
//异步:回调函数
//3.文件系统模块fs

const fs=require('fs');

//(1)查看文件的状态

//方法一:

var s = fs.statSync('./03day01txt.js');

//方法二:

fs.stat('./03day01txt.js',function(err,dataStr){
if(err){console.log('异步的结果'+err)
}console.log('成功'+dataStr)
})
//
console.log('结束')
console.log(s)
//检测是否为目录
console.log(s.isDirectory());//返回false或者true
//检测是否为文件
console.log(s.isFile())

//(2)创建目录

//同步
fs.mkdirSync('./mydir');//在当前文件夹创建一个mydir的文件夹
console.log('结束')
//异步
fs.mkdir('./mydir02',function(err,dataStr){
if(err){console.log('err')}
console.log('结束')
})

//(3)练习使用同步和异步方法移除目录mydir和mydir02

//同步
fs.rmdirSync('./mydir');
console.log('结束')
//异步
fs.rmdir('./mydir02',function(err,dataStr){
if(err){console.log('err')}
console.log('结束')
})

//(4)写入文件

//同步方法:
fs.writeFileSync('./03day01txt.js','涛桑xxx');
//如果文件存在,则会更新内容;如果不存在会新建然后存入内容
console.log('结束')
//异步方法:
fs.writeFile('./03day01txt.js','dierci内容xxx',function(err){if(err){throw err;}
})
console.log("成功");

//(5)追加写入

//同步方法:
fs.appendFileSync('./03day01txt.js','涛桑xxx');
//异步方法:
fs.appendFile('./03day01txt.js','涛桑222xxx\n',function(err){if(err){throw err;}
})
console.log("成功")

//例如:创建数组,包含多个姓名,遍历数组获取每个姓名,将每个姓名使用异步方法写入到文件stu.txt

var arr=['小黄','小明','小红'];
for(i=0;i<3;i++){fs.appendFile('./03day01txt.js',arr[i]+'\n',function(err){if(err){throw err;}console.log("写入成功")
});
}

//方法二:

var arr=['小黄','小明','小红'];
arr= arr.join('\r\n');
fs.appendFile('./03day01txt.js',arr,function(err,dataStr){if (err) {console.log('输入失败' + err.message)}console.log('输入成功' + arr)})

//(6)读取文件

//异步方法:
var data=fs.readFileSync('./03day01txt.js');
console.log(data.toString());
//同步方法:
fs.readFile('./03day01txt.js','utf8',function(err,dataStr){
if (err) {console.log('输入失败' + err.message)}console.log('输入成功' + dataStr)
})//方法二:
fs.readFile(__dirname+'/03day01txt.js','utf8',function(err,dataStr){if(err){return console.log('输出失败'+err.message)}console.log('输出成功'+dataStr)})

//(7)删除文件

fs.unlinkSync('./01txt.txt');

//(8)检测是否存在

console.log(fs.existsSync('./a'));//返回false
//例子:如果文件2.txt不存在,则创建该文件夹
if(!fs.existsSync('./2.txt')){fs.mkdirSync('./2.txt')
}
//例子:如果文件2.txt存在,则删除该文件
if(fs.existsSync('./2.txt')){fs.unlinkSync('./2.txt')
}

//(9)拷贝文件

copyFileSync(源文件路径)
if(!fs.existsSync('./2.txt')){fs.mkdirSync('./2.txt')
}
fs.copyFileSync('./03day01txt.js','./2.txt/2.txt');
//从原文件03day01txt.js拷贝到2.txt/2.txt文件夹下的txt

//4.文件流
//createReadStream() 创建可读取的文件流
//createWriteStream() 创建可写入的文件流
//on(事件名称,回调函数) 添加事件,用于监听事件
//pipe() 管道,可以将读取流添加到写入的流

//5.http协议
//超文本传输协议
//是浏览器和web服务器之间的通信协议
// http模块,用来创建web服务器的模块;通过http模块提供
// 的http.createServer()方法,据能把一台电脑变成web服务器
// 从而对外提供web资源服务
// 注意:每个端口号不能同时被多个web服务占用
// 在实际应用中,URL中的80端口可以被省略

(1)通用头信息
Request URL:请求的URL,要请求的资源
Request Method:请求的方法,对资源的操作方式 分为增删改查
Status Code:响应的状态码
  1**:接收到了请求还没做出响应
  2**:成功的响应
  3**:响应的重定向
  4**:客户端请求的错误
  5**:服务端的错误
(2)响应头信息
Location:设置要跳转的URL
Content-Type:响应的内容类型,可以解决中文乱码 text/html;charset=utf-8
(3)请求头信息// 创建最基本的web服务器

// 1.导入http模块
const http = require("http");
// 2.创建web服务器实例
http.createServer(function(request, response) {response.writeHead(200, { 'Content-Type': 'text/plain' });response.end('Hello World');
}).listen(8081);console.log('Server running at http://127.0.0.1:8081/');

// 3.为服务器实例绑定request时间,监听客户端的请求
// 4.启动服务器


//引入http模块
const http=require('http');
//创建web服务器
const server=http.createServer();
//设置端口,用于访问web服务器
server.listen(45,()=>{console.log('server running at http://127.0.0.1:45')})
//请求服务器
//服务器端接受客户端请求并做出响应
//监听事件:一旦有请求进来,立即做出响应
server.on('request',(req,res)=>{//设置响应的状态码和头信息res.setHeader('Content-Type','text/html;charset=utf-8')res.write('这是你的jianbing')res.end()res.end(str)console.log(str)const str =`您请求的url地址是${req.url},您请求的类型是${req.method}`
})

//例如:使用http模块创建web服务器,添加事件接受请求作出响应
//“这是首页”

const http=require('http');
const server=http.createServer();
server.listen(60,()=>{console.log('server running at http://127.0.0.1:60')
})
server.on('request',(req,res)=>{res.setHeader('Content-Type','text/html;charset=utf-8')
res.wreteHeader()res.write('这是首页')
//    设置响应的状态码302,跳转到tmocc
res.writeHeader(302,{Location:'https://www.tmooc.cn/'});
res.end();
//设置状态码为404
res.writeHead(404);
//设置响应的内容
res.write('not found');
res.end();
})

node.js 基础相关推荐

  1. 构建node.js基础镜像_我如何使用Node.js构建工作抓取网络应用

    构建node.js基础镜像 by Oyetoke Tobi Emmanuel 由Oyetoke Tobi Emmanuel 我如何使用Node.js构建工作抓取网络应用 (How I built a ...

  2. 构建node.js基础镜像_在Android上构建Node.js应用程序

    构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...

  3. 01慕课网《进击Node.js基础(一)》Node.js安装,创建例子

    版本:偶数位为稳定版本,基数为非稳定版本 - 0.6.x - 0.7.x    - 0.8.x -0.9.x    -0.10.x  -0.11.x 概念:Node.js采用谷歌浏览器的V8引擎,用C ...

  4. 前端工程化----Node.js基础篇

    文章目录 1.认识Node.js Node.js是什么 Node.js应用场景 2.Node.js安装和版本管理 Node.js安装 Node.js版本工具 3.Node.js执行文件 4.Node. ...

  5. 360前端星计划--Node.js 基础入门

    01 什么是 Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. https://node ...

  6. Node.js基础使用

    Node.js基础使用 1. vs code 里面如何切换自定义终端? Ctrl+Shift+p 打开命令面板 搜索shell 找到:终端 选择默认Shell进行更改 2. 浏览器 vs node 异 ...

  7. Node.js基础笔记

    Node.js基础笔记 1. NodeJS入门基础 1.1 NodeJS 介绍 1.1.1 NodeJS 是什么 1.1.2 NodeJS 的优势 1.1.3 NodeJS 的技术特性 1.1.4 N ...

  8. Node.js(一、Node.js基础、模块加载机制、包等)

    Node.js(一.Node.js基础.模块加载机制.包等) 1.Node.js基础 1.1.Node是什么 1.2.Node环境安装失败解决方法 1.2.1.Node环境搭建 1.2.2.错误代码2 ...

  9. 【学习笔记】node.js基础介绍

    Node.js的基本概念 Node.js是编写高性能网络服务器的Javascript工具包(用JS开发服务端程序). 特点:单线程.异步.事件驱动: 举个Apache服务器运行方式的例子,比如线程池里 ...

  10. Node.js基础知识普及

    Node.js只支持单线程,故不会产生死锁,采用非阻塞I/O机制和事件环机制.非常适合与开发需要处理大量并发的输入/输出的应用程序.   一. Node.js的核心模块有很多,这里先写几个比较常用的( ...

最新文章

  1. HTML5 2D平台游戏开发#7Camera
  2. python操作mysql操作步骤
  3. debian下面的apt-fast安装
  4. 收集最全的Joomla教材网站和joomla模板网站
  5. 软件架构设计案例_透过现象看本质:常见的前端架构风格和案例
  6. fanuc机器人自动程序前怎么回原点_FANUC机器人的执行程序
  7. UVA11577 Letter Frequency【文本】
  8. java画板代码_java 画板画图程序
  9. pytorch def __init__(self, num_classes, bkg_label, top_k, conf_thresh, nms_thresh):
  10. 深入浅出 NXLog (一)
  11. Android开发中,怎样调用摄像机拍照以及怎样从本地图库中选取照片
  12. 不使用vue-cli 搭建vue项目
  13. 分布式事务解决方案FESCAR
  14. “幸运盒子”可悲的命运
  15. 小米电视怎么看cctv?安装电视家教你锁定2022世界杯“观赛位”
  16. Hive数据仓库数据分析
  17. 最全LaTeX 数学公式、字母符号、上下标、列表矩阵、公式注释、分数二进制数、分割字符、逻辑集合论、否定符号等
  18. 给大家推荐一个比较好的VC论坛【VC驿站】
  19. 微信小程序第三方平台提交时,出现errcode: 85085,errmsg: submit audit reach limit, please try later hint的解决办法
  20. 2021中国美食消费用户行为洞察——附下载链接

热门文章

  1. 建筑力学与结构【3】
  2. 安卓开发个人小作品(1) - 有声计算器
  3. 快速学习JS的思考方法、有用
  4. 高解析APNG(动画PNG). 2D. 3D APNG's的动态图
  5. Stanford University courses of computer science department(斯坦福计算机系课程设置)
  6. ASCII码_字符与数字转换等问题
  7. Type-C PD充电
  8. android webview崩溃,Android-未知的webview崩溃原因
  9. 12.2 数据库控制文件复制到ASM磁盘组
  10. ASM磁盘组中的控制文件丢失处理