热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前后端连载concurrently使用遇到的坑和经验记录koa2搭建的后端服务及vueadmin前端服务之间不同目录下连载

虽然之前的项目中有使用过前后端连载,但是由于依赖的更新以及开发语言的版本更替。甚至是vue-cli的更新,导致之前写的文章,参考价值仅限于

虽然之前的项目中有使用过前后端连载,但是由于依赖的更新以及开发语言的版本更替。甚至是vue-cli的更新,导致之前写的文章,参考价值仅限于原理与模板,具体的代码需要根据项目来决定。

concurrently依赖

npm i concurrently -D

在项目中install concurrenly这个依赖模块,不再赘述。

根据前后端所在的文件目录进行package.json文件的改造。
在这里插入图片描述
这个项目目录下第一个子文件夹我存放的是前端的服务,这个子文件夹下用koa2搭的服务器及应用框架在IT_admin_system文件夹下。因此这个项目有两个package.json文件,分别管理前端服务以及后端服务。针对这个项目 连载需要在前端项目的package.json改造。

关于concurrently这个依赖的作用,浅显来看 他就是同时启用两条命令。

比如有两个服务要开。

"start": "concurrently \"command1 arg\" \"command2 arg\""

当然这个start也可以是dev,这就要看项目的架构及所用的vue框架了。

以我的项目为例,没有改造前的package中的scripts:

"scripts": {"dev": "vue-cli-service serve","build:prod": "vue-cli-service build","build:stage": "vue-cli-service build --mode staging","preview": "node build/index.js --preview","svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml","lint": "eslint --ext .js,.vue src","test:unit": "jest --clearCache && vue-cli-service test:unit","test:ci": "npm run lint && npm run test:unit"},

由于我采用的是vue-cli脚手架搭建的项目,值得注意的是dev,也就是这个服务的启动方式是通过npm run dev来完成的。

再看看后端服务改造前的scripts:

"scripts": {"start": "node bin/www","dev": "./node_modules/.bin/nodemon bin/www","prd": "pm2 start bin/www","test": "echo \"Error: no test specified\" && exit 1"},

同样的 后端的服务也是npm run dev来启动。

改造后:

"scripts": {"server":"npm start --prefix IT_admin_system", // 可删"lulu": "vue-cli-service serve","dev":"concurrently \"npm run lulu\" \"npm start --prefix IT_admin_system\"","build:prod": "vue-cli-service build","build:stage": "vue-cli-service build --mode staging","preview": "node build/index.js --preview","svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml","lint": "eslint --ext .js,.vue src","test:unit": "jest --clearCache && vue-cli-service test:unit","test:ci": "npm run lint && npm run test:unit"},

我在scripts中重新定义了一个server,让他充当后端服务启动的命令“变量”,事实证明 这是脱裤子放屁行为。

我们只需要搞懂 如果我的服务不在同一个目录下 我应该怎么访问 查阅文档后发现 npm start --prefix 文件夹名就可以找到这个文件夹下的scripts模块下的start,并且运行。

所以我们现在在前端终端中输入npm start --prefix IT_admin_system可以把后端的服务启动了。

那么顺着这个思路,是不是

"concurrently \"npm run dev\" \"npm start --prefix IT_admin_system\""

就可以了呢?

然而这样做的后果是 不断地进行循环,所以需要一个变量接一下前端服务地启动命令。至于变量名是什么,那就看各位地喜好了
前端服务改:

"lulu": "vue-cli-service serve","dev":"concurrently \"npm run lulu\" \"npm start --prefix IT_admin_system\"",

后端改:

"start": "./node_modules/.bin/nodemon node bin/www",

最终前后端连载成功。

写在后面

一味跟着模板走还是不如把原理了解之后找到解决方法,依赖的文档:https://www.npmjs.com/package/concurrently 供以后忘了回顾。


推荐阅读
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Ext JS MVC系列一:环境搭建与框架概览
    本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 本文详细介绍了如何在PHP中记录和管理行为日志,包括ThinkPHP框架中的日志记录方法、日志的用途、实现原理以及相关配置。 ... [详细]
  • 本文详细介绍了 HTML 中 a 标签的 href 属性的多种用法,包括实现超链接、锚点以及调用 JavaScript 方法。通过具体的示例和解释,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 2022年2月 微信小程序 app.json 配置详解:启用调试模式
    本文将详细介绍如何在微信小程序的 app.json 文件中启用调试模式(debug),并通过实际案例展示其配置方法和应用场景。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
author-avatar
手机用户2502903535
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有