0.为了前端培训做的一次博客
讲解目录
- web系统架构的演变————从传统架构到前后端分离
- 说说vue的开发流程
- 如何选择和使用UI库等各种插件
- 前后端登录鉴权机制
- 如何调试前端代码
- 浅析vue,更进一步了解
- 浏览器地址栏中输入url干了哪些事
- 一些工具
1. web系统架构的演变————从传统架构到前后端分离
1.1 传统架构MVC
- M: model 模型 (数据库)
- V: View 视图 (前端页面)
- C: Controller 控制器 (处理业务逻辑)
请求返回的最终结果是html
1.2 前后端分离
SPA
全称 Single Page Application(单页面应用),使用前端路由的方式代替后端的 controller,并使用前端模板代替后端的模板引擎渲染,使用接口实现与后端的数据交互。
SPA 的优势:
- 环境:前端开发者不需要本地起后端环境
- 流程:独立的前端开发方式,由于后端返回纯 JSON ,前端想要模拟请求响应的话,只需启动一个纯静态的服务器,响应 JSON 格式的 html 即可
- 联调:清晰的对接方式,JSON 对于前后端来说都是比较纯粹的
- 效益:对于用户来说,用户体验的提升
SPA 的劣势
- SEO 弱
- 首屏加载慢,等所有 js 加载完才能出首屏
- 前端需要处理一些本不需要在这一层处理的事情,如权限控制交给前端控制
参考
2. 说说vue的开发流程
创建
- 介绍 | Vue CLI (vuejs.org)
# 安装 npm install -g @vue/cli # 创建项目 vue create hello-world - 开始 | Vite 官方中文文档 (vitejs.dev)
npm init vite@latest - 找一些优秀开源已经做了一些基础修改,便于二次开发的模板(后台管理系统,移动端系统)
一些vue中开发的问题
问题一
前后端是同步进行的,但是接口不一定先比你提供,当自己写完静态页面的一些逻辑时,需要数据填充,有的是直接写死变量,但是这样少了请求的过程,而且后续联调改动大,所以需要mock。
解决
- 自己起一个服务,写一些简单的静态逻辑
- 一些插件
- 推荐 Fast Mock,方便调试
问题二
等到后端接口写好了,后端人员会给你提供一个接口地址,我们按照接口地址去调数据,发现被出错了(实际上是被拦截了) -> 同源策略
同源要求
- 域名
- 协议
- 端口
同源内容
- 存储
- ajax请求
- DOM
解决
九种跨域方式实现原理(完整版) - 掘金 (juejin.cn) dev-server配置代理(转发请求)
server: { port: 2800, //挂载端口 proxy: { '/api': { target:'https://www.fastmock.site/mock/18f94db5174920c0ad6a1e455bd1a1ca/scui-demo/api', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '/') } } },
问题三
js的异步问题(promise)
问题四
vue数据流自定向下
问题五
vue import是引用值,修改会引起多模块变化
解决
深拷贝
JSON.parse(JSON.stringify(str))
问题N。。。。结尾提问回答
3. 如何选择和使用UI库等各种插件
UI库种类繁多,质量参差不齐,有些可能会有bug,如果没人维护一旦使用起来就很坑,所以就推荐几个,少而精
npm i -s 库(顺便讲一下-s -d)importUse以element为例 安装
npm install element-plus --save
引入
// main.js
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')
4. 前后端登录鉴权机制
浏览器存储
- cookie: 4k 可以设置过期时间
- localStorage: 5M 自动手动释放
- sessionStorage: 5M 浏览器关闭清除
- indexDB: 大小无限制
参考
5. 如何调试前端代码
- dev-tools
- vue-devtools
- debugger
F12演示
6. 浅析vue,更进一步了解
- 响应式原理
- 双向绑定原理
- vue-router
- vuex
- 模块化
- COMMONJS
- CMD
- AMD
- UMD
- ES6 export import
- vue生命周期
7. 浏览器地址栏中输入url干了哪些事
- url解析
- 浏览器缓存命中策略
- DNS解析
- HTTP连接
- 服务器响应返回
- 解析生DOM树,CSSOM树,生成布局树 Layout Tree,渲染(回流和重绘)
- HTTP断开连接
参考
8. 一些工具
- nvm: node版本管理器
- nrm: node源管理器