安装Sass
pnpm i sass -D
电商 网站 的首页 通常会比较长 用户 不一定能访问到 页面靠下面的图片 ,这类图片可以通过 懒加载 优化手段可以做到 只有 进入视口区域才发送图片请求
指令写法:
<img v-img-lazy="item.picture"/>
路由缓存问题
使用带有参数的路由需要注意的是 相同的组件实例 将被 重复 使用 ,因为俩个路由都渲染俩个组件 复用 显得 更加高效 但是这也意味着 组件的 生命周期 钩子不会被调用
方案一
以 当前路由 完整路径 为 key 的值 给 router-view 组件绑定
key 最常见 的 用例 是与 v-for 结合 但是也可以用于 替换 一个元素 / 组件 而不是复用 它 当你 想这样做时 它很可能会很有用
在适当 的 时候 触发 组件的生命周期钩子
触发过渡
方案二
使用 beforeRouteUpdate 导航钩子
beforeRouteUpdate 钩子函数可以在每次路由更新 之前 执行 在回调 中执行 需要数据 更新的业务逻辑 即可
或者使用 beforeRouterUpdate 导航 守卫 它也可以 取消导航
定制路由行
在不同 路由 切换 的时候 可以自动 滚动 到 页面的顶部 而不是 停留在 原先的位置
vue-router 支持 scrollBehavior 配置项 可以指定 路由 切换 时 的滚动位置
scrollBehavior(){
return {top:0}
}
spring
Spring Framework 是Spring 生态圈中最基础的项目,是其他项目的根基
- IoC 控制反转 对象的创建 控制权 由程序 转移到外部 ,这种思想称为 控制反转 IoC 主要 为了 解耦合
- 耦合是指两个或两个以上对象存在依赖,当一方修改之后会影响另一方,那么就说这些对象间存在耦合。
Spring 技术 对 IoC 思想进行了 实现
Spring 提供了一个容器 称为 IoC 容器 用来充当 IoC 思想 中的 外部
DI 依赖注入
在容器中建立 bean 和 bean 之间 的 依赖 关系 的整个过程 称为 依赖注入
bean基础配置
bean 的 别名
name属性 可以指定多个别名 用空格隔开 id 有的功能 name 属性带的也能做
bean 的 作用域范围
scope
在bean 的作用范围 可选范围如下:
- singleton 单例 (默认)指创建的对象还是原来那一个
- prototype 非单例 指 创建 新的对象
bean实例化
依赖注入方式
setter 注入
- 简单类型
- 引用类型
案列:
Beans.xml 文件
执行:
在bean中 定义引用类型 属性 并 提供 可 访问的set方法
配置中 使用 property 标签 ref 属性 注入引用类型对象
构造器注入
- 简单类型
- 引用类型
ApplicationContext
称为 Spring 容器 内部封装了 BeanFactory 比 BeanFactory 功能 更 强大 使用 ApplicationContenxt 进行开发时 xml 配置文件 的 名称 习惯写成 applicationContext.xml
Bean 的延迟加载
当 lazy-init 设置为 true 时 为延迟加载 也就是当 Spring 容器 创建的时候 不会立即创建Bean 实列 等待 用到时 再创建Bean 实例 并存储到 单例池 中去 后续在使用 该 Bean 直接从 单例池 获取即可 本质上 该 Bean 还是单例的
Bean 的 初始化 和 销毁方法配置
Bean 在 被实例化 后 可以执行指定的初始化方法完成 一些初始化 的 操作 Bean 在销毁 之前 也可以执行 指定 的 销毁方法来完成一些操作
- 初始化方法名称 init-method
- 销毁方法名称 destroy-method
SpringBean 的配置详解
Bean 的 实例化 配置
构造方法实例化 Bean 又分为 无参构造方法实例化 和 有参构造方法实例化
SpringBoot
是由 Pivotal 团队 提供的 全新框架 其设计目的是用来简化 Spring 应用 的初始搭建 以及 开发过程
starter
Springboot 中常见的项目名称 定义 了 当前项目使用的所有依赖坐标 以达到减少 依赖配置 的目的
parent
所有 SpringBoot 项目中要继承的项目 定义了 若干个 坐标版本号 (依赖管理,而非依赖) 以达到 减少依赖冲突 的 目的
spring-boot-starter-parent 各版本间存在诸多坐标版本不同
REST开发
REST简介
表现形式状态转换
优点
- 隐藏资源的访问行为 无法通过地址得知对资源是何种操作
- 书写简化
按照REST风格 访问资源时 使用 行为动作 区分对资源进行了何种操作
常见的:get post put delete
postman 测试成功:
@RequestBody
用于接收 json 数据
@RequestParam
用于接收 url 地址传参 或者 表单 传参
@PathVariable
用于接收 路径 参数 使用 {参数名称} 描述路径参数
后期开发中 发送请求参数超过 1 个时 以 json 格式为主 @RequestBody 应用较广
如果发送非 json 格式数据 选用 @RequestParam 接收请求参数
采用 RESTful 进行开发 当参数数量较少时 例如 1 个 可以采用 @PathVariable 接收请求路径变量 通常用于传递 id 值
基础配置
- 修改服务器端口
serve.port=80
- 关闭运行日志图标
spring.main.banner-mode=off
- 设置日志相关
logging.level.root=debug
Springboot 提供了3种 配置文件的格式
- properties 传统格式/默认格式
- yml 主流格式
- yaml
整合第三方技术
- Mybatis
- 勾选Mybatis 技术 也就是导入 Mybatis 对应的 starter
- 数据库连接 相关信息转换成配置
- 数据库SQL映射需要添加@Mapper被容器识别到
在使用 Springbooot 整合 MybatisPlus 时 我遇到了一个问题
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.dao.UserDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1824)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1383)
后面找了查找了很多资料 发现是 MybatisPlus 3 和 SpringBoot 3 以上版本并没有整合 的 很好
降低了SpringBoot的版本为 2.多才运行成功
Lombok
一个java类库 提供了一组注解 简化 POJO 实体类 开发
依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
常用注解:
@Data
写了这个注解之后 那么 setter 和 getter 方法都不用写了,包括 toStirng 和 hashCode
控制台就会有对应内容
mybatisPlus 会有一个分页的功能
它的语句是 selectPage
但是写完这些并没有很大的用处
需要写一个MybatisPlus的拦截器 而且是分页拦截器
这样就能运行成功了
在 MybatisPlus 里面 通过 selectPage 后 的 返回的page 变量还有许多用处
前后端 协议 联调
前后端分离结构设计中页面归属 前端 服务器
单体工程中页面 放置 在 resources 目录下 的 static 目录中 (建议执行clean)
刷题记录: