前端笔记-node服务器搭建

win10 环境下node服务器搭建

服务器搭建流程(傻瓜式操作)

  1. 准备空文件夹
    在这里插入图片描述

  2. 启动终端 cd到文件夹中
    在这里插入图片描述

  3. 将该普通文件夹初始化成项目文件件
    执行 npm init
    一路回车
    在这里插入图片描述

  4. 查看项目中的package.json文件
    创建index.js文件
    在这里插入图片描述

  5. 安装服务器模块koa
    执行 cnpm install koa --save
    ( 额外插播一条广告: 你的电脑没有cnpm
    需要在你的电脑上的终端中 安装 cnpm
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    )
    在这里插入图片描述

  6. 编写服务器的代码
    粘贴 koa 模块代码
    安装完koa模块以后 在这里插入图片描述node_modules文件夹下找到 koa文件夹的Readme.me
    在这里插入图片描述
    查看26-38行内容:
    在这里插入图片描述
    复制到 index.js 文件中:(去掉不要的注释)
    在这里插入图片描述
    或者直接复制:

const Koa = require('koa');
const app = new Koa();

//下面是写接口
app.use(ctx => {
  ctx.body = 'Hello Koa';
});

app.listen(3000);//这里是端口号,可以修改
  1. 安装路由模块,进行服务器接口编写
    1.cnpm install koa-router --save
    在这里插入图片描述
    2.粘贴路由代码
    代码koa-router文件夹的lib/router.js 中 example basic use下 即30-41行
    3.修改代码 const Router = require('koa-router');
    此时index.js代码如下:
const Koa = require('koa');
const app = new Koa();

const Router = require('koa-router');
const router = new Router();

router.get('/', (ctx, next) => {
  ctx.body = 'Hello Koa';
});

app
  .use(router.routes())
  .use(router.allowedMethods());
app.listen(3000);
console.log('node is runing...')//加一行打印方便调试
  1. 运行服务器进行测试(不想测试的可以跳过这一步)
    启动服务器: node index.js
    在这里插入图片描述
    访问:http://localhost:3000/
    在这里插入图片描述
    成功!!

  2. 安装参数解析模块
    1.cnpm install koa-bodyparser --save
    2.koa-bodyparser文件夹下Readme.me 粘贴代码 37 40 行
    此时index.js代码:

const Koa = require('koa');
const app = new Koa();

const Router = require('koa-router');

const router = new Router();
app.use(bodyParser());

var bodyParser = require('koa-bodyparser');
router.get('/', (ctx, next) => {
  ctx.body = 'Hello Koa';
});

app
  .use(router.routes())
  .use(router.allowedMethods());
app.listen(3000);
console.log('node is runing...')

