이 글에서는 주로 vue + vuex + koa2 개발 환경 구축 및 예제 개발에 대한 자세한 설명을 소개하고 참고하겠습니다.
Written before
이 기사의 주요 목적은 Koa 프레임워크를 사용하여 웹 서비스를 구축하는 방법을 배우고 이를 통해 프런트엔드 호출을 위한 일부 백엔드 인터페이스를 제공하는 것입니다.
이 환경을 구축하는 목적은 다음과 같습니다. 프론트엔드 엔지니어가 백엔드 엔지니어와 인터페이스에 대해 합의한 후 공동 디버깅 전에 백엔드에서 데이터를 요청하는 기능은 다음과 같습니다. 프런트엔드에 직접 작성하는 대신 프런트엔드 엔지니어가 직접 몇 가지 죽은 데이터를 작성합니다. 즉, 백엔드 인터페이스를 시뮬레이션합니다.
물론, 이 전체 과정(환경 구축 + 샘플 데모 개발)에는 다음과 같은 지식 포인트가 포함됩니다.
포함 사항:
koa2 지식 포인트
노드 지식 포인트
교차 도메인 문제
fetch 사용
axios 사용
약속의 참여
vuex -> 상태, 돌연변이 및 액션의 사용
1부: 환경 설정
vue + vuex 환경
첫 번째는 vue + vue-router + vuex의 환경입니다. 우리는 vue-cli 스캐폴딩을 사용하여 프로젝트를 생성합니다. vue를 사용할 수 있는 학생들은 이에 대해 잘 알고 있어야 합니다.
// 全局安装脚手架工具 npm i vue-vli -g // 验证脚手架工具安装成功与否 vue --version // 构建项目 vue init webpack 项目名 // 测试vue项目是否运行成功 npm run dev
Scaffolding으로 생성된 vue 프로젝트에는 vuex가 포함되어 있지 않으므로 vuex를 다시 설치하세요.
// 安装vuex npm i vuex --save
koa2 환경
프론트엔드 프로젝트가 빌드된 후 백엔드 서비스 빌드를 시작하겠습니다.
먼저 개발 도구(webstorm이든 sublime이든)에서 새 디렉터리를 만들어 koa 기반의 웹 서비스를 구축하세요.
여기서는 이 디렉토리의 이름을 koa-demo로 지정하는 것이 좋습니다.
그런 다음 실행:
// 进入目录 cd koa-demo // 生成package.json npm init -y // 安装以下依赖项 npm i koa npm i koa-router npm i koa-cors
koa와 두 개의 미들웨어를 설치하면 환경이 완성됩니다.
파트 2: 샘플 개발
환경은 사용을 위해 구축되었으므로 즉시 데모를 작성하겠습니다.
데모 개발은 개발 환경에서 코드 작성 방법을 연습하는 과정일 뿐만 아니라, 환경이 올바르게 설정되었는지, 사용 가능한지 확인하는 과정이기도 합니다.
백엔드 인터페이스 개발
이 예에서는 백엔드에서 JSON 데이터를 프런트엔드로 반환하기 위한 인터페이스를 제공하는 단 하나의 서비스만 제공합니다. 코드에는 주석이 포함되어 있으므로 코드로 직접 이동하세요.
server.js 파일
// server.js文件 let Koa = require('koa'); let Router = require('koa-router'); let cors = require('koa-cors'); // 引入modejs的文件系统API let fs = require('fs'); const app = new Koa(); const router = new Router(); // 提供一个/getJson接口 router .get('/getJson', async ctx => { // 后端允许cors跨域请求 await cors(); // 返回给前端的数据 ctx.body = JSON.parse(fs.readFileSync( './static/material.json')); }); // 将koa和两个中间件连起来 app.use(router.routes()).use(router.allowedMethods()); // 监听3000端口 app.listen(3000);
여기 './static/material.json' 경로에 json 파일이 사용됩니다. json 파일의 코드는 다음과 같습니다.
// material.json文件 [{ "id": 1, "date": "2016-05-02", "name": "张三", "address": "北京 清华大学", }, { "id": 2, "date": "2016-05-04", "name": "李四", "address": "上海 复旦大学", }, { "id": 3, "date": "2016-05-01", "name": "王五", "address": "广东 中山大学", }, { "id": 4, "date": "2016-05-03", "name": "赵六", "address": "广东 深圳大学", }, { "id": 5, "date": "2016-05-05", "name": "韩梅梅", "address": "四川 四川大学", }, { "id": 6, "date": "2016-05-11", "name": "刘小律", "address": "湖南 中南大学", }, { "id": 7, "date": "2016-04-13", "name": "曾坦", "address": "江苏 南京大学", }]
그런 다음 다음 명령을 사용하여 서비스를 시작합니다.
node server.js
인터페이스가 좋은지 테스트해보세요
브라우저를 열고 http://127.0.0.1:3000/getJson을 입력하세요. json 파일의 json 데이터가 페이지에 표시되는지 확인합니다. 표시될 수 있으면 json 데이터를 제공하는 서비스를 설정했다는 의미입니다.
프런트엔드 호출 백엔드 인터페이스의 예
핵심 사항을 강조하고 간섭을 제거하며 이해를 쉽게 합니다. 프런트엔드는 구성 요소를 작성합니다. 먼저 웹 서비스의 getJson 인터페이스를 호출하는 버튼과 백엔드에서 반환된 데이터를 가져온 후 배치되는 버튼입니다. 구성 요소 영역의 이 부분이 표시됩니다.
먼저 컴포넌트 파일을 살펴보겠습니다
<template> <p class="test"> <button type="button" @click="getJson">从后端取json</button> <p class="showJson">{{json}}</p> </p> </template> <script> import {store} from '../vuex' export default { computed: { json(){ return store.state.json; } }, methods: { getJson(){ store.dispatch("getJson"); } } } </script> <style scoped> .showJson{ width:500px; margin:10px auto; min-height:500px; background-color: palegreen; } </style>
아주 간단하므로 길게 설명하지 않겠습니다.
그런 다음 vuex 파일을 살펴보세요.
import Vue from 'vue' import Vuex from 'vuex'; Vue.use(Vuex) const state = { json: [], }; const mutations = { setJson(state, db){ state.json = db; } } const actions = { getJson(context){ // 调用我们的后端getJson接口 fetch('http://127.0.0.1:3000/json', { method: 'GET', // mode:'cors', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, }).then(function (res) { if(res.status === 200){ return res.json() } }).then(function (json) { //console.log(typeof Array.from(json), Array.from(json)); context.commit('setJson', Array.from(json)); }) } }; export const store = new Vuex.Store({ state: state, mutations: mutations, actions: actions, })
좋아요, 코드가 완성되었습니다.
axios에 대해 이야기해 보겠습니다
이 데모의 가져오기를 axios로 변경하려면 다음을 수행해야 합니다.
1 vuex 파일에서 axios를 설치하고
npm i axios import axios from 'axios'
2. 부분을 가져옵니다. 코드를
const actions = { getJson(context){ axios.get('/json', { method: 'GET', // mode:'cors', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, }).then(function (res) { if(res.status === 200){ return res.data } }).then(function (json) { //console.log(typeof Array.from(json), Array.from(json)); context.commit('setJson', Array.from(json)); }) } };
3으로 바꾸세요. 웹팩에서 이를 수정하고 config/index.js 파일에 ProxyTable 항목 구성을 추가하세요.
proxyTable: { '/json': { target: 'http://127.0.0.1:3000', changeOrigin: true, pathRewrite: { '^/json': '/json' } } },
Postscript
Vue 스캐폴딩을 기반으로 구축된 프로젝트입니다. 비동기 데이터 검색을 시뮬레이션하기 위해 스캐폴딩에 의해 생성된 정적 폴더에 데이터를 직접 배치하여 백그라운드에서 얻은 데이터인 척할 수도 있습니다.
하지만 Express나 Koa를 기반으로 웹 서비스를 구축하는 것은 실제로 프론트엔드 엔지니어가 마스터해야 할 부분입니다.
위 내용은 제가 여러분을 위해 정리한 내용입니다. 앞으로 도움이 되길 바랍니다.
관련 기사:
vue에서 정방향 새로 고침 및 역방향 새로 고침 없음 효과를 얻는 방법
jquery를 사용하여 PC 측 회전식 차트를 작성하는 방법 (자세한 튜토리얼)
WeChat 애플릿에서 여러 파일 다운로드를 구현하는 방법
vue.js를 사용하여 팝업 상자만 재생된다는 것을 인식하는 방법 한번
위 내용은 vue+vuex+koa2를 사용하여 개발 환경을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!