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]]])

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值