How to build a development environment using vue+vuex+koa2
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:
koa2 knowledge points
- ##node knowledge points
- Cross-domain issues
- Use of fetch
- Use of axios
- Involvement of promise
- 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 devBecause 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-corsAfter 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 '../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>It’s very simple, so I won’t explain it much. Then look at our vuex file.
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, })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 axiosnpm i axios import axios from 'axios'2 in the vuex file, replace the fetch part of the code with:
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, 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: { '/json': { target: 'http://127.0.0.1:3000', changeOrigin: true, pathRewrite: { '^/json': '/json' } } },
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!

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

Choosing Python or JavaScript should be based on career development, learning curve and ecosystem: 1) Career development: Python is suitable for data science and back-end development, while JavaScript is suitable for front-end and full-stack development. 2) Learning curve: Python syntax is concise and suitable for beginners; JavaScript syntax is flexible. 3) Ecosystem: Python has rich scientific computing libraries, and JavaScript has a powerful front-end framework.

The power of the JavaScript framework lies in simplifying development, improving user experience and application performance. When choosing a framework, consider: 1. Project size and complexity, 2. Team experience, 3. Ecosystem and community support.

Introduction I know you may find it strange, what exactly does JavaScript, C and browser have to do? They seem to be unrelated, but in fact, they play a very important role in modern web development. Today we will discuss the close connection between these three. Through this article, you will learn how JavaScript runs in the browser, the role of C in the browser engine, and how they work together to drive rendering and interaction of web pages. We all know the relationship between JavaScript and browser. JavaScript is the core language of front-end development. It runs directly in the browser, making web pages vivid and interesting. Have you ever wondered why JavaScr

Node.js excels at efficient I/O, largely thanks to streams. Streams process data incrementally, avoiding memory overload—ideal for large files, network tasks, and real-time applications. Combining streams with TypeScript's type safety creates a powe


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function
