>  기사  >  웹 프론트엔드  >  vue+vuex+koa2를 사용하여 개발 환경을 구축하는 방법

vue+vuex+koa2를 사용하여 개발 환경을 구축하는 방법

亚连
亚连원래의
2018-06-11 11:20:541825검색

이 글에서는 주로 vue + vuex + koa2 개발 환경 구축 및 예제 개발에 대한 자세한 설명을 소개하고 참고하겠습니다.

Written before

이 기사의 주요 목적은 Koa 프레임워크를 사용하여 웹 서비스를 구축하는 방법을 배우고 이를 통해 프런트엔드 호출을 위한 일부 백엔드 인터페이스를 제공하는 것입니다.

이 환경을 구축하는 목적은 다음과 같습니다. 프론트엔드 엔지니어가 백엔드 엔지니어와 인터페이스에 대해 합의한 후 공동 디버깅 전에 백엔드에서 데이터를 요청하는 기능은 다음과 같습니다. 프런트엔드에 직접 작성하는 대신 프런트엔드 엔지니어가 직접 몇 가지 죽은 데이터를 작성합니다. 즉, 백엔드 인터페이스를 시뮬레이션합니다.

물론, 이 전체 과정(환경 구축 + 샘플 데모 개발)에는 다음과 같은 지식 포인트가 포함됩니다.

포함 사항:

  1. koa2 지식 포인트

  2. 노드 지식 포인트

  3. 교차 도메인 문제

  4. fetch 사용

  5. axios 사용

  6. 약속의 참여

  7. 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 &#39;../vuex&#39;
  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 &#39;vue&#39;
import Vuex from &#39;vuex&#39;;

Vue.use(Vuex)
const state = {
  json: [],
};

const mutations = {
 setJson(state, db){
  state.json = db;
 }
}

const actions = {
 getJson(context){
  // 调用我们的后端getJson接口
  fetch(&#39;http://127.0.0.1:3000/json&#39;, {
   method: &#39;GET&#39;,
   // mode:&#39;cors&#39;,
   headers: {
    &#39;Accept&#39;: &#39;application/json&#39;,
    &#39;Content-Type&#39;: &#39;application/json&#39;,
   },
  }).then(function (res) {
   if(res.status === 200){
    return res.json()
   }
  }).then(function (json) {

   //console.log(typeof Array.from(json), Array.from(json));
   context.commit(&#39;setJson&#39;, 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 &#39;axios&#39;

2. 부분을 ​​가져옵니다. 코드를

const actions = {
 getJson(context){
  axios.get(&#39;/json&#39;, {
   method: &#39;GET&#39;,
   // mode:&#39;cors&#39;,
   headers: {
    &#39;Accept&#39;: &#39;application/json&#39;,
    &#39;Content-Type&#39;: &#39;application/json&#39;,
   },
  }).then(function (res) {
   if(res.status === 200){
    return res.data
   }
  }).then(function (json) {

   //console.log(typeof Array.from(json), Array.from(json));
   context.commit(&#39;setJson&#39;, Array.from(json));
  })
 }
};

3으로 바꾸세요. 웹팩에서 이를 수정하고 config/index.js 파일에 ProxyTable 항목 구성을 추가하세요.

proxyTable: {
   &#39;/json&#39;: {
    target: &#39;http://127.0.0.1:3000&#39;,
    changeOrigin: true,
    pathRewrite: {
     &#39;^/json&#39;: &#39;/json&#39;
    }
   }
  },

Postscript

Vue 스캐폴딩을 기반으로 구축된 프로젝트입니다. 비동기 데이터 검색을 시뮬레이션하기 위해 스캐폴딩에 의해 생성된 정적 폴더에 데이터를 직접 배치하여 백그라운드에서 얻은 데이터인 척할 수도 있습니다.

하지만 Express나 Koa를 기반으로 웹 서비스를 구축하는 것은 실제로 프론트엔드 엔지니어가 마스터해야 할 부분입니다.

위 내용은 제가 여러분을 위해 정리한 내용입니다. 앞으로 도움이 되길 바랍니다.

관련 기사:

vue에서 정방향 새로 고침 및 역방향 새로 고침 없음 효과를 얻는 방법

반응 서버 렌더링 구현 문제에 대해 자세히 설명

jquery를 사용하여 PC 측 회전식 차트를 작성하는 방법 (자세한 튜토리얼)

JS의 Object 객체에 대해 자세히 설명

WeChat 애플릿에서 여러 파일 다운로드를 구현하는 방법

vue.js를 사용하여 팝업 상자만 재생된다는 것을 인식하는 방법 한번

위 내용은 vue+vuex+koa2를 사용하여 개발 환경을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.