首页
技术小册
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.1 初识资源包类 在Yii2框架中,资源包(Asset Bundles)是一个强大的特性,它允许开发者以一种灵活和可管理的方式组织和注册CSS、JavaScript文件以及其它静态资源。通过资源包,Yii2能够自动处理资源的依赖关系、版本控制、压缩以及按需加载等复杂问题,极大地简化了前端资源的管理流程。本章将带你深入了解Yii2框架中的资源包类,从基本概念到实际应用,帮助你掌握这一重要特性。 #### 8.1.1 资源包的基本概念 在Yii2中,资源包是通过继承`\yii\web\AssetBundle`类(或其子类)来定义的。每个资源包都代表了一组静态资源,如CSS样式表、JavaScript脚本文件、图片等。通过定义资源包,你可以指定这些资源文件的路径、依赖关系、是否应该被压缩以及是否应该被注册到视图中等。 资源包的核心要素包括: - **`sourcePath`**:资源文件(如CSS、JS、图片等)的源路径。Yii2会基于这个路径来查找资源文件。如果资源文件是通过Web可访问的URL直接提供的,则此属性可以留空。 - **`js`**:一个数组,列出了该资源包中应被注册的JavaScript文件。这些文件可以是相对路径(相对于`sourcePath`),也可以是完整的URL。 - **`css`**:与`js`类似,但用于CSS文件。 - **`depends`**:一个数组,列出了该资源包所依赖的其他资源包。Yii2会确保依赖的资源包在当前资源包之前被注册。 - **`publishOptions`**:一个数组,用于配置资源发布时的选项,如是否压缩文件、发布到哪个目录等。 #### 8.1.2 创建资源包 创建资源包通常涉及定义一个继承自`\yii\web\AssetBundle`的类,并在其中设置上述属性。下面是一个简单的例子,展示了如何创建一个名为`AppAsset`的资源包,用于注册应用的全局CSS和JavaScript文件。 ```php namespace app\assets; use yii\web\AssetBundle; class AppAsset extends AssetBundle { public $basePath = '@webroot'; public $baseUrl = '@web'; public $css = [ 'css/site.css', ]; public $js = [ 'js/main.js', ]; public $depends = [ 'yii\web\YiiAsset', // 依赖Yii框架自带的资源包 'yii\bootstrap\BootstrapAsset', // 依赖Bootstrap资源包(如果使用了Bootstrap) ]; } ``` 在这个例子中,`AppAsset`资源包指定了CSS和JavaScript文件的路径(相对于`$basePath`),并声明了对`YiiAsset`和`BootstrapAsset`的依赖。这意味着在`AppAsset`被注册时,Yii2会首先确保`YiiAsset`和`BootstrapAsset`被注册并加载。 #### 8.1.3 注册资源包 资源包可以通过多种方式在Yii2应用中被注册。最常见的方法之一是在视图文件中使用`\yii\web\View`的`registerAssetBundle`方法,或者通过控制器或布局文件来全局注册。 ##### 在视图中注册 在视图文件中,你可以直接调用`$this->registerAssetBundle`方法来注册资源包: ```php <?php $this->registerAssetBundle(app\assets\AppAsset::class); ?> ``` ##### 在控制器中注册 有时,你可能希望在控制器层面就注册某些资源包,特别是当这些资源包与特定动作或页面紧密相关时。虽然Yii2不直接支持在控制器中注册资源包,但你可以通过修改视图的渲染过程来实现这一点。例如,在控制器中设置一个视图参数,然后在布局文件中根据这个参数来注册资源包。 ##### 在布局文件中注册 布局文件是另一个常见的资源包注册地点。在布局文件中注册资源包可以确保这些资源在应用的多个页面中被共享和重用。 ```php <?php // 在布局文件中 AppAsset::register($this); ?> ``` 注意,这里直接调用了`AppAsset::register`方法,并将`$this`(当前视图对象)作为参数传递。这是一种更简洁的注册方式,但前提是`AppAsset`类已经被正确加载(通常通过Composer的自动加载功能实现)。 #### 8.1.4 动态资源与条件注册 Yii2的资源包机制还支持动态资源的注册和基于条件的资源注册。动态资源是指那些其路径或内容在运行时才能确定的资源。Yii2允许你通过实现`AssetBundle`的`publish()`方法来处理动态资源的发布。 条件注册则允许你根据某些条件(如用户代理、语言偏好等)来决定是否注册某个资源包。这通常通过在控制器或视图中编写逻辑来实现,但在某些情况下,你也可以通过覆盖`AssetBundle`的`registerAssetFiles`方法来实现更复杂的条件逻辑。 #### 8.1.5 实战技巧与最佳实践 - **组织清晰**:将资源包按功能或模块分组,保持代码的组织性和可维护性。 - **依赖管理**:合理利用资源包的依赖关系,避免资源文件的重复加载。 - **版本控制**:为资源文件添加版本号或使用哈希值,以便在文件内容更新时强制浏览器加载新版本。 - **压缩与优化**:利用Yii2的压缩功能(通过`publishOptions`配置)来减少资源文件的大小,加快页面加载速度。 - **按需加载**:尽量实现资源的按需加载,避免在初始页面加载时加载不必要的资源。 #### 结语 通过本章的学习,你应该已经对Yii2框架中的资源包类有了全面的了解。从基本概念到实际应用,再到实战技巧与最佳实践,资源包作为Yii2前端资源管理的核心机制,其重要性不言而喻。掌握资源包的使用,将使你能够更加高效地管理和优化你的Web应用的前端资源。在未来的开发过程中,不妨多尝试利用资源包来简化你的工作流程,提升应用的性能和用户体验。
上一篇:
7.5.3 分页的超链接列表小部件LinkPager
下一篇:
8.2 Yii2框架资源管理代码分析
该分类下的相关小册推荐:
Magento零基础到架构师(产品管理)
PHP高并发秒杀入门与实战
Swoole高性能框架-Hyperf
PHP8入门与项目实战(2)
Magento零基础到架构师(内容设计)
PHP面试指南
Laravel(10.x)从入门到精通(十二)
Laravel(10.x)从入门到精通(十七)
Laravel(10.x)从入门到精通(九)
PHP8入门与项目实战(3)
Laravel(10.x)从入门到精通(十)
Magento零基础到架构师(目录管理)