IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> nodeJS -> 正文阅读

[JavaScript知识库]nodeJS

1.commonJS

commontJS是node模块化规范,这个规范有多个子规范。

modules:用于模块化导出,导出方式使用module.exports,引入使用require函数。

例如a.js文件写入

function test() { 
	console.log(test);
}
function test1() { 
	console.log(test1);
}
module.exports = {
	test,
    test1
}
或者
exports.test=test
exports.test1=test1

index.js文件中

const t = require('./a')
t.test()
t.test1()

该规范值node规定的模块,但是一般在相关开发过程中,使用比较多的模块化规范是使用ES6规范。

2.npm工具的使用

npm是包管理工具,用于下载、卸载和管理第三方插件使用的。

npm init 初始化package.json包依赖文件,使用npm install packagename下载相关包。相关比较简单,只要使用过vue就不解释了。

还有许多类似npm类的资源管理工具,例如rpm,nrm,yarn等。

3.ES6模块化开发

在package.json中配置模块化类型为module,此时就可以使用ES6模块化标准了?。

例如:

const a = 12;
const fn = function () { 
	console.log("aaa");
}
export { 
	a,
	fn
}

使用:

import { a, fn } from './b.js'
console.log(a);
fn()

注意:es模块化和commonjs模块化不兼容

4.node内置模块

http模块

创建服务器:createServer()

//引入http模块
const http = require("http")
//创建服务器并监听相关端口号,只要访问该端口号,将会调用createServer的回调函数
//req:浏览器请求的资源
//res:服务器响应的资源
http.createServer((req, res) => { 
    //req.url:获取浏览器地址栏的url,注意每次都会获取到favicon.ico。
	//write:向浏览器页面写出内容,end:结束打印
	//打印页面
	//添加项目头
	res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" })
	res.write("12")
	res.write(`
	<html>
		<h1>你好</h1>
		<div>我是div服务器</div>
	</html>
	`)
	res.end()

}).listen(3000, () => { 
	console.log("开启服务器");
})

注意:如果开启了ES模块化先要删除ES模块化,否则会报错。

http—jsonp

jsonp规定,在前端请求的时候,需要参数需要带一个名为callback的回调函数名,同时在前端写该回调函数,在请求成功之后,将会执行该回调函数,将请求结果作为参数传入该回调函数。

?此时后端处理的时候,需要将url进行解析,即url中的parse方法第二个值传true,表示该url为可解析url。

此时发送给前端的是一个json字符串,前面的参数表示的是前端的回调函数名称。?

http-CORS

跨域,前端使用反向代理,node使用的时候,提供了CORS跨域处理方案,即为请求头添加access-control-allow-origin

	res.writeHead(200, {
		"Content-Type": "application/json;charset=utf-8",
		"access-control-allow-origin":"*"
	})

http-get

这里获取到的数据使用的是https,引入就行了,http的get和https的get是一样的用法。自定义一个函数

?res.on("data",(chunk)=>{data+=chunk}):这段表示的是get获取数据是一段一段的,我们添加一个on函数监听data数据,获取到一段就拼接一段。

res.on("end",(chunk)=>{log(data)}):这段表示的是,当获取到全部数据的时候触发该监听函数。此时的data已经获取结束了,在发给前端。

const https = require("https")
const url=require("url")
//引用url模块
http.createServer((req, res) => { 
	let urlOBJ = url.parse(req.url)
	res.writeHead(200, {
		"Content-Type": "application/json;charset=utf-8",
		"access-control-allow-origin":"*"
	})
	if (urlOBJ.pathname == '/home') { 
		//在此向百度要数据
		httpget((data) => { 
			http.end(`${data}`)
		})
		res.end(`120`)
	}
	res.end(`12`)
}).listen(3000, () => { 
	console.log("开启服务器");
})
function httpget(callbackHttp) { 
	let data=https.get('url', (res) => { 
			res.on('data', (chunk) => { 
				data += chunk
			})
			res.on('end', () => { 
				callbackHttp(data)
			})
		})
}

上面代码的方式比较好,直接传入一个回调函数。

http-post

用法和get类似,只是需要配置相关请求头和端口,使用的是基本请求方法request,使用的时候和get一模一样,我这里传入的也是一个函数。注意,post在函数内一定要发送数据。

?http-爬虫

这里使用的是第三方的爬虫插件cheerio。我们获取百度的数据.

下载

npm install?cheerio

function httpget(callbackHttp) { 
	let data=https.get('https://baidu.com', (res) => { 
			res.on('data', (chunk) => { 
				data += chunk
			})
			res.on('end', () => { 
           let iodata=  getchoorio(data)      
            http.end(`${data}`)
			})
		})
}
function getchoorio(data){
    let cheerio=cheerio.load(data)
    //相关处理,具体可查cheerio文档
    return cheerio
}

url模块

旧版本方式:

引入模块

const url = require("url")

parse():将url地址转化成对象

url.parse():将对象地址转化成url

url.format()url.resolve():url路径拼接或者替换

url.format("http://localhost:3000/home","DemoPagesOne")//home替换成DemoPagesOne
url.format("http://localhost:3000/home/","DemoPagesOne")//DemoPagesOne拼接在home后面

新版本

通过全局的URL创建url

new URL(input[, base])

const myURL = new URL('/foo', 'https://example.org/');
// https://example.org/foo

相关方法可以通过官网查看。

querystring模块

用于将参数链表转换成对象或者将对象转化成参数列表

querystring 查询字符串 | Node.js API 文档

querystring.parse(str[, sep[, eq[, options]]])

querystring.stringify(obj[, sep[, eq[, options]]])

未完成待续.......

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 16:49:40  更:2022-06-26 16:51:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 10:07:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码