search
HomeWeb Front-endJS TutorialHow to build a development environment using vue+vuex+koa2

How to build a development environment using vue+vuex+koa2

Jun 11, 2018 am 11:20 AM
koa2vueEnvironment setup

This article mainly introduces the detailed explanation of vue vuex koa2 development environment construction and sample development. Now I will share it with you and give you a reference.

Written before

The main purpose of this article is to learn to use the koa framework to build web services, thereby providing some back-end interfaces for front-end calls.

The purpose of building this environment is: After the front-end engineer has agreed on the interface with the back-end engineer but before joint debugging, the function involving requesting data from the back-end can use the http path built by the front-end engineer himself, instead of Write some dead data directly on the front end. That is, simulate the backend interface.

Of course, in this whole process (building environment and developing sample demo), the following knowledge points are involved.

Includes:

  1. koa2 knowledge points

  2. ##node knowledge points

  3. Cross-domain issues

  4. Use of fetch

  5. Use of axios

  6. Involvement of promise

  7. vuex -> Use of state, mutations, and actions

Part 1: Environment setup

vue vuex environment

The first is the environment of vue vue-router vuex. We use vue-cli scaffolding to generate the project. Students who can use vue should be familiar with this.

// 全局安装脚手架工具
npm i vue-vli -g
// 验证脚手架工具安装成功与否
vue --version
// 构建项目
vue init webpack 项目名
// 测试vue项目是否运行成功
npm run dev

Because the vue project generated by the scaffolding does not contain vuex, install vuex again.

// 安装vuex
npm i vuex --save

koa2 environment

After the front-end project is built, let’s start building our back-end service.

First create a new directory in your development tool (whether it is webstorm or sublime) to build a web service based on koa.

Here, we might as well name this directory koa-demo.

Then execute:

// 进入目录
cd koa-demo
// 生成package.json
npm init -y
// 安装以下依赖项
npm i koa
npm i koa-router
npm i koa-cors

After installing koa and the two middlewares, the environment is completed.

Part 2: Sample Development

The environment is built for use, so we will write a demo immediately.

Demo development is not only a process of practicing how to write code in the development environment, but also a process of verifying whether the environment is set up correctly and whether it is easy to use.

Back-end interface development

In this example, we only provide one service on the back-end, which is to provide an interface for returning json data to the front-end. The code contains comments, so go directly to the code.

server.js file

// 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);

A json file is used here. In the './static/material.json' path, the code of the json file is:

// 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": "江苏 南京大学",
}]

Then we use the following command to start the service

node server.js

Test whether the interface is good

Open the browser and enter http://127.0.0.1:3000/getJson. Check to see if the json data in the json file is displayed on the page. If it can be displayed, it means that we have already set up the service that provides json data.

Example of front-end calling back-end interface

To highlight key points, eliminate interference, and facilitate understanding. Our front-end writes a component. The component has two parts: first, a button to call the getJson interface of the web service; then, a content display area. After getting the data returned by the back-end, it is placed in this part of the component. area is displayed.

First let’s look at the component file

<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>

It’s very simple, so I won’t explain it much.

Then look at our vuex file.

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,
})

ok, the code is finished.

Talk about axios

If you want to change the fetch of this demo to axios mode, you need to do the following:

1. Install axios, reference axios

npm i axios
import axios from &#39;axios&#39;

2 in the vuex file, replace the fetch part of the code with:

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, you will encounter cross-domain, modify it in webpack, the path config/index. Add the configuration of the proxyTable item in the js file:

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

Postscript

A project built based on vue scaffolding to simulate asynchronous data acquisition, or directly in the static file generated by the scaffolding Clip and place the data, pretending to be the data brought from the background.

But building a web service based on express or koa is indeed something that a front-end engineer should master.

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

How to achieve forward refresh and backward non-refresh effect in vue

Explain in detail the issues related to the implementation of react server rendering

How to write a carousel chart on PC using jquery (detailed tutorial)

Explain the Object object in JS in detail

How to implement multiple file downloads in the WeChat applet

How to use vue.js to realize that the pop-up box only plays once

The above is the detailed content of How to build a development environment using vue+vuex+koa2. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Python vs. JavaScript: The Learning Curve and Ease of UsePython vs. JavaScript: The Learning Curve and Ease of UseApr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python vs. JavaScript: Community, Libraries, and ResourcesPython vs. JavaScript: Community, Libraries, and ResourcesApr 15, 2025 am 12:16 AM

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

From C/C   to JavaScript: How It All WorksFrom C/C to JavaScript: How It All WorksApr 14, 2025 am 12:05 AM

The shift from C/C to JavaScript requires adapting to dynamic typing, garbage collection and asynchronous programming. 1) C/C is a statically typed language that requires manual memory management, while JavaScript is dynamically typed and garbage collection is automatically processed. 2) C/C needs to be compiled into machine code, while JavaScript is an interpreted language. 3) JavaScript introduces concepts such as closures, prototype chains and Promise, which enhances flexibility and asynchronous programming capabilities.

JavaScript Engines: Comparing ImplementationsJavaScript Engines: Comparing ImplementationsApr 13, 2025 am 12:05 AM

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

Beyond the Browser: JavaScript in the Real WorldBeyond the Browser: JavaScript in the Real WorldApr 12, 2025 am 12:06 AM

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Apr 11, 2025 am 08:23 AM

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

This article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base

JavaScript: Exploring the Versatility of a Web LanguageJavaScript: Exploring the Versatility of a Web LanguageApr 11, 2025 am 12:01 AM

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.