若依前后端分离框架学习-1:前端引入

    前端目录为ruoyi-ui,为单页面模式,只有一个html文件public/index.html。vue-cli3之后为public/index.html, vue-cli2版本的是根目录下的index.html。主要代码如下:

    <div id="app">
	    <div id="loader-wrapper">
		    <div id="loader"></div>
		    <div class="loader-section section-left"></div>
		    <div class="loader-section section-right"></div>
		    <div class="load_title">正在加载系统资源,请耐心等待</div>
        </div>
	</div>

    我们重点关注id="app"这行代码,其他的都是引入css样式。这里的app用于关联src/main.js中的app。

import App from './App'
......
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})

    这里关联了src/App.vue文件。

<template>
  <div id="app">
    <router-view />
  </div>
</template>

<script>
export default  {
  name:  'App'
}
</script>

    在这个vue文件中,重点关注 router-view标签。该标签是vue的路由。读取src/router/index.js文件,根据用户请求的路径,跳转到相应的页面。可能用跳转页面不太合适,毕竟该项目前端理论上只有一个页面,应该是根据不同的请求路径,加载不同的内容。
src/router/index.js内容如下:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'

/**
 * Note: 路由配置项
 *
 * hidden: true                   // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
 * alwaysShow: true               // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
 *                                // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
 *                                // 若你想不管路由下面的 children 声明的个数都显示你的根路由
 *                                // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
 * redirect: noRedirect           // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
 * name:'router-name'             // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
 * meta : {
    noCache: true                // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
    title: 'title'               // 设置该路由在侧边栏和面包屑中展示的名字
    icon: 'svg-name'             // 设置该路由的图标,对应路径src/assets/icons/svg
    breadcrumb: false            // 如果设置为false,则不会在breadcrumb面包屑中显示
  }
 */

// 公共路由
export const constantRoutes = [
  {
    path: '/redirect',
    component: Layout,
    hidden: true,
    children: [
      {
        path: '/redirect/:path(.*)',
        component: (resolve) => require(['@/views/redirect'], resolve)
      }
    ]
  },
  {
    path: '/login',
    component: (resolve) => require(['@/views/login'], resolve),
    hidden: true
  },
  {
    path: '/404',
    component: (resolve) => require(['@/views/error/404'], resolve),
    hidden: true
  },
  {
    path: '/401',
    component: (resolve) => require(['@/views/error/401'], resolve),
    hidden: true
  },
  {
    path: '',
    component: Layout,
    redirect: 'index',
    children: [
      {
        path: 'index',
        component: (resolve) => require(['@/views/index'], resolve),
        name: '首页',
        meta: { title: '首页', icon: 'dashboard', noCache: true, affix: true }
      }
    ]
  },
......
]

