使用vue+vuex+koa2如何搭建开发环境

本篇文章主要介绍了详解vue + vuex + koa2开发环境搭建及示例开发,现在分享给大家,也给大家做个参考。

写在前面

这篇文章的主要目的是学会使用koa框架搭建web服务,从而提供一些后端接口,供前端调用。

搭建这个环境的目的是: 前端工程师在跟后台工程师商定了接口但还未联调之前,涉及到向后端请求数据的功能能够走前端工程师自己搭建的http路径,而不是直接在前端写几个死数据。即,模拟后端接口。

当然在这整个过程(搭建环境 + 开发示例demo)中,涉及到以下几点知识点。

立即学习“前端免费学习笔记(深入)”;

包括:

koa2的知识点

node的知识点

跨域问题

fetch的使用

axios的使用

promise的涉及

vuex -> state、mutations、actions的使用

第一部分:环境搭建

vue + vuex环境

首先是vue + vue-router + vuex的环境。我们用vue-cli脚手架生成项目,会用vue的同学对这块应该很熟了。

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

登录后复制

因为脚手架生成的vue项目不包含vuex,所以再安装vuex。

// 安装vuexnpm i vuex --save

登录后复制

koa2环境

前端项目构建好了,就开始构建我们的后端服务。

首先在你的开发工具(不管是webstorm还是sublime)里新建一个目录,用来搭建基于koa的web服务。

在这里,我们不妨给这个目录起名为koa-demo。

然后执行:

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

登录后复制

安装好koa和两个中间件,环境就算搭建完成了。

第二部分:示例开发

搭建环境是为了使用,所以我们立马来写一个demo出来。

demo开发既是一个练习如何在开发环境中写代码的过程,反过来,也是一个验证环境搭建的对不对、好不好用的过程。

后端接口开发

本例中,后端我们只提供一个服务,就是给前端提供一个返回json数据的接口。代码中包含注释,所以直接上代码。

server.js文件

// server.js文件let Koa = require('koa');let Router = require('koa-router');let cors = require('koa-cors');// 引入modejs的文件系统APIlet 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);

登录后复制

这里面用到了一个json文件,在’./static/material.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数据的服务,我们已经搭建好了。

前端调用后端接口示例

为突出重点,排除干扰,方便理解。我们的前端就写一个组件,组件有两部分:首先是一个按钮,用来调用web服务的getJson接口;然后是一个内容展示区域,拿到后端返回的数据以后,将其在组件的这块区域显示出来。

首先我们看组件文件吧

  

        

{{json}}

   import {store} from '../vuex' export default { computed: { json(){ return store.state.json; } }, methods: { getJson(){ store.dispatch("getJson"); } } } .showJson{ width:500px; margin:10px auto; min-height:500px; background-color: palegreen; }

登录后复制

非常简单,就不多解释了。

然后看我们的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,})

登录后复制

ok, 代码撸完了。

说说axios

想要把本demo的fetch改为axios方式,要做的工作有以下几处:

1、安装axios、在vuex文件引用axios

npm i axiosimport axios from 'axios'

登录后复制

2、将fetch部分代码替换为:

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、又会遇到跨域,在webpack中修改,路径config/index.js文件中添加proxyTable项的配置:

proxyTable: {   '/json': {    target: 'http://127.0.0.1:3000',    changeOrigin: true,    pathRewrite: {     '^/json': '/json'    }   }  },

登录后复制

后记

基于vue脚手架搭建的项目,模拟异步取数据,也可以直接在脚手架生成的static文件夹下放置数据,假装是后台拿过来的数据。

不过搭建一个基于express或者koa的web服务,确实也该是一个前端工程师应该掌握的。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在vue中如何才能实现前进刷新后退不刷新效果

在vue中如何才能实现前进刷新后退不刷新效果

在vue中如何才能实现前进刷新后退不刷新效果

在vue中如何才能实现前进刷新后退不刷新效果

在vue中如何才能实现前进刷新后退不刷新效果

