P2-27node.js-fs,express,mysql,跨域

node.js(分为内置模块和第三方模块)

  • node是什么:是将chrome浏览器中的负责解析js部分的V8引擎剥离出来,做成了一个软件,以做到让我们写的JS代码脱离浏览器可以执行。这个执行环境中只有ECMAscript部分,没有DOM和BOM。
  • node如何使用:node中有很多功能,分成了若干个模块,用户可以按需使用,需要用哪个,使用commonJs写法require+"模块名"引入模块

fs (内置模块)读取和写入文件

const fs = require("fs");
//异步读取文件
fs.readFile("data.txt", (error, data) => {
    if (error) {
        console.log(error)
    } else {
        console.log(String(data))
    }
})

//同步读取
console.log(String(fs.readFileSync("data.txt")))
console.log("hello~")

//异步写入文件
fs.writeFile("data1.txt", "老王", error => {
    if (error) { console.log(error) } else {
        console.log("写入成功,嘿嘿~")
    }
})
//同步写入
fs.writeFileSync("data2.txt", "小仙(好程序员)")

第三方模块

第三方模块下载: npm install 模块名 --save 或 npm i 模块名 -S
第三方模块网站:https://www.npmjs.org
切换npm下载淘宝镜像国内下载源:npm config set registry https://registry.npm.taobao.org

express:类似于Apache软件,对外开放某一个端口提供Web服务

//express不是一个对象,而是一个方法,返回函数本身,加()直接调用
let express = require("express")();
const port = 8080;

// 计划监听来自前端的get(http)请求(不是一个静态请求,而是一个路由请求),如果请求路由正确,则自动调用第二个参数,即函数
//request:是前端的请求;response:是要返回给前端的内容
express.get("/list",(request,response)=>{
// 接收到来自前端的请求name参数,并赋值到name变量中
	let name = request.query.name;
//成功后
	// 在后端控制台输出内容
	console.log("接收到来自前端发送的请求");
	// 向前端返回数据
	response.send(`${name},success!!!!`)
})

// 监听来自前端的get请求(不是一个静态请求,而是一个路由请求)
express.get("/details",(request,response)=>{
	// 在后端控制台输出内容
	console.log("接收到来自前端发送的details路由请求");
	// 向前端返回数据
	response.send("哈哈哈哈哈")
})


// 监听在哪一个8080端口上
express.listen(port)
console.log("server is running at " + port)

解决跨域的代码(反向代理,后端独立解决,直接粘贴)

// Node解决跨域问题11
express.all("/*", function(req, res, next) {
    // 跨域处理
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1');
    res.header("Content-Type", "application/json;charset=utf-8");
    next(); // 执行下一个路由
})
//或者09
express.all("*",function(req,res,next){
	//设置允许跨域的域名,*代表允许任意域名跨域
	res.header("Access-Control-Allow-Origin","*");
	//允许的header类型
	res.header("Access-Control-Allow-Headers","content-type");
	//跨域允许的请求方式 
	res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
	if (req.method.toLowerCase() == 'options')
		res.send(200);  //让options尝试请求快速结束
	else
		next();
})

node-mysql 读取数据库

mysql/express 配合使用

let mysql = require("mysql");
let express = require("express")();
const port = 8080;
// Node解决跨域问题
express.all("/*", function(req, res, next) {
    // 跨域处理
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1');
    res.header("Content-Type", "application/json;charset=utf-8");
    next(); // 执行下一个路由
})
// 规划链接
let sql = mysql.createConnection({
	host     : 'localhost',
	user     : 'root',
	password : '123456',
	database : 'tech',
	timezone:"08:00",
	port:3306
});

// 尝试链接
sql.connect();
//接收来自前端的请求并查找数据库并向前端返回查找结果
express.get("/getStudentsList",(request,response)=>{
	sql.query(`SELECT * FROM students`,(error,data)=>{
		if(error){
			console.log(error);
		}
		else{
			response.send(data)
		}
	})
})

// 监听在哪一个8080端口上
express.listen(port)
console.log("server is running at " + port)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值