搞副业|全网最快前端

简介: 搞副业|全网最快前端

本文讲解SpringBoot和Vue项目搭建的最小化原型,非常方便后续同类知识点的学习,同时也是非常棒的脚手架,可快速搭建各种实验的基础框架,本文实践于2022年7月10号,练习前建议仔细核对相关软件版本,避免引起不必要的麻烦。

在前后端项目分离之前,java工程师一般身兼两职,又做前端也做后端。项目规模大的团队可能有美工或js工程师分担一部分工作。部署也往往都堆砌在一起,互联网电商行业好一些,为响应百万级以上请求,一般会将静态文件单独部署到apache、nginx等http应用中并逐步引入cdn服务。

现今前端项目如雨后春笋般涌现,各项技术日新月异,作为后端工程师不可避免的也需要多少学习一下前端知识,简单地说方便项目联调联试,未来成为一个优秀全栈工程师或架构师也是非常有必要的。

因篇幅所限,SpringBoot项目搭建请参考我们提供的另一份文档。


一、Vue开发环境搭建

当前国内网络环境能找到的Vue文档大多基于2.0版本,语法与当前3.0差异极大,因此本文提供手把手的教程,从头学习。

开发环境准备工作

  • 实验测试时间于2022年7月10日
  • 开发机采用 Win10 64位操作系统
  • 开发IDE采用Visual Studio Code 1.69.0
  • 运维Shell采用Windows Terminal 1.13,你也可以用OS自带的cmd
  • Node.js采用官方LTS最新版v16.16,并设置了阿里云镜像加速
  • vue采用3.0版本

Tip: 以上工具文档均可在网上轻松搜索得到,但大多陈旧、版本不一,建议参考本文实现方式

安装调试:

# Node.js的安装不难,主要是版本的选择要小心谨慎,尽量选择官方最新的LTS版本,避免麻烦,必要时回退一个版本
一路next即可安装好node.js
# 设置淘宝镜像源加速
npm --registry=https://registry.npm.taobao.org install
# 安装vue和cli
npm install vue
npm install -g @vue/cli
# 启动UI界面程序进行项目搭建,相比命令行很少出错!
vue ui

二、Vue项目搭建

vue项目的使用其实就引入vue.js即可,为方便协同开发、各种插件测试,建议采用node平台并以项目的形式进行创建,易于后续的开发和维护。

当前环境版本

G:\桌面\vue-study\nodetest2>node -v
v16.16.0
G:\桌面\vue-study\nodetest2>npm -v
8.11.0
G:\桌面\vue-study\nodetest2>vue -V
@vue/cli 5.0.8

项目搭建:采用web ui的形式,简单、舒心,我们需要把全部精力投入到关键业务开发,而不是无关的事情上!


插件安装:项目创建后,我们需要安装常用的三个插件,采用ui界面操作是非常简单的

  • vuex,大型项目中管理数据状态的一种机制,将Vue中所有的状态(数据)抽离出来进行统一管理
  • vue-router,vue的路由机制,避免一堆的a标签,也是vue响应这么迅速的关键!
  • axios,用于与后端通讯,类似以前Ajax组件


项目代码一览

  1. App.vue 项目入口文件,源于自动生成,需增加一个book入口方便测试和查看。
  2. router/index.js 路由文件,设置我们项目的展示层内容
  3. views/bookView.vue 项目主要展示文件,也是日常反复编译调试的地方

1/3、App.vue  项目自动生成,增加router-link关于book的入口

<template>
  <nav>
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link>|
    <router-link to="/book">Book</router-link>
  </nav>
  <router-view/>
</template>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}
nav {
  padding: 30px;
}
nav a {
  font-weight: bold;
  color: #2c3e50;
}
nav a.router-link-exact-active {
  color: #42b983;
}
</style>

2/3、router/index.js 项目自动生成,增加book的路由匹配规则

import { createRouter, createWebHashHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  },    
  {
    /* 匹配请求 */
    path: '/book',
    name: 'book',
    component: () => import(/* webpackChunkName: "book" */ '../views/BookView.vue')
  }
]
const router = createRouter({
  history: createWebHashHistory(),
  routes
})
export default router

3/3、views/bookView.vue

<template>
<div>
    <table border="1px">
        <tr>
            <td>编号</td>
            <td>图书名称</td>
            <td>作者</td>
            <td>出版社</td>
            <td>页数</td>
            <td>价格</td>
    </tr>
        <!-- 循环展示数据 -->
        <tr v-for="elem in books">
            <td>{{ elem.id }}</td>
            <td>{{ elem.bookName }}</td>
            <td>{{ elem.author }}</td>
            <td>{{ elem.publish }}</td>
            <td>{{ elem.pages }}</td>
            <td>{{ elem.price }}</td>
    </tr>
    </table>
    {{ msg }}
    </div>
</template>
<script>
    export default {
        name: "Book",
        data() {
            /* 数据造假 */
            return {
                msg: 'Hello Vue',
                books: [
                    {
                        id: 1,
                        bookName: '平凡的世界',
                        author: '张三',
                        publish:'开心出版社',
                        pages:'100',
                        price:'100.01'
                    },
                    {
                        id: 2,
                        bookName: '月亮与六便士',
                        author: '李四',
                        publish:'快乐出版社',
                        pages:'90',
                        price:'99.01'
                    }
                ]
            }
        },
        /* created()是初始化方法,用于向后端请求数据 */
        created() {
            const _this = this
            const axios = require('axios');
            axios.get("http://localhost:8080/list")
                .then(function (resp) {
                _this.books = resp.data;
                });
            axios.get("http://localhost:8082/test")
                .then(function (resp) {
                _this.msg = resp.data;
                })
        }
    }
