From 964452581dbf8e98bbb3156dbcb390cdc884440d Mon Sep 17 00:00:00 2001 From: wanganxp Date: Tue, 14 May 2024 06:32:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0vue=E3=80=81=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E3=80=81input=E7=BB=84=E4=BB=B6=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/component/README.md | 22 +++++++- docs/component/input.md | 12 +++- docs/page.md | 116 ++++++++++++++++++++++++++++++++++++++- docs/vue/README.md | 24 ++++++-- docs/vue/component.md | 18 +++--- docs/vue/data-bind.md | 48 ++++++++++++---- docs/vue/others.md | 5 +- 7 files changed, 211 insertions(+), 34 deletions(-) diff --git a/docs/component/README.md b/docs/component/README.md index ee576397..0d33f1c3 100644 --- a/docs/component/README.md +++ b/docs/component/README.md @@ -1,9 +1,27 @@ # uvue组件概述 -## 监听页面生命周期 +## 定义 -`4.0` 起可通过组合式 API 实现组件中监听页面生命周期,[示例代码](../vue/component.md#component-lifecycle)。 +- 组件是视图层的基本组成单元。 +- 组件是一个单独且可复用的功能模块的封装。 + +每个组件,包括如下几个部分:以组件名称为标记的开始标签和结束标签、组件内容、组件属性、组件属性值。 + +- 组件名称由尖括号包裹,称为标签,它有开始标签和结束标签。结束标签的`<`后面用`/`来表示结束。结束标签也称为闭合标签。如下面示例的``是开始标签,``是结束标签。 +- 在开始标签和结束标签之间,称为组件内容。如下面示例的`content` +- 开始标签上可以写属性,属性可以有多个,多个属性之间用空格分割 +- 每个属性通过`=`赋值 + +## 组件种类 +uvue页面中,支持3种组件: +1. 内置组件,即文档左侧的组件清单 +2. 自定义uvue组件,即开发者自己按照vue组件规范编写的uvue文件。这种组件一般由前端工程师编写。如果按照指定目录规范放置,在使用组件时无需import和注册,即[easycom组件规范](../vue/component.md#easycom) +3. uts原生组件。由Android或iOS的原生开发者,按照uts插件的组件规范编写,它在编写时贴近但不完全是vue组件开发规范。不过对于组件的使用者来讲,用法就是标准的uvue组件了。[详见](../plugin/uts-component.md) + +## 组件监听页面生命周期 + +`4.0` 起可通过组合式 API 实现组件中监听页面生命周期,[示例代码](../vue/component.md#component-lifecycle)。 ## 调用组件方法@methods diff --git a/docs/component/input.md b/docs/component/input.md index eb823d11..fed7c4c6 100644 --- a/docs/component/input.md +++ b/docs/component/input.md @@ -33,11 +33,16 @@ 在web端平台,输入框上推逻辑是由浏览器自动完成的,属性`adjust-position`无效。 但iOS safari软键盘弹出时,整个页面会上推而不是挤压,导致pages.json配置的导航栏会上移到屏幕之外。 -## inputmode说明 +## comfirm-type和inputmode说明 -inputmode 兼容性:Chrome >= 66、Edge >= 79、Firefox >= 95、Chrome Android >= 66、Firefox for Android >= 79、Safari on iOS >= 12.2、WebView Android >= 66 +1. comfirm-type +Web平台弹出键盘使用的是浏览器控制的键盘,在Chrome81+、Safari13.7+之前,键盘右下角文字只能设置完成和搜索,从Chrome81+、Safari13.7+起支持设置发送、下一个。 -input组件有 inputmode 和 type、comfirm-tye 3个相似的属性,它们的区别详解如下: +2. inputmode + +web平台的inputmode的浏览器兼容性如下: Chrome >= 66、Edge >= 79、Firefox >= 95、Chrome Android >= 66、Firefox for Android >= 79、Safari on iOS >= 12.2、WebView Android >= 66 + +3. input组件有 inputmode 和 type、comfirm-type 3个相似的属性,它们的区别详解如下: - type:在 uni-app 和小程序中仅仅是输入框,定义 input 的工作方式,此值决定可输入什么值。比如 number 只能输入数字。 - comfirm-type:定义键盘右下角按键的文字 @@ -46,5 +51,6 @@ input组件有 inputmode 和 type、comfirm-tye 3个相似的属性,它们的 同时使用 inputmode 和 comfirm-type 时,若设值冲突,键盘右下角按键类型由 comfirm-type 决定。type 属性和 inputmode 属性并不冲突 ## Tips +- html规范中input不仅是输入框,还有radio、checkbox、时间、日期、文件选择功能。但在uni-app规范中,input仅仅是输入框,其type属性代表不同的输入框。其他功能有单独的组件或API:[radio组件](radio-group.md)、[checkbox组件](checkbox-group.md)、[图片选择](../api/choose-image.md)等。 - 从uni-app x 4.0起,App-Android平台 input 点击输入框外的屏幕会自动收起软键盘。 - 从uni-app x 4.0起,App-Android平台 input 的 font-size 默认值统一为 16px。 diff --git a/docs/page.md b/docs/page.md index b342076a..458c695c 100644 --- a/docs/page.md +++ b/docs/page.md @@ -1,6 +1,117 @@ # 页面简介 -本文未包括页面生命周期的详细介绍,需另见 [页面](https://uniapp.dcloud.net.cn/tutorial/page.html) +## 页面简介 + +uni-app x 项目中,页面文件的后缀名`.uvue`文件。 + +每个uvue文件,都是一个符合`Vue SFC规范`的 vue 文件。 + +在 uni-app x 中,后缀名是`.uvue`文件 + +uni-app x 只有 `.uvue`页面,不支持和vue页面并存(因vue是js驱动、webview渲染,uni-app x在app-Android中没有js引擎,app中渲染是原生渲染,无法使用vue页面)。 + +当然某些组件可以通过条件编译同时适配uni-app和uni-app x,所以在uni-app x的项目中,看到某些组件代码也有vue文件,但这些vue文件并不在uni-app x项目中生效。 + +另外uts组件插件的入口文件命名是index.vue。因为uts插件在uni-app和uni-app x中均可使用,所以文件后缀名为vue。\ +但这个vue文件并不是真正的页面,它只是uts组件插件为了尽可能照顾开发者习惯而参考vue规范定义的原生组件入口文件。 + +uni-app x 在app-android上,每个页面都是一个全屏activity,不支持透明。 + +## 页面管理 + +### 新建页面 + +新建页面,默认保存在工程根目录下的`pages`目录下。 + +每次新建页面,均需在`pages.json`中配置`pages`列表;未在`pages.json -> pages` 中注册的页面,在编译阶段会被忽略。pages.json的完整配置参考:[页面配置](./collocation/pagesjson.md)。 + +通过HBuilderX开发 `uni-app` 项目时,在项目上右键“新建页面”,HBuilderX会自动在`pages.json`中完成页面注册,开发更方便。 + +新建页面时,可以选择`是否创建同名目录`。创建目录的意义在于: + +- 如果你的页面较复杂,需要拆分多个附属的uts、css、组件等文件,则使用目录归纳比较合适。 +- 如果只有一个页面文件,大可不必多放一层目录。 + +### 删除页面 + +删除页面时,需做两件工作: + +- 删除`.uvue`文件 +- 删除`pages.json -> pages`列表项中的配置 (如使用HBuilderX删除页面,会在状态栏提醒删除pages.json对应内容,点击后会打开pages.json并定位到相关配置项) + +### 页面改名 + +操作和删除页面同理,依次修改文件和 `pages.json`。 + +### pages.json + +pages.json是工程的页面管理配置文件,包括:页面路由注册、页面style参数配置(原生标题栏、下拉刷新...)、首页tabbar等众多功能。 + +其篇幅较长,另见 [pages.json](./collocation/pagesjson.md) + +### 设置应用首页@startpage + +`pages.json -> pages`配置项中的第一个页面,作为当前工程的首页(启动页)。 + +```json +{ + "pages": [ + { + "path": "pages/index/index", //名字叫不叫index无所谓,位置在第一个,就是首页 + "style": { + "navigationBarTitleText": "首页" //页面标题 + } + }, + { + "path": "pages/my", + "style": { + "navigationBarTitleText": "我的" + } + }, + ] +} +``` + +## 页面内容构成 + +uvue页面基于 vue 单文件组件规范。一个页面内,有3个根节点标签: + +- 模板区 `