export default new Router({
  mode: 'history', // 去掉url中的#
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

    我们以/login为例,用户请求http://ip:port/login, 就会加载views/login.vue这个界面,显示登录界面。那么这个ip:port是怎么来的呢?这里我们关注下vue-config.js文件

const port = process.env.port || process.env.npm_config_port || 80 // 端口

// 这里只列一部分,具体配置参考文档
module.exports = {
  ......
  devServer: {
    host: '0.0.0.0',
    port: port,
    ......
  }
}

    自己电脑上跑这个程序,默认就可以是http://localhost:80。接下来,我们前端执行npm run dev把项目跑起来,看一下具体效果。效果如下图:
在这里插入图片描述
    我们看到,输入地址之后,默认跳转到了登录界面,并且url为http://localhost:81/login?redirect=%2Findex。为什么端口号是81呢,我们配置的是80。是 vue-cli-service 内部依赖了一个叫 portfinder 的库,发现80端口被占用了,自动加1。我们回头看一下router/index.js根路径的路由。

{
    path: '',
    component: Layout,
    redirect: 'index',
    children: [
      {
        path: 'index',
        component: (resolve) => require(['@/views/index'], resolve),
        name: '首页',
        meta: { title: '首页', icon: 'dashboard', noCache: true, affix: true }
      }
    ]
  },

    根据这条路由,页面应该加载views/index.vue啊。为什么路径变成了/login,加载了views/login.vue呢?这是因为路由守卫,请看permission.js文件:

const whiteList = ['/login', '/auth-redirect', '/bind', '/register']

router.beforeEach((to, from, next) => {
  NProgress.start()
  if (getToken()) {
    ......
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
      // 在免登录白名单,直接进入
      next()
    } else {
      next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
      NProgress.done()
    }
  }
})

    这个文件是在src/main.js进行引入的。
    router.beforeEach就可以理解为每一个路由请求之前,先干点啥。因为我们还没有登录过,getToken肯定无法返回,“/”请求也不在白名单中,所以最后会走到next(/login?redirect=${to.fullPath}), 也就和我们的地址http://localhost:81/login?redirect=%2Findex对应起来了。这里的%2F是/的URL编码。这就是显示登录界面的整个流程啦。
    作为一个程序员,平常都是根据框架,添加新功能或者修改原来的代码。大部分时间都是复制、粘贴、修改,原理性的东西都不能深入的去理解。这样对于自己的成长很不利,我也是深受其害,因此决定厚着脸皮写个博客,只是为了督促自己。也希望大家多多指教。
    下一章,若依前后端分离框架学习-2:登录过程
    返回目录

  • 46
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
## 项目介绍 基于SpringBoot+Vue前后端分离的在线教育平台项目,单体应用服务架构。 系统共设计三种角色:管理员、讲师和学员,三个角色分别对应一个操作端。也就是本系统1个后台项目,三个前端项目。管理员端没有引入角色和权限管理,只有一个角色。 已实现的功能列表展示: **管理员端:** - 数据统计 - 轮播图管理 - 课程管理 - 课程列表 - 课程审核 - 分类管理 - 讲师管理 - 讲师列表 - 讲师审核 - 学员管理 - 用户管理 - 订单管理 **讲师端:** - 发布课程 - 课程管理 - 评论管理 - 消息接收 **学员端(网站首页):** - 登录注册 - 分类与轮播图展示 - 课程列表展示 - 课程搜索(关键词、分类、讲师) - 课程详情(播放器、课程介绍、评论、讲师简介、订阅) - 订阅订单 - 讲师入驻 ## 技术选型 **开发环境** - 工具:IntelliJ IDEA - JDK 1.8 - 数据库:MySQL 8.0.15 - 项目构建:后端Maven、前端 webpack **后端** - Web框架Spring Boot - 字段校验:Spring Validation - 持久层:[MyBatis-Plus](https://mybatis.plus/) - 接口文档:Swagger2 - Lombok:请确保您的 IDE 安装了此插件 - 缓存:Redis - 工具:[Hutool](https://www.hutool.cn/) - 资源存储:阿里云对象存储OSS - 课程视频点播:阿里云视频点播VoD ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于STM32节点和阿里云IoT平台 的物联网应用开发 系列课程 第四章 服务端的应用开发 课程内容下载、观看 • 视频观看:AI电堂、阿里云大学IoT课堂 • 课件胶片下载:STMCU中文官网、阿里云大学IoT课堂 • 课件项目下载:STMCU中文官网、阿里云大学IoT课堂 2 STM32公众号 阿里云大学 电堂公众号STM 中文官网 第四章内容简介 • 第一节:综合软件架构介绍 • 软件架构,知识结构梳理 • 第二节:后端服务开发 • 后端框架,初始化首个后端项目,应用系统开发,部署 • 第三节:前端服务开发体验 • 前端框架,初始化首个前端项目,组件的使用和数据流转,部署 3 STM32-阿里云IoT 联合课件开发 第四章 . 第三节 前端服务开发 第四章.第三节 内容简介 • 前端基础概念和知识 • 认识前端框架 • 了解React • 学习Umi.js • 学习Ant Design • 了解dva.js • 初始化并运行第一个后端项目 • 安装yarn包管理工具 • 全局安装umi • 使用脚手架初始化 • Umi路由页面添加 5 • 创建和使用组件 • Layout组件 • 主页面创建 • 组件引入 • 组件完善 • 使用dva实现数据流转 • 数据请求 • Dva管理数据 • 应用调试与部署 • 项目打包 • 项目部署 了解前端基础概念和知识技能 • 前端的基本概念 6 在软体架构和程序设计领域,前端是软件系统中直接和用户交互的部分,而后端控制着软 件的输出。将软件分为前端和后端是一种将软件不同功能的部分相互分离的抽象
【资源说明】 1、基于SpringBoot+Vue开发的前后端分离外卖点单系统源码+数据库+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringBoot+Vue开发的前后端分离外卖点单系统源码+数据库+项目说明.zip 基于SpringBoot+Vue开发的前后端分离外卖点单系统源码+数据库+项目说明.zip ## 目录结构 后台前端项目位于renren-ui下 小程序前端项目位于takeout_mp下 SQL文件位于根目录下的takeout_mysql8.sql,需要MYSQL8以上版本。 **ps:请先运行后端项目,再启动前端项目。** ``` take_out │ ├─renren-admin 美食元素后台管理后端服务 │ │ │ │ │ ├─modules 模块 │ │ ├─job 定时任务 │ │ ├─log 日志管理 │ │ ├─oss 文件存储 │ │ ├─security 安全模块 │ │ ├─sys 系统管理(核心) | | └─takeout 外卖业务模块(核心) │ │ │ └─resources │ ├─mapper MyBatis文件 │ ├─public 静态资源 │ └─application.yml 全局配置文件 │ │ ├─renren-api 美食元素小程序后端服务 │ ├─renren-common 公共模块 ├─renren-generator 代码生成器 │ └─resources │ ├─mapper MyBatis文件 │ ├─template 代码生成器模板(可增加或修改相应模板) │ ├─application.yml 全局配置文件 │ └─generator.properties 代码生成器,配置文件 │ ├─renren-ui 美食元素后台管理Vue前端项目 ├─takeout_mp uniapp微信小程序项目 ``` ## 项目特点 - 友好的代码结构及注释,便于阅读及二次开发 - 实现前后端分离,通过token进行数据交互 - 支持动态权限修改,采用RBAC模型,前端菜单和后台权限实时更新。 - 提供CrudService接口,对增删改查进行封装,代码更简洁 - 页面交互使用Vue2.x,极大的提高了开发效率 - 完善的部门管理及数据权限,通过注解实现数据权限的控制 - 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击 - 完善的代码生成机制,可在线生成entity、xml、dao、service、vue、sql代码,减少70%以上的开发任务 - 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能 - 引入Hibernate Validator校验框架,轻松实现后端校验 - 引入云存储服务,已支持:七牛云、阿里云、腾讯云等 - 引入swagger文档支持,方便编写API接口文档 - 新增AOP注解实现日志管理。 - 代码遵循阿里巴巴开发规范,利于开发者学习。 ## 技术选型 - 核心框架Spring Boot 2.7.1 - 安全框架:Apache Shiro 1.9 - 持久层框架:MyBatis 3.5 - 定时器:Quartz 2.3 - 数据库连接池:Druid 1.2 - 日志管理:Logback - 页面交互:Vue2.x - 微信小程序:uni-app ## 开发环境 | 开发工具 | 说明 | | ----------------------------- | ------------------ | | IDEA | Java开发工具IDE | | WebStrom或者VS Code | Vue开发工具IDE | | Navicat | MySQL远程连接工具 | | Another Redis Desktop Manager | R
资源介绍 本资源是一个基于SSM(Spring+SpringMVC+MyBatis)框架与MySQL数据库的多角色学生管理系统,前端使用JSP进行页面展示。此项目不仅是一个完整的毕业设计作品,而且包含源代码,为学习和实践SSM框架及多角色权限管理提供了极佳的实战平台。 该项目设计合理,功能丰富,涵盖了学生信息管理、成绩管理、课程管理等多个核心模块。通过该系统,管理员、教师、学生等不同角色可以分别登录并操作各自权限范围内的内容,实现了权限的细分与管理。SSM框架引入,使得系统具有高度的灵活性和可扩展性,便于后续的功能迭代和性能优化。 在技术上,该项目充分展示了SSM框架的优势。Spring作为轻量级容器,负责整合业务逻辑层和数据访问层;SpringMVC则负责处理前端请求和响应,实现了MVC模式的分离;MyBatis作为数据持久层框架,简化了数据库操作,提高了开发效率。同时,MySQL数据库的选用,保证了数据的稳定性和安全性。 此外,该项目还采用了JSP技术进行前端页面的开发,页面布局合理,交互友好,为用户提供了良好的使用体验。 最重要的是,该项目提供了完整的源代码,方便学习者进行研究和二次开发。无论是对于SSM框架学习,还是对于多角色权限管理系统的实践,本项目都是一个不可多得的优秀资源。通过对此项目的深入学习和实践,学习者可以快速提升自己的实战能力和项目经验,为未来的职业发展打下坚实的基础。
少儿编程网上报名系统资源介绍 本资源是一个基于SSM(SpringSpringMVC、MyBatis)框架开发的少儿编程网上报名系统,前端采用Vue.js框架构建,旨在提供一个功能完善、界面友好的在线报名平台。该系统不仅简化了报名流程,提高了报名效率,还通过数据化管理,为少儿编程教育机构提供了便捷的学生信息管理工具。 本系统包含用户注册登录、课程展示、在线报名、支付管理、后台管理等多个模块。用户可以通过系统浏览课程信息,选择心仪的课程进行报名,并在线完成支付。后台管理系统则提供了课程管理、用户管理、订单管理等功能,方便管理员对系统进行维护和管理。 在技术上,SSM框架的采用保证了系统的稳定性和可扩展性。Spring框架提供了强大的依赖注入和面向切面编程的功能,简化了系统开发的复杂性;SpringMVC则负责处理前端请求和响应,实现了MVC设计模式的分离;MyBatis作为持久层框架,提供了灵活的数据访问方式,优化了数据库操作。 前端Vue.js框架引入,使得系统界面更加美观、交互更加流畅。Vue.js的组件化开发方式,提高了代码的可复用性和可维护性,同时也降低了开发成本。 此外,本系统提供了完整的源代码,方便使用者进行二次开发和定制。无论是对于想要快速搭建类似系统的开发者,还是对于想要深入了解SSM和Vue.js框架学习者,本资源都是一个不可多得的好选择。 综上所述,本少儿编程网上报名系统资源具有功能全面、技术先进、可定制性强等特点,是少儿编程教育机构实现信息化管理的理想选择。
权限框架SpringBoot 是一种用于实现后端权限管理系统的框架。它包括用户管理、角色管理、部门管理、菜单管理等功能。该框架采用了前后端分离的开发模式,后端使用了SpringBoot、Shiro和MyBatis等技术,前端选用了Element UI框架。 此外,还有其他基于SpringBoot的权限框架,如基于Layui的SpringMVC、Spring等。这些框架提供了一整套完整的权限管理系统,代码简洁,容易入门,适合开发者进行研究学习。其功能包括菜单管理、角色管理、系统功能、数据字典、机构信息、URL拦截、用户管理、日志管理、代码生成器和定时任务等。 SpringBoot权限框架还具备灵活的权限控制功能,可以整合Shiro,实现对页面或按钮的权限控制,满足大部分的权限需求。同时,该框架还提供了日志记录功能,使用AOP方式进行记录,可以对用户的所有操作进行记录。另外,通过引入Quartz定时任务,可以动态完成任务的添加和执行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringBoot 后台权限框架搭建](https://download.csdn.net/download/jin07430119/81852784)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [layui+java ssh快速开发框架系统源码.zip](https://download.csdn.net/download/qq_41221596/88274773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [java springboot快速开发权限框架 ](https://download.csdn.net/download/fegus/85090702)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值