面试几个月还没找到工作,动手实践!从零开始实现Springboot(1),腾讯字节阿里小米京东大厂Offer拿到手软

2.success.vue

Welcome!{{msg}}

3.error.vue

登录错误:{{msg}}

五、路由

====

页面写好了,我们需要依次显示这三个页面,这里我们统一使用路由来管理显示页面,路由的官方文档见:vue 路由

本着先实践,后理解的码农学习方式。我们先使用路由显示三个页面后,再去理解 Vue 路由这个功能点。

1. 创建路由配置文件


在刚才建立的 router 文件夹下创建一个 index.js 文件,内容如下

import Vue from ‘vue’ //引入 Vue

import VueRouter from ‘vue-router’ //引入 Vue 路由

Vue.use(VueRouter); //安装插件

export const constantRouterMap = [

//配置默认的路径,默认显示登录页

{ path: ‘/’, component: () => import(‘@/views/login’)},

//配置登录成功页面,使用时需要使用 path 路径来实现跳转

{ path: ‘/success’, component: () => import(‘@/views/success’)},

//配置登录失败页面,使用时需要使用 path 路径来实现跳转

{ path: ‘/error’, component: () => import(‘@/views/error’), hidden: true }

]

export default new VueRouter({

// mode: ‘history’, //后端支持可开

scrollBehavior: () => ({ y: 0 }),

routes: constantRouterMap //指定路由列表

})

2. 将路由添加到程序入口


路由配置文件写好,我们需要把他引入到 main.js 中,在项目的 src 目录根节点下,找到 main.js,添加内容如下:

import Vue from ‘vue’

import App from ‘./App.vue’

import ‘./plugins/element.js’

import router from ‘./router’ //引入路由配置

Vue.config.productionTip = false

new Vue({

render: h => h(App),

router, //使用路由配置

}).$mount(‘#app’)

3. 配置路由的出入口


现在路由已经完全引入到项目了,但是路由还需要一个出入口,这个出入口用来告诉路由将路由的内容显示在这里。上面 main.js 配置的第一个 vue 显示页面为 App.vue ,因此我们修改 App.vue 内容如下

 就是显示路由的出入口。

现在保存 App.vue 文件后,当前项目会被重新装载运行,在刚才浏览的界面就会看到登录界面如下:

4. 路由跳转


在 login.vue 中可以使用 this.$router.push({path: “路径”}) 来跳转到指定路径的路由组件中,下面是通过路由跳转到 error.vue 与 success.vue 的代码

this.$router.push({path: “/success”}); //跳转到成功页

this.$router.push({path: “/error”}); //跳转到失败页

六、使用 Vuex + Axios 方式进行网络请求

==========================

1.Axios


axios 是一个网络请求构架,官方推荐使用这种方式进行 http 的请求。

1) 在 utils 包下封装一个请求工具类 request.js

import axios from ‘axios’ //引入 axios

import baseUrl from ‘…/api/baseUrl’ //使用环境变量 + 模式的方式定义基础URL

// 创建 axios 实例

const service = axios.create({

baseURL: baseUrl, // api 的 base_url

timeout: 15000, // 请求超时时间

})

export default service

这里的 baseUrl 涉及 Vue CLI3 的环境变量与模式的概念,见:Vue 环境变量和模式 (设置通用 baseUrl)

2) 登录请求接口 API

在 api 文件夹下,创建一个登录 API 文件:login.js

import request from ‘@/utils/request’ //引入封装好的 axios 请求

export function login(username, password) { //登录接口

return request({ //使用封装好的 axios 进行网络请求

url: ‘/admin/login’,

method: ‘post’,

data: { //提交的数据

username,

password

}

})

}

2. 使用 Vuex 封装 axios


Vuex 是一个状态管理构架,官方文档:Vuex

1) 封装 Vuex 中的 module

在 store 文件夹下创建一个 modules 文件夹,然后在此文件夹下创建一个 user.js 文件

import { login } from ‘@/api/login’//引入登录 api 接口

