如果有一天,人手紧缺,自己搞了前端还要搞服务端,今天我们把这个项目架子搭起来,让前端同学也可以轻松全栈开火。
技多不压身,活儿多了可压身啊
目录
这个项目是准备做出来早餐卖油条的,所以新建一个youtiao-pc的文件夹吧
打开我心爱的vscode,用vscode打开这个youtiao-pc
推荐淘宝源,比较快
执行 npm install -g @vue/cli
执行 vue create youtiao-qianduan 这个vue项目是用来自己上午写前端vue组件的,创建完了看一眼自己心爱的vscode,是不是感觉特别熟悉。
执行cd youtiao-qianduan
再执行npm run serve
一切都跟vue项目一样,启动起来以后,公司开发就剩自己了,以后上午写vue
再打开一个命令窗口,文件路径随机又切换到了youtiao-pc
执行 npm install koa-generator -g
执行 koa youtiao-houduan
成功后,提示需要安装依赖 ,再次执行 cd youtiao-houduan
安装依赖 npm install
成功后,就可以启动了
执行npm run dev
到这里,2个基本的架子就安装好了。 以后下午就可以安心的写koa的服务单接口了
vue通过localhost:8080查看页面,注意本文中端口是8080,
koa通过 localhost:3000启动页面,注意这里的端口是3000
本文用一下axios吧,安装axios, 执行npm install axios
然后打开vue项目,也就是我们的youtiao-qianduan项目,打开HelloWorld.vue文件,引入axios.。并发送一个接口请求,请求一下明天早上可以卖多少油条吧
- import axios from "axios"
- export default {
- name: 'HelloWorld',
- props: {
- msg: String
- },
- created(){
- this.getData();
- },
- methods: {
- getData() {
- axios.get('/youtiao/list').then((res) => {
- console.log(res.data)
- })
- }
- }
- }
通过这里就知道了, 服务端要有一个对应的 /youtiao/list 的接口
app.js添加一条油条早餐的路由引入,之前脚手架搭建的文件中有对应的内容,改一改就可以
- var youtiao = require('./routes/youtiao');
-
- app.use(youtiao.routes(), youtiao.allowedMethods());
对应routes文件夹下添加youtiao.js
- var router = require('koa-router')();
-
- // 使外部路由接口可以链式调佣
- router.prefix('/youtiao');
-
- router.get('/list', function *(next) {
- this.body = {
- code: 200,
- data: [
- {name: "油条", count: "200根"},
- {name: "豆浆", count: "200碗"},
- {name: "豆腐脑", count: "1000根"},
- ]
- };
- });
-
- module.exports = router;
这样,给前端提供的接口就是 /youtiao/list 了
我们目前启动了2个项目,一个端口是8080,一个端口是3000,所以处于跨域状态,平时都是服务端帮我们解决跨域问题,今天我们自己来搞一搞
再次打开前端youtiao-qianduan项目的vue.config.js文件,添加接口调用代理配置
- const { defineConfig } = require('@vue/cli-service')
- module.exports = defineConfig({
- transpileDependencies: true,
- publicPath: './',
- lintOnSave: false,
- devServer: {
- host: '0.0.0.0',
- port: 8080,
- // 注意,本文服务端端口号是3000
- proxy: 'http://localhost:3000'
- }
- })
平时都是服务端同学帮我们设置,今天我们自己来设置一下,体会一下这种满足感吧
打开youtiao-houduan 项目下的app.js
添加以下代码:
- // 引入允许跨域包
- const cors = require('koa2-cors');
-
- // 服务端设置允许跨域
- app.use(cors({
- // 允许的域
- origin: function(ctx) {
- return ctx.header.origin
- },
- // 这些HTTP请求类型熟不熟
- allowMethods: [ 'GET', 'POST', 'PUT', 'DELETE', 'OPTIONS' ],
- // 跨域合法性设置
- credentials: true,
- }));
启动vue项目,刚刚是在created这个生命周期发送的请求,所以刷新一下前端工程就可以