From a165f3223e9362e5cececdc963dab30e8ca8e657 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Fri, 07 Mar 2025 13:01:10 +0800 Subject: [PATCH] 知识库文档,改写控制层基类主要方法列表 --- @framework/202-数据控制层基类Pilot.md | 140 +++++++++++++++++++++------------- @framework/201-请求层基类Fetcher.md | 43 ---------- 2 files changed, 86 insertions(+), 97 deletions(-) diff --git "a/@framework/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" "b/@framework/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" index 8415c1d..b99995a 100644 --- "a/@framework/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" +++ "b/@framework/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" @@ -12,7 +12,6 @@ - [`stringToCamel(str)`](#stringtocamelstr) - [`stringToUnderline(str)`](#stringtounderlinestr) - [`transKeyName(type, json)`](#transkeynametype-json) - - [`transImgPath(type, path)`](#transimgpathtype-path) - [请求的 options 配置](#请求的-options-配置) - [`hostType` 主机类型](#hosttype-主机类型) - [`silence` 静音请求](#silence-静音请求) @@ -160,14 +159,6 @@ --- - - - - - - - - ### `stringToCamel(str)` **功能** @@ -229,40 +220,6 @@ **注意事项** - 支持嵌套对象的递归转换 - ---- - -### `transImgPath(type, path)` -**功能** -转换图片路径,支持修复补齐或裁剪多余部分 -适用于处理旧版运营平台的图片路径,确保路径格式统一 - -**参数** -| 参数名 | 类型 | 说明 | -| ------ | ------ | ---------------------------- | -| type | String | 转换类型:`'fix'` 或 `'cut'` | -| path | String | 需要转换的图片路径 | - -**返回值** -| 类型 | 说明 | -| ------ | ---------------- | -| String | 转换后的图片路径 | - -**示例** -```js - -class FCommon extends Fetcher { - - saveUserInfo() { - const path = '4/5e56307c489c7.jpg'; - const result = this.transImgPath('fix', path); // 返回 '/upload/4/5e56307c489c7.jpg' - } -} -``` - -**注意事项** -- 支持多路径(逗号分隔)的批量转换,即先分别处理每一项后再(逗号)合并 - ## 请求的 options 配置 diff --git "a/@framework/202-\346\225\260\346\215\256\346\216\247\345\210\266\345\261\202\345\237\272\347\261\273Pilot.md" "b/@framework/202-\346\225\260\346\215\256\346\216\247\345\210\266\345\261\202\345\237\272\347\261\273Pilot.md" index ca5191e..9547ade 100644 --- "a/@framework/202-\346\225\260\346\215\256\346\216\247\345\210\266\345\261\202\345\237\272\347\261\273Pilot.md" +++ "b/@framework/202-\346\225\260\346\215\256\346\216\247\345\210\266\345\261\202\345\237\272\347\261\273Pilot.md" @@ -4,12 +4,15 @@ - [功能说明](#功能说明) - [引用方法](#引用方法) - [主要方法](#主要方法) - - [创建页面合并对象](#创建页面合并对象) - - [主要工作:生成合并对象](#主要工作生成合并对象) - - [实际合并](#实际合并) - - [页面能力扩展:跨页面通讯](#页面能力扩展跨页面通讯) - - [页面能扩展:跨端通讯](#页面能扩展跨端通讯) - - [转换静态图片引用](#转换静态图片引用) + - [`createOptions(dataAdd)`](#createoptionsdataadd) + - [`transAssets(assets)`](#transassetsassets) + - [静态图片地址转换说明](#静态图片地址转换说明) + - [页面合并流程](#页面合并流程) + - [第一步:生成合并对象](#第一步生成合并对象) + - [第二步:实际合并](#第二步实际合并) + - [页面能力扩展](#页面能力扩展) + - [跨页面通讯](#跨页面通讯) + - [跨端通讯](#跨端通讯) ## 功能说明 @@ -29,28 +32,84 @@ ## 主要方法 -```js -/** - * 创建页面选项 - * @param {Object} [dataAdd] - 需要添加到 vue data 中的额外数据 - * @returns {Object} 页面选项对象 - */ -createOptions(dataAdd = {}) {} -/** - * 转换静态图片引用 - * @static - * @param {Object} assets - 静态图片对象 - * @returns {Object} 转换后的静态图片对象 - */ -static transAssets(assets = {}) {} +### `createOptions(dataAdd)` +**功能** +创建页面合并对象,将实例的属性和方法映射到页面合并对象中 + +**参数** +| 参数名 | 类型 | 说明 | +| ------- | ------ | -------------------------- | +| dataAdd | Object | 需要添加到页面中的额外数据 | + +**返回值** +| 类型 | 说明 | +| ------ | ------------ | +| Object | 页面合并对象 | + + +**注意事项** +- 如果 `dataAdd` 中包含 `assets` 属性,会自动调用 transAssets 转换其中的图片地址值 +- `$` 开头的属性会被直接映射到合并对象中,同时去掉 `$` 前缀 +- 非 `$` 开头的属性会被映射到合并对象的 `methods` 属性中 + + +### `transAssets(assets)` +**功能** +转换静态图片引用的路径,根据运行环境(H5 或小程序)生成图片实际发布的路径 + +**参数** +| 参数名 | 类型 | 说明 | +| ------ | ------ | ------------------ | +| assets | Object | 包含图片路径的对象 | + +**返回值** +| 类型 | 说明 | +| ------ | -------------------- | +| Object | 转换后的图片路径对象 | + +#### 静态图片地址转换说明 + +在目前项目体系设计下,由于不同项目(公众号、小程序、混合app)图片加载机制的不同,设置了一个统一的图片地址转换入口 +经过静态方法 transAssets 转换,可以获得图片实际发布的地址 + +**示例1** + +```javascript +const assets = { logo: 'assets/images/logo.png' }; +const result = Pilot.transAssets(assets); // 输出转换后的图片实际发布地址 ``` -## 创建页面合并对象 +**示例2** + +```HTML +<template> + <image :src="assets.homeNav1" mode="aspectFit" /> +</template> +``` + +```js +export default { + name: 'index', + ...new PIndex().createOptions({ + // 首页菜单图片,会全部经过 transAssets 进行路径转换,转换为图片实际发布的地址 + assets: { + homeNav1: 'assets/img/home-nav-01.png', + homeNav2: 'assets/img/home-nav-02.png', + homeNav3: 'assets/img/home-nav-03.png', + }, + }), +}; +``` + +**注意事项** +移动端的图片不要使用 css 背景,而是使用 image 图片元素,再填充由 transAssets 生成的实际发布地址 + +## 页面合并流程 `createOptions` 是类 Pilot 的核心方法,此方法将独立申明的信息合并回原 Vue 对象 -### 主要工作:生成合并对象 +### 第一步:生成合并对象 * 扫描当前类,以 \$ 开头的属性或方法,去掉 \$ 符后,直接作为 Vue 的属性或方法准备合并 * 扫描当前类,非以 \$ 开头的方法,作为 Vue 对象申明中 methods 的子级方法准备合并 @@ -100,7 +159,7 @@ 注意:不能在数据控制器中定义 $name、$components、$methods 这三项,因为实际合并时会覆盖 -### 实际合并 +### 第二步:实际合并 数据控制层和界面层实际的合并,其实是写在界面层上 由界面层实例化数据控制层,并使用其基类的 createOptions 方法生成选项,再合并进原 Vue 对象 @@ -118,8 +177,9 @@ ...new PPageName().createOptions(), }; ``` +## 页面能力扩展 -### 页面能力扩展:跨页面通讯 +### 跨页面通讯 Taro 的跨页面通讯能力,仅小程序可用,非小城不能跨页通讯非常不方便 因此,使用 createOptions 创建合并对象时,给页面的 Vue 实例,增加了跨页面通讯的方法,兼容所有平台 @@ -171,37 +231,9 @@ } ``` -### 页面能扩展:跨端通讯 +### 跨端通讯 当我们进混合 APP 开发时,我们需要与 java 层进行通讯,使用 createOptions 创建合并对象时,增加了跨通讯的能力 -(更多跨端通讯明细待续) +(TODO:更多跨端通讯明细待续) -## 转换静态图片引用 - -在目前项目体系设计下,由于不同项目(公众号、小程序、混合app)图片加载机制的不同,设置了一个统一的图片地址转换入口 -* 移动端的图片不能使用背景,只能使用 image 图片元素 -* 图片地址需经过静态方法 transAssets 转换而来 -* createOptions 的参数 dataAdd 中,如果包含 assets 属性,会自动调用 transAssets 全部转换 - -例如: - -```HTML -<template> - <image :src="assets.homeNav1" mode="aspectFit" /> -</template> -``` - -```js -export default { - name: 'index', - ...new PIndex().createOptions({ - // 首页菜单图片,会全部经过 transAssets 进行路径转换,转换为图片实际发布的地址 - assets: { - homeNav1: 'assets/img/home-nav-01.png', - homeNav2: 'assets/img/home-nav-02.png', - homeNav3: 'assets/img/home-nav-03.png', - }, - }), -}; -``` -- Gitblit v1.9.1