首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
7.1 调用小部件的两种方式
7.1.1 调用widget()方法使用小部件DatePicker
7.1.2 调用begin()和end()方法使用小部件ActiveForm
7.2 项目实现迭代八:使用ActiveForm小部件替换添加文章视图
7.2.1 调用小部件ActiveForm
7.2.2 “文章标题”文本输入框
7.2.3 “文章栏目”下拉列表框
7.2.4 “文章图片”上传文件输入框
7.2.5 “内容”文本输入域
7.3 自定义小部件
7.3.1 继承Widget
7.3.2 自定义小部件的MVC结构
7.4 项目实现迭代九:自定义首页幻灯片小部件
7.5 项目实现迭代十:分页显示列表页
7.5.1 分页组件Pagination
7.5.2 新闻中心列表页实现数据填充
7.5.3 分页的超链接列表小部件LinkPager
8.1 初识资源包类
8.2 Yii2框架资源管理代码分析
8.2.1 视图中注册资源包类
8.2.2 注册资源文件
8.2.3 输出缓冲区的数据
8.3 AssetBundle类的成员属性
8.4 项目实现迭代十一:本书配套项目实现前端资源管理
8.4.1 实现首页前端资源管理
8.4.2 实现新闻中心列表页前端资源管理
9.1 模型中编写验证规则
9.2 控制器中安全赋值
9.3 控制器中触发验证
9.4 视图中提取错误信息
9.5 项目实现迭代十二:完成“添加文章”页面中的模型验证
10.1 AJAX简介
10.2 传统的JavaScript实现AJAX验证
10.2.1 创建AJAX引擎XMLHttpRequest对象
10.2.2 创建HTTP请求
10.2.3 设置响应HTTP请求状态变化的方法
10.2.4 设置获取服务器返回数据的语句
10.2.5 发送HTTP请求
10.3 jQuery实现AJAX验证
10.4 项目实现迭代十三:完成“添加用户”页面的AJAX验证
11.1 用户登录-表单模型
11.2 用户登录-客户端验证
11.2.1 ActiveForm实现客户端验证代码分析
11.2.2 项目实现迭代十四:完成登录页面的客户端验证
11.3 模型中的自定义方法作为rules()验证器
11.4 用于验证用户名和密码的身份类UserIdentity
11.5 项目实现迭代十五:完成用户登录
11.6 保存用户登录状态的yii\web\User类
12.1 访问控制技术综述
12.2 RBAC简介
12.3 RBAC需求分析及功能概述
12.4 项目实现迭代十六:最简方式实现RBAC
12.4.1 数据库设计
12.4.2 用户管理
12.4.3 角色管理
12.4.4 权限管理
12.4.5 用户—角色配置管理
12.4.6 角色—权限配置管理
12.5 项目实现迭代十七:使用yii\rbac\DbManager实现 RBAC
12.5.1 基本概念
12.5.2 用户管理
12.5.3 角色管理
12.5.4 权限管理
12.5.5 权限管理系统验证
12.6 项目实现迭代十八:使用yii2-admin扩展实现RBAC
12.6.1 配置
12.6.2 使用的数据库表
12.6.3 路由列表
12.6.4 角色列表
12.6.5 用户列表
12.6.6 菜单列表
12.6.7 集成AdminLTE后台主题及菜单展示
12.6.8 基于存取控制过滤器(ACF)的用户登录页面
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(中)
小册名称:Yii2框架从入门到精通(中)
### 8.4.2 实现新闻中心列表页前端资源管理 在开发基于Yii2框架的Web应用时,前端资源的管理是一个至关重要的环节,它直接关系到用户体验和网站的性能。本章节将深入探讨如何在Yii2项目中实现新闻中心列表页的前端资源管理,包括CSS、JavaScript、图片等静态资源的组织、优化、加载与缓存策略。 #### 1. 前端资源概述 前端资源主要包括样式表(CSS)、脚本(JavaScript)、图片(Images)、字体(Fonts)以及其他多媒体文件。在新闻中心列表页的开发中,合理的资源管理能够提升页面加载速度,增强用户界面的响应性和美观度。 #### 2. Yii2中的前端资源管理 Yii2框架提供了一套灵活的前端资源管理机制,通过`AssetBundle`类和`AssetManager`组件实现。`AssetBundle`用于定义一组资源(如CSS、JS文件),而`AssetManager`则负责这些资源的注册、发布和依赖管理。 ##### 2.1 创建AssetBundle 为了管理新闻中心列表页的前端资源,我们首先需要创建一个或多个`AssetBundle`。例如,可以创建一个`NewsListAsset`类,专门用于管理新闻列表页的CSS和JS文件。 ```php namespace app\assets; use yii\web\AssetBundle; class NewsListAsset extends AssetBundle { public $basePath = '@webroot'; public $baseUrl = '@web'; public $css = [ 'css/news-list.css', ]; public $js = [ 'js/news-list.js', ]; public $depends = [ 'yii\web\YiiAsset', // 依赖Yii的JS库 ]; } ``` 在这个例子中,`$basePath`和`$baseUrl`分别指定了资源文件的物理路径和Web可访问路径。`$css`和`$js`数组列出了该资源包包含的CSS和JS文件。`$depends`属性则定义了该资源包所依赖的其他资源包,确保依赖项先被加载。 ##### 2.2 注册AssetBundle 在视图文件或控制器中,可以通过调用`$this->registerAssetBundle()`方法注册`NewsListAsset`。如果是在视图中,可以通过`$this`(实际上是`View`对象的实例)来调用;在控制器中,则通常是在`render`方法之前通过`$view`变量(如果已传入)或`Yii::$app->view`来调用。 ```php // 在视图中注册 NewsListAsset::register($this); // 或者在控制器中 public function actionIndex() { \Yii::$app->view->registerAssetBundle(NewsListAsset::class); return $this->render('index'); } ``` #### 3. 前端资源优化 仅仅通过`AssetBundle`管理前端资源还不够,我们还需要采取一系列措施来优化这些资源的加载和性能。 ##### 3.1 合并与压缩 - **合并CSS和JS文件**:减少HTTP请求次数是提升页面加载速度的有效手段。Yii2的`AssetManager`支持通过配置`bundles`选项来合并资源文件。 - **压缩CSS和JS**:压缩文件可以减小文件大小,从而加快下载速度。虽然Yii2的`AssetManager`不直接提供压缩功能,但你可以使用构建工具(如Webpack、Gulp)或在线工具来压缩资源文件。 ##### 3.2 缓存策略 - **浏览器缓存**:通过设置HTTP缓存头(如`Cache-Control`、`Expires`、`ETag`等),可以指示浏览器缓存资源文件。Yii2的`AssetManager`允许你通过配置`assetManager`组件的`linkAssets`、`appendTimestamp`等属性来控制资源的缓存行为。 - **服务端缓存**:对于动态生成的资源(如通过LESS、SASS等预处理器编译的CSS),可以考虑使用服务端缓存来减少编译时间。 ##### 3.3 异步加载与懒加载 - **异步加载JavaScript**:将非关键JavaScript文件设置为异步加载,可以减少页面渲染的阻塞时间。 - **图片懒加载**:对于新闻列表页中的图片,可以使用懒加载技术,即仅当图片进入视口时才加载它们,从而提升页面加载速度和用户体验。 #### 4. 实战:优化新闻中心列表页 假设我们已经有了一个基本的新闻中心列表页,现在来应用上述优化策略。 ##### 4.1 合并与压缩CSS和JS 使用Webpack或Gulp等工具将多个CSS和JS文件合并为一个文件,并进行压缩。然后,更新`NewsListAsset`类中的`$css`和`$js`数组,指向合并压缩后的文件。 ##### 4.2 配置缓存策略 在`config/web.php`中配置`assetManager`组件,设置`linkAssets`为`false`(如果你使用了CDN或希望完全控制资源的URL),并考虑是否需要通过`appendTimestamp`来禁用缓存(在开发环境中通常设置为`true`,生产环境中则设为`false`)。 ##### 4.3 实现图片懒加载 使用JavaScript库(如LazySizes)或纯JavaScript代码来实现图片的懒加载。在`news-list.js`中编写相应的逻辑,确保只有用户滚动到图片位置时才开始加载图片。 #### 5. 总结 本章节详细介绍了如何在Yii2框架中实现新闻中心列表页的前端资源管理,包括使用`AssetBundle`管理资源、资源的优化策略(如合并压缩、缓存控制、异步加载与懒加载)以及实战应用。通过合理的前端资源管理,我们可以显著提升新闻中心列表页的加载速度和用户体验。希望这些内容能够帮助你更好地开发高效、美观的Yii2应用。
上一篇:
8.4.1 实现首页前端资源管理
下一篇:
9.1 模型中编写验证规则
该分类下的相关小册推荐:
Yii2框架从入门到精通(上)
PHP8入门与项目实战(1)
PHP8入门与项目实战(5)
剑指PHP(从入门到进阶)
Swoole高性能框架-SwooleWorker
PHP安全之道
Laravel(10.x)从入门到精通(十六)
Laravel(10.x)从入门到精通(八)
PHP8入门与项目实战(6)
经典设计模式PHP版
ThinkPHP项目开发实战
Laravel(10.x)从入门到精通(十四)