-
简历需要
-
vue3 语法
- 过滤器 filters 换了表现形式 computed data -> 计算 格式转化 进制转换 汇率 语言 入口可以配置多个过滤器 app.config.globalProperties.$filters = { prefix(url) { if().... } }
-
设计模式 DRY Don't repeat yourself
-
工程化 vite 前端工程化 运行在服务器端 node .vue style lang="stylus" css 工程 stylus | less stylus -> vite -> npm i stylus -> 转译为css -> 页面上的css vite.config.js vite 配置文件 工程化定制
-
组件化思想 state 状态对象, 响应式 数据驱动界面 常规的组件数据都放到state 中 由 reactive({...}) 子组件和state 诞生依赖关系 热更新 components 组件 有利于 页面级组件或大组件更好维护, template 比较简洁 维护好数据状态 正确
- simple-header noback props 组件的复用和应用场景
-
商业应用npm包
- vant 有赞, 移动商城组件库
- lib-flexible 移动适配库
- vue-router 路由
-
架构(目录的意义) vite 工程化 项目模板
- src 开发目录
- assets 静态资源目录 css image main.css base.css @import 模块化
- views 页面级别组件
- common 文件夹 通用的, 和具体业务无关, 可以在任何页面, 任何项目 style 通用的样式 - mixin.styl 专门放通用的混合函数的地方
- service api 定义接口的地方 方便统一管理接口 axios baseURL ... 每个页面的接口一个独立的文件 易维护
- src 开发目录
-
异步解决方案
- promise es6 pending -> fulfilled
- 同步化 流程难控制
- es8 async + await 多个异步任务要同步化的时候 thenable 要简化
-
全家桶
- vue-router
- redirect
流程如下
-
用户通过访问 / 来到 / path:'/' -> / -假如 component: Home.vue 200 状态码表示成功
-
但是 redirect 没有直接给浏览器响应 给浏览器发送了一个跳转指令 再次发出请求 ! /home 如何跳转? 在浏览器network之中可见 状态码 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务器超时
2xx (成功) 表示成功处理了请求的状态码。 3xx (重定向) 要完成请求,需要进一步操作。 4xx(请求错误) 这些状态码表示请求可能出错,妨碍了服务器的处理 5xx(服务器错误) 这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
-
- redirect
流程如下
- vue-router
-
stylus css 全新写法, 写起来更快, 很多的高级功能 css 的超级
-
npm i stylus 安装stylus css 预编译器 用全新的写法来写css, stylus, 帮我们自动编译成css
-
.vue style lang="stylus"
-
不用写{} : ; 快速 写了也没事
-
表达父子元素的元素 css 模块 缩进 自动加上父元素的限定
-
混合mixin 形式上是函数 封装某个功能样式的集合 混合到调用它的地方
-
申明变量
-
scoped 防止css 类名冲突 给组件加data-v-hash唯一值 选择器加上属性选择器
-
&.active & 引用上一级选择器
-
-
main.js 入口文件,有哪些工作 全局性视野 - 完整的vue 全家桶 router SAP - 组件库 vant element3 element-plus 按需加载 css库文件 - css 准备工作 - main.css - reset - *, *:before, *:after 伪元素也要选中 - 移动端box-sizing: border-box IE盒模型 更有利于布局 - font-family -apple-system PC 微软雅黑 sans-serif - 高分辨率手机 抗锯齿 让文字更清晰 text-rendering -webkit-font-smoothing: antialiased; - 全局css 变量的申明 主题及样式的管理, 复用 - 图标字体库 iconfont 引入第三方 link - 移动应用 rem 适配 html fontsize 动态 1rem = 设计稿的多少 ? 750px 1rem = 75 第三方库 lib-flexible Mobile First 移动应用80% PC 工作 管理 后台
-
axios
- 接口请求里的顺丰 更专业 接口返回的数据, 再包一层 更好及更标准的使用, 更丰富的请求信息 http 了解更多 axios 把接口返回的数据放在data中
- 拦截器 interceptors axios request/response return res.data
-
骨架屏方案 用户体验优化 skeleton vant 提供了这个组件 template 显示
-
图片懒加载 等一等 减少http 请求数
- html 文件中 link src img script 启动新的http请求
公路一样有限制的
请求并发数 越多的话 页面加载越慢 - 可视区内图片加载
- 非可视区内延迟加载, 可视区滚动到哪里加载相应
- vant 内置了Lazyload vue directives 指令集 自定义指令 v-lazyload 命令组件或标签做相应的事情 更简单直观
- base64 png/jpg 更小 放到css js 文件中 不需要png 额外的文件, 有效的减少了并发数
- html 文件中 link src img script 启动新的http请求
公路一样有限制的
-
vue-router 细节考点
- 懒加载
- router-link 激活路由 .router-link-active
- 路由的跳转
- 全局对象 Router vue-router useRouter() 组件里随时拿到 push go cuttentRoute
- 当前路由 Router.currentRoute() useRoute() 当前路由对象 route.params
- useRoute() 使用一下 hooks 编程 use开头的函数的称呼 vue vue-router vuex ... useRoute 方便我们使用, 函数的方式 composition api 结合的很好
- 路由切换的动画
vue transition
silde-left silde-right
首页 -> detail
transition 由右向左 translate
detail -> 首页 由左向右边退出
- 路由切换加transition
- vue 内置了transition 组件 v-if v-show router-view 挂载和卸载 给我们自动添加 .v-enter-active true 类名钩子 不用像之前的例子那样去:class .v-enter-active { 定制的能力很搞 } false 自动添加 v-leave-active transition name 支持 不同的效果定义
-
详情页技术内幕
- 用户在编辑器里编辑 content 长文 html 片段 固定的介绍 + 创意的用户编辑内容一起组成
- 幻灯片 数量 大小 要做延迟加载
- key 唯一值的意义
vue 循环绑定 一定要给一个key, 不然就会 warning
其中某一项修改时, 不可能替换整个数组 , DOM更新开销大, 性能不好
数组对应的列表渲染 不能做dom 编程,
数组 和 dom 要局部热更新的 唯一值的对应
:key
不能用index ? 涉及到unshift新增, 中间的插入 排序 - v-html 详情页内容 多数是用户编辑的, 存储的形式是html格式 vue 不会直接把html字符串 显示, 转成普通字符串 安全, 跨站脚本攻击 不完整的html v-html 复制安全性
- vant 的底部购物组件套装 badge 徽章 跨页面共享状态 vuex
-
登录注册功能
- 鉴权
- 登录 注册 两个功能, 合并为一个页面
- 验证码功能
- 防机器人作弊
- 组件黑盒子, canvas 返回验证码的imgCode state.imgCode
- onSumbit
用户填的验证码 和 验证码组件的state.imgCode 比较
登录组件里怎么找到验证码组件
进入到里面去 拿到imgCode
ref 上场
ref 标注一个对象, 拿到组件对象
- const verifyRef = ref(null)
- template ref="verifyRef" verifyRef 就是代表验证码组件 verifyRef.value.state.imgCode
-
nextTick 响应式数据的修改很快的 网上购物 钱 立即少 但是页面的热更新却是需要一段时间的
- 首页scroll 凸显导航栏效果, 极佳的用户体验
- nextTick 不止是组件挂载了, state 更新模板也完成了 window.addEventListener('scroll') 不会争抢
- scrollTop state.headerScroll
- 首页scroll 凸显导航栏效果, 极佳的用户体验
mall
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||