</script>
<style scoped>
</style>

三、Vue项目测试

本项目测试成功的原则标准:

  • 编译器自检无严重bug
  • web服务可正常启动
  • book页面的两个数据接口均正常返回,开启后端服务后,替换为后端数据!

运行检查:可在项目目录下执行npm run serve或在vsc编辑器中运行任务,执行npm:serve经检查,一切正常!

服务检查:浏览器访问,接口也正常返回

后端服务开启测试,也一切正常!

四、Vue项目部署

前后端分离后,这块工作也就分配到了前端工程师手中,所以前端兄弟适当学一下运维工作也是有趣的

编译打包

# 生成dist文件夹
npm run build

部署运行:将dist文件夹中的全部内容复制到tomcat的ROOT目录中,并启动tomcat,访问web一切OK!

结语

SpringBoot +Vue前后端分离/集成项目非常轻松的完成,其实中间踩坑无数,折腾了好多天,有个人基础不扎实,也被网上各种不同版本的资料误导,这里倡导程序员朋友们,平时多做做输出,务求完整,利人利己,提高非常快。避免工作多年,技术仅停留在入职三年内!

相关文章
|
人工智能 搜索推荐
AIGC工具——堆友
【1月更文挑战第11天】AIGC工具——堆友
907 9
AIGC工具——堆友
|
1月前
|
新能源
大盘择时:慎用固定均线!12年回测A股数据揭示择时策略的3大适应性缺陷
动量策略加入50日与200日均线择时后收益下降,主要因均线滞后、逻辑冲突及市场变化。解决方案包括动态调整择时参数、结合多指标验证、优化动量执行细节,提升策略适应性与收益表现。
|
3月前
|
存储 自动驾驶 安全
USB‑C 式的工具联接:MCP 的模块化及通用标准探讨
本文探讨了 USB-C 接口与 MCP 模块化连接平台的结合及其标准化前景。USB-C 凭借高速传输、双向充电和正反插设计,已成为主流接口;而 MCP 通过模块化架构,提供灵活、可扩展的连接方案。两者融合不仅提升了设备互联的兼容性与效率,也为智能家居、移动办公、电动汽车等场景带来创新应用。未来,随着技术发展与标准统一,这一组合有望推动设备连接迈向更智能、通用的新时代。
138 27
USB‑C 式的工具联接:MCP 的模块化及通用标准探讨
|
机器学习/深度学习 人工智能 缓存
3天把Llama训成Mamba,性能不降,推理更快!
《Distillation and Acceleration of Hybrid Models》一文由日内瓦大学、Together AI、康奈尔大学和普林斯顿大学的研究者们共同完成,提出了一种将大型Transformer模型(如Llama)转化为线性RNN模型(如Mamba)的新方法。此方法不仅保持了模型性能,还大幅提升了推理速度。研究团队通过多阶段蒸馏及优化,结合预训练权重,在不同聊天基准测试中验证了模型的有效性。详情见:https://arxiv.org/pdf/2408.15237
165 3
|
自然语言处理 监控 算法
【算法精讲系列】通义模型Prompt调优的实用技巧与经验分享
本文详细阐述了Prompt的设计要素,包括引导语、上下文信息等,还介绍了多种Prompt编写策略,如复杂规则拆分、关键信息冗余、使用分隔符等,旨在提高模型输出的质量和准确性。通过不断尝试、调整和优化,可逐步实现更优的Prompt设计。
3361 11
|
图形学 Android开发 iOS开发
穿越数字洪流,揭秘Unity3d中的视频魔法!Windows、Android和iOS如何征服RTSP与RTMP的终极指南!
【8月更文挑战第15天】在数字媒体的海洋中,实时视频流是连接世界的桥梁。对于那些渴望在Unity3d中搭建这座桥梁的开发者来说,本文将揭示如何在Windows、Android和iOS平台上征服RTSP与RTMP的秘密。我们将深入探讨这两种协议的特性,以及在不同平台上实现流畅播放的技巧。无论你是追求稳定性的RTSP拥趸,还是低延迟的RTMP忠实粉丝,这里都有你需要的答案。让我们一起穿越数字洪流,探索Unity3d中视频魔法的世界吧!
363 2
|
XML 运维 监控
虚拟专用网络 (VPN) 术语
对提供商提供的虚拟专用网络 (Virtual Private Network,VPN) 解决方案的广泛兴趣导致备忘录提出了不同且重叠的解决方案。IETF 工作组(首先是提供商提供的 VPN,后来是二层 VPN 和三层 VPN)已经讨论了这些提议和文档化规范。这导致了用于描述 VPN 服务集的部分新概念集的发展。
1827 0
虚拟专用网络 (VPN) 术语
webpack 配置 sass 公共变量
webpack 配置 sass 公共变量
243 0
|
API C++
exosip 和 pjsip 简介
oSIP  oSIP的开发开始于2000年7月,第一个版本在2001年5月发 布,到现在已经发展到3.x了。它采用ANSI C编写,而且结 构简单小巧,所以速度特别快,它并不提供高层的SIP会话 控制API,它主要提供一些解析SIP/SDP消息的API和事务处理 的状态机,oSIP的作者还开发了基于oSIP的UA lib:exosip和 proxy server lib:partysip.
4249 0