express脚手架 & myapl & 后端跨域

express

把它用做为JS服务器wamp(A apache),apache运行PHP语言的服务器(系统环境)

nodejs它也可以构造服务器,跑JS

express其实就是先想用JS语言配合nodejs环境搭建服务器
服务器作用就是处理请求,响应结果

前端后端
客户端服务端
浏览器服务器
JS,HTML,CSSPHP(APACHE),JS(NODEJS),JAVA(JDK)

http://localhost:3000/index.html?id=1#hash

httplocalhost3000/index.html?id=1#hash
协议域名端口路由参数哈希值

切换不同的路由,就进入不同的逻辑,
也就是浏览器输入不同路径,页面就有不同的返回结果

var express = require('express')
var app = express()
 
app.get('/', function (req, res) {
  res.send('Hello World')
})

app.get('/home', function (req, res) {
  res.send('home页面')
})
 
app.listen(3000)

熟悉restfull,也就是灵活运用get,post,put,delete,copy

express的脚手架

全局安装

npm install -g express-generator@4

在一个文件夹里面用express命令创建应用架构

express test
cd test

进入test文件夹安装依赖,推荐cnpm安装所有依赖

npm install

启动应用

SET DEBUG=test:*
npm start

访问在浏览器3000端口号

http://localhost:3000

创建路由

进入到test目录的routes文件夹,然后复制users.js

你可以改变/home这里的路径

var express = require('express');
var router = express.Router();
router.get('/home', function(req, res, next) {
  res.send('hello world');
});
module.exports = router;

app.js添加以下两条,该路由就完成了

var homeRouter = require('./routes/home');
//code
app.use('/test', homeRouter);

访问该路径

http://localhost:3000/test/home

mysql

连接数据库

//select * from students where username = 
var mysql = require('mysql');
var connection = mysql.createConnection({
	host: 'localhost',
	user: 'lemon',
	password: '123456',
	database: '1806'
});
connection.query('INSERT INTO students SET ?', [{
	username: req.body.username,
	password: req.body.password
}], function(error, results, fields) {
	if(error) throw error;
	res.send("success");
});
connection.end();

该方法操作数据库先创建一个池,后续查询数据直接操作池内数据,提高数据库操作性能

var mysql = require('mysql');
var pool  = mysql.createPool(...);
 
pool.getConnection(function(err, connection) {
  if (err) throw err; // not connected!
  // Use the connection
  connection.query('SELECT something FROM sometable', function (error, results, fields) {
    // When done with the connection, release it.
    connection.release();
    // Handle error after the release.
    if (error) throw error;
    // Don't use the connection here, it has been returned to the pool.
  });
});

mysql数据库操作方法等封装

var mysql = require('mysql');
var pool  = mysql.createPool(...);

let connect = () => {
    return new Promise((resolve, reject) => {
        pool.getConnection((err, connection) => {
            !err ? resolve(connection) : reject(err)
        });
    })
}
//修改mysql数据
let update = (table, params1, params2) => {
    return new Promise(async (resolve, reject) => {
        let connection = await connect();
        connection.query(`UPDATE ${table} SET ? WHERE ?`, [{
            ...params1
        }, {
            ...params2
        }], (err, results, fields) => {
            !err ? resolve(results) : reject(err)
            connection.release();
        })
    })
}

express解决跨域请求

//app.js文件添加以下内容
//添加位置:app.use(express.static(path.join(__dirname, 'public'))) 之后,
//	       app.use('/', indexRouter) 之前

app.use(function(req, res, next) {
  // res.cors('Access-Control-Allow-Origin', '*');      //第一种
  res.setHeader('Access-Control-Allow-Origin', '*');    //第二种
  next();
});

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值