const user = {

actions: {

// 登录

Login({ commit }, userInfo) { //定义 Login 方法,在组件中使用 this.$store.dispatch(“Login”) 调用

const username = userInfo.username.trim()

return new Promise((resolve, reject) => { //封装一个 Promise

login(username, userInfo.password).then(response => { //使用 login 接口进行网络请求

commit(‘’) //提交一个 mutation,通知状态改变

resolve(response) //将结果封装进 Promise

}).catch(error => {

reject(error)

})

})

},

}

}

export default user

这里的代码值得解释一下:官方文档对应:Vuex actions

1. 首先引入 login 接口,之后使用登录接口进行网络请求。

2. 定义一个 名为 Login 的 action 方法,Vue 组件通过 this.$store.dispatch(“Login”) 调用

3.Promise,这个类很有意思,官方的解释是 “store.dispatch 可以处理被触发的 action 的处理函数返回的 Promise,并且 store.dispatch 仍旧返回 Promise”。这话的意思组件中的 dispatch 返回的仍是一个 Promise 类,因此推测 Promise 中的两个方法 resolve() 与 reject() 分别对应 dispatch 中的 then 与 catch。

2) 创建 Vuex

在 store 文件夹下创建一个 index.js 文件

import Vue from ‘vue’ //引入 Vue

import Vuex from ‘vuex’ //引入 Vuex

import user from ‘./modules/user’ //引入 user module

Vue.use(Vuex)

const store = new Vuex.Store({

modules: {

user //使用 user.js 中的 action

}

})

export default store

3) 将 Vuex 添加到 main.js 文件

修改之前的 main.js 文件如下:

import Vue from ‘vue’

import App from ‘./App.vue’

import ‘./plugins/element.js’

import router from ‘./router’ //引入路由配置

import store from ‘./store’ //引入 Vuex 状态管理

Vue.config.productionTip = false

new Vue({

render: h => h(App),

router, //使用路由配置

store //使用 Vuex 进行状态管理

}).$mount(‘#app’)

重新运行项目,在 Chrome 浏览器中进入调试模式,点击登录按钮

可以看到有发送一个 8088 端口的请求,至此 Vue 端的所有代码已经完成。

-------------------------------Springboot 开发 -------------------------------

=============================================================================

项目创建就不提了,网上有很多,只要使用 Spring Assistant 创建就好。

整体目录结构如下

1. 在 application.yml 修改端口号

不要和 Vue 在一个 8080 端口上:

server:

port: 8088

2. 解决跨域问题

这里有一个跨域问题,即 Vue 使用 8080 端口,要访问 8088 端口的服务器,会报错。错误信息如下:

Access to XMLHttpRequest at ‘http://localhost:8088/admin/login’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No’Access-Control-Allow-Origin’ header is present on the requested resource.

这个问题在 Vue 端或在 Springboot 端处理都可以,我在 Springboot 端处理的,写一个 CorsConfig 类内容如下,不要忘了 @Configuration 注解。

@Configuration

public class CorsConfig {

private CorsConfiguration buildConfig() {

CorsConfiguration corsConfiguration = new CorsConfiguration();

corsConfiguration.addAllowedOrigin(“*”); // 1

corsConfiguration.addAllowedHeader(“*”); // 2

corsConfiguration.addAllowedMethod(“*”); // 3

return corsConfiguration;

}

@Bean

public CorsFilter corsFilter() {

UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

source.registerCorsConfiguration(“/**”, buildConfig()); // 4

return new CorsFilter(source);

}

}

3.IErrorCode 接口

Java 版本

public interface IErrorCode {

long getCode();

String getMessage();

}

Kotlin 版本

interface IErrorCode {

fun getCode(): Long

fun getMessage(): String

}

4.CommonResult 类

Java 版本

public class CommonResult {

private long code;

private String message;

private T data;

protected CommonResult() {

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

web浏览器中的javascript

  • 客户端javascript
  • 在html里嵌入javascript
  • javascript程序的执行
  • 兼容性和互用性
  • 可访问性
  • 安全性
  • 客户端框架

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

(img-ABiaTIrX-1712596476024)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-5VfX77Tp-1712596476024)]

web浏览器中的javascript

  • 客户端javascript
  • 在html里嵌入javascript
  • javascript程序的执行
  • 兼容性和互用性
  • 可访问性
  • 安全性
  • 客户端框架

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-NS9eC9Lq-1712596476024)]

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值