在vue中如何才能实现前进刷新后退不刷新效果

以上就是使用vue+vuex+koa2如何搭建开发环境的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3185718.html

(0)
上一篇 2025年3月31日 22:33:13
下一篇 2025年3月31日 22:33:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • uni-app视频播放插件的功能开发和优化

    在uni-app中开发和优化视频播放插件可以通过以下步骤实现:1. 使用组件作为基础,封装和扩展其功能。2. 实现基本功能如播放、暂停,并添加自定义控制条和播放列表。3. 优化性能,通过预加载、动态调整视频质量和缓存机制提升用户体验。通过这…

    2025年5月1日
    000
  • uni-app中数据的排序和筛选功能开发

    在uni-app中,数据排序和筛选可以通过vue.js的计算属性或方法实现。1.排序:使用计算属性或方法对数据进行排序,如按价格排序。2.筛选:通过计算属性或方法筛选数据,如筛选价格低于100的商品。 引言 在开发uni-app应用时,数据…

    2025年5月1日
    000
  • uni-app图表插件的选择和数据可视化

    在uni-app中选择图表插件时,应考虑兼容性、性能、功能和社区支持。1. 兼容性:确保插件在所有目标平台上运行正常。2. 性能:特别关注移动端的流畅度。3. 功能:选择支持所需图表类型的插件。4. 社区支持:活跃社区和丰富文档降低开发难度…

    2025年5月1日
    000
  • uni-app数据的分页加载和无限滚动实现

    在uni-app中实现分页加载和无限滚动可以通过以下步骤:1) 使用uni.request发起网络请求获取分页数据;2) 通过vue的data属性管理当前页码和数据列表;3) 利用scroll-view组件的scrolltolower事件实…

    2025年5月1日
    000
  • uni-app开发的基本规范和注意事项

    uni-app开发需要严格的规范和注意事项,因为它是跨平台框架,需确保代码在不同平台兼容,且规范代码易于维护和扩展。1.遵循eslint等代码风格规范,确保代码一致性和可读性。2.合理组织项目文件结构,确保每个文件职责明确。3.使用统一的命…

    2025年5月1日
    000
  • uni-app富文本编辑器插件的使用和定制

    在uni-app中使用富文本编辑器插件可以通过以下步骤实现:1. 在模板中引入组件并设置其属性。2. 在脚本中获取编辑器上下文以进行初始化和操作。3. 使用编辑器上下文进行文本和图片的插入及格式化。4. 通过调试技巧解决常见问题,如检查编辑…

    2025年5月1日
    000
  • uni-app开发环境的详细搭建步骤

    搭建uni-app开发环境的步骤包括:1.下载并安装hbuilderx;2.在hbuilderx中创建uni-app项目;3.编写代码并使用条件编译进行跨平台开发;4.使用调试工具解决常见错误;5.通过优化api调用和页面加载速度提升性能。…

    2025年5月1日
    000
  • uni-app适合哪些类型的项目开发

    uni-app适合跨平台应用、小程序开发和企业级应用。1) 跨平台应用:适用于需在ios、android和小程序上运行的项目。2) 小程序开发:提供强大支持,适合快速搭建和迭代。3) 企业级应用:适用于复杂业务系统的快速构建和管理。 引言 …

    2025年5月1日
    000
  • uni-app语音识别插件的使用和开发

    uni-app语音识别插件的使用和开发方法包括以下步骤:1. 在main.js中引入插件并挂载到vue原型上;2. 在页面中调用插件进行语音识别,并处理识别结果;3. 实现连续语音识别和多语言支持等高级功能;4. 通过检查网络连接、调整麦克…

    2025年5月1日
    000
  • uni-app如何实现数据的实时更新

    在uni-app中实现数据实时更新的方法包括:1.使用vue的响应式系统,2.使用websocket技术。1.vue的响应式系统通过getter和setter监控数据变化,自动更新视图。2.websocket建立持久双向通信连接,实现数据实…

    2025年5月1日
    000

发表回复

登录后才能评论