# web Vblog 前端项目 ## 清理模版代码 - 清理组件 - 清理样式 - 清理js文件 ## 添加登录页面 - LoginPage.vue ```vue ``` - 添加路有 ```js const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: '/login', name: 'login', component: () => import('../views/common/LoginPage.vue'), }, ], }) ``` - App组件,添加路由视图入口 ```vue ``` ## 安装UI插件 https://gitee.com/infraboard/go-course/blob/master/day20/vue3-ui.md ```js // 加载UI组件 import ArcoVue from '@arco-design/web-vue' import '@arco-design/web-vue/dist/arco.css' // 额外引入图标库 import ArcoVueIcon from '@arco-design/web-vue/es/icon' app.use(ArcoVue) app.use(ArcoVueIcon) ``` ## Login Page开发 ```vue ``` ## 对接后端 调用后端的Restful接口, 需要一个http客户端 - XMLHTTPRequest - fetch - axios: https://www.axios-http.cn/docs/intro ```shell npm install axios ``` ### 后端API ```js export const client = axios.create({ baseURL: 'http://127.0.0.1:8080', timeout: 3000, }) ``` ```js import { client } from './client' export const LOGIN = (data) => client({ url: '/api/vblog/v1/tokens', method: 'POST', data: data, }) ``` ### 页面使用 ```js const summitLoading = ref(false) const handleSubmit = async (data) => { if (data.errors === undefined) { try { summitLoading.value = true await LOGIN(data.values) } catch (error) { console.log(error) } finally { summitLoading.value = false } } } ``` ```sh Access to XMLHttpRequest at 'http://127.0.0.1:8080/api/vblog/v1/tokens' from origin 'http://localhost:5173' 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. ``` ### 如何处理CORS