GET 接收参数 ctx.request.query
POST 接收参数 ctx.request.body
(post接口测试需要使用工具postMan来进行测试)

  1. 将服务器开发访问权限(解决跨域问题,可以不安装)
    1.安装 跨域模块 cnpm install koa-cors --save
    2.koa-cors 文件夹下 Readme.me 粘贴代码 19 22
    即:
    var cors = require('koa-cors');
    app.use(cors());

  2. 让服务器具有文件访问的能力
    1.安装静态资源模块 cnpm install koa-static --save
    2.在项目中创建 static 文件夹
    3.koa-static 文件夹下 Readme.me 粘贴代码 43 54 (54行需要修改)
    即:
    const serve = require('koa-static');
    app.use(serve(__ dirname + ' /static/'));

    4.访问路径测试(不用带上static 这个路径,static文件夹下放一个111.jpg图片)
    http://localhost :3000/111. jpg

  3. 让服务器具有访问数据库mysql的能力
    1.安装 mysql 模块 cnpm install mysql --save
    2.粘贴代码
    在路由外边:

        var mysql = require('mysql');
        var db = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: '',
            database : 'leifeng'
        });
        db.connect();
    

    在接口中访问数据库:

    db.query("sql语句"function (err,data,fields) {
    //data ---> [数据库类型的数据,是不可以直接使用的]
            data = JSON.stringify(data)
            data = JSON.parse(data)
            //[对象,对象] ---> 可以直接使用
            console.log(data)
        })
    
  4. Promise承诺写法

    1. 接口使用Promise
    	var prom = new Promise(function (you_jieguo,mei_jieguo) {
       		db.query("sql语句"function (err,data) {
            	if (err) {
                	mei_jieguo(err)
            	} elset
                	data = JSON. stringify(data)
                	you_jieguo(data)
            	}
        	})
    	})
    	ctx.body = await prom;
    
    1. 给接口增加async
        '/get_ user', async (ctx, next)
    
  5. 给服务器安装文件模块

    1. cnpm install koa-body --save
    2. 贴代码
        //文件上传模块
        const koa_body = require("koa-body")
        app.use(koa_body({
            multipart: true,
            formidable: {
                maxFileSize: 1024 * 1024 * 200
            }
        }))
    
    1. 在文件上传接口中编写上传并保存文件的代码
    router.post('/upload', (ctx, next) => { 
    	// GET请求: ctx.request.query 
    	// POST请求: ctx.request.body
    	// FILE文件接收(post请求): ctx.request.files 
    	var file = ctx.request.files.xxx
    	var file_name = file.name
    	var file_name_arr = file_name.split(".")
    	var file_type = file_name_arr[file_name_arr.length - 1]
    	var file_path = file.path
    	// file_path stream ---->  /static/imgs/sb.jpg
    	// 1.导入文件操作系统(fileSystem 简称fs)
      		// const fs = require("fs")
    	// 2.利用文件操作系统将 path 中的数据流读出来
    	var read_stream = fs.createReadStream(file_path)
    	// 3.准备一个数据流路径 /static/imgs/sb.jpg
    	var cur_time = new Date().getTime()
    	var des_name = cur_time + "." + file_type
    	var des_stream = fs.createWriteStream("./static/ imgs/" + des_name)
    	//4.将2中的数据流流入4中
    	read_stream.pipe(des_stream) 
    	ctx.body ="上传成功" 
    });
    

此时一个node服务器就搭建好了,之后我们只需要在里面写接口,就可以实现远程访问数据库,读取文件操作了。

inde.js代码:

	const Koa = require('koa');
	const app = new Koa();
	
	const fs = require("fs")
	
	const Router = require('koa-router');
	const router = new Router();
	
	var bodyParser = require('koa-bodyparser');
	app.use(bodyParser());
	
	var cors = require('koa-cors');
	app.use(cors())
	
	const serve = require('koa-static');
	app.use(serve(__dirname + ' /static/'));
	
	var mysql = require('mysql');
	var db = mysql.createConnection({
	  host: 'localhost',
	  user: 'root',
	  password: '',
	  database: 'leifeng'
	});
	db.connect();
	
	const koa_body = require("koa-body")
	app.use(koa_body({
	    multipart: true,
	    formidable: {
	        maxFileSize: 1024 * 1024 * 200
	    }
	}))
	
	router.get('/', (ctx, next) => {
	  ctx.body = 'Hello Koa';
	});
	
	router.post('/upload', (ctx, next) => { 
	  // GET: ctx.request.query 
	  // POST: ctx.request.body
	  // FILE: ctx.request.files 
	  var file = ctx.request.files.xxx
	  var file_name = file.name
	  var file_name_arr = file_name.split(".")
	  var file_type = file_name_arr[file_name_arr.length - 1]
	  var file_path = file.path
	  // file_path stream ---->  /static/imgs/sb.jpg
	  // 1.导入文件操作系统(fileSystem 简称fs)
	      // require("fs")
	  // 2.利用文件操作系统将 path 中的数据流读出来
	  var read_stream = fs.createReadStream(file_path)
	  // 3.准备一个数据流路径 /static/imgs/sb.jpg
	  var cur_time = new Date().getTime()
	  var des_name = cur_time + "." + file_type
	  var des_stream = fs.createWriteStream("./static/ imgs/" + des_name)
	  //4.将2中的数据流流入4中
	  read_stream.pipe(des_stream) 
	  ctx.body ="上传成功" 
	});
	
	
	app
	  .use(router.routes())
	  .use(router.allowedMethods());
	app.listen(3000);
	console.log('node is runing...')
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值