Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
程序yang
unidocs-zh
提交
0ec70c73
U
unidocs-zh
项目概览
程序yang
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
0ec70c73
编写于
11月 19, 2022
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新vue3入门
上级
c4dd5833
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
79 addition
and
38 deletion
+79
-38
docs/tutorial/vue3-basics.md
docs/tutorial/vue3-basics.md
+79
-38
未找到文件。
docs/tutorial/vue3-basics.md
浏览文件 @
0ec70c73
...
...
@@ -19,46 +19,39 @@ Vue (读音 /vjuː/,类似于 `view`) 是一套用于构建用户界面的**
本文大部分内容来源于
[
vue3中文文档官网
](
https://v3.cn.vuejs.org/guide/introduction.html#vue-js-%E6%98%AF%E4%BB%80%E4%B9%88
)
,但结合
`uni-app`
做了部分调整,以更有利于开发者快速上手。感谢Vue团队!
**vue3的优势:**
-
响应式系统提升
-
虚拟DOM重写
-
更快,性能比Vue2快1.2~2倍(diff方法优化、静态提升、时间侦听器缓存、
[
ssr渲染
](
https://uniapp.dcloud.io/tutorial/ssr
)
)
-
更小,按需编译,体积比Vue2更小
-
组合API,加强API设计一致性,实现逻辑模块化和重用
-
加强TypeScript支持
-
暴露了自定义渲染API
-
提高自身可维护性
## vue相比传统js的开发优势
## vue的优势
在传统开发中,用原生的 JavaScript DOM 操作函数对 DOM 进行频繁操作的时候,浏览器要不停的渲染新的 DOM 树,导致页面看起来非常卡顿。
vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和 DOM ,这样大大加快了访问速度和提升用户体验。
**vue的优势:**
-
轻量级:几十K的体积
-
界面与逻辑分离,与html接近的概念和写法
-
响应式双向数据绑定,更新数据时无需再写代码更新界面,反之亦然。
-
组件化,可方便协作。方便造轮子,也就自然有大量轮子可用
-
虚拟DOM,比大多数手写操作dom的代码都更高效
-
易于上手,设计直观、文档丰富
**vue的优势:**
**vue
3相比vue2
的优势:**
-
轻量级渐进式框架
-
视图、数据和结构的分离
-
响应式双向数据绑定
-
组件化
-
虚拟DOM
-
运行速度快,易于上手
-
便于与第三方库或既有项目整合
-
响应式系统提升
-
更快,性能比Vue2快1.2~2倍(diff方法优化、静态提升、时间侦听器缓存、
[
ssr渲染
](
https://uniapp.dcloud.io/tutorial/ssr
)
)
-
更小,按需编译,体积比Vue2更小
-
组合式API,提供更灵活的写法,也易于吸引react开发者
-
加强TypeScript支持
## 白话uni-app
如果你了解html、js,那么本章节将让你快速了解uni-app和它们的差异。
### 文件类型变化
-
以前是.html文件,开发也是html,运行也是html。
-
现在
是.vue文件,开发是vue,经过编译后,运行时已经变成了js文件
。
-
现在
每个页面是一个.vue文件,开发是vue,但经过编译后,运行时已经变成了js文件(如果是uts则可能编译成kotlin、swift)
。
-
现代前端开发,很少直接使用HTML,基本都是开发、编译、运行。所以
`uni-app`
有编译器、运行时的概念。
### 文件内代码架构的变化
-
以前一个
`html`
大节点,里面有
`script`
和
`style`
节点;
...
...
@@ -80,7 +73,7 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
```
-
现在
`template`
是一级节点,用于写tag组件,
`script`
和
`style`
是并列的一级节点,也就是有3个一级节点。这个叫
[
vue单文件组件规范sfc
](
https://cn.vuejs.org/v2/guide/single-file-components.html
)
。
-
现在
`template`
是一级节点,用于写tag组件,
`script`
和
`style`
是并列的一级节点,也就是有3个一级节点。这个叫
[
vue单文件组件规范sfc
](
vue3-components.md
)
。
```
html
<template>
...
...
@@ -110,6 +103,7 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
-
现在是es6的写法,
`import`
引入外部的js模块(注意不是文件)或css;
**js要require进来,变成了对象**
。
在hello uni-app的
`common`
目录有一个工具类
`util.js`
,可以在hello uni-app中搜索这个例子查看。hello uni-app示例代码可从
[
github
](
https://github.com/dcloudio/hello-uniapp
)
获取。
...
...
@@ -120,7 +114,7 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
</script>
```
而在这个
`util.js`
里,要把之前的
`function`
封装为
对象的方法
而在这个
`util.js`
里,要把之前的
`function`
封装为
模块(module)的方法并导出(exports)。只有被导出的方法和属性才能被外部调用,不导出的属于模块内部函数和变量。这是es6的模块规范。
```
js
function
formatTime
(
time
)
{
...
...
@@ -132,7 +126,7 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
```
当然还有一些高级的用法
当然还有一些高级的用法
,比如在导出时可以重命名
```
js
// 直接使用js模块的属性。在hello uni-app有示例
...
...
@@ -154,7 +148,7 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
```
**另外,vue支持组件导入,可以更方便的封装一个包括界面、js、样式的库**
。
[
详见
](
/vue
-components.md
)
**另外,vue支持组件导入,可以更方便的封装一个包括界面、js、样式的库**
。
[
详见
](
vue3
-components.md
)
### 组件/标签的变化
...
...
@@ -170,6 +164,56 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
### js的变化
-
以前script里随便写js变量和function
```
html
<script
type=
"text/javascript"
>
var
a
;
function
funa
()
{
}
</script>
```
-
现在script里默认有export default,在里面写data、事件和method
* 写在 `export default {` 前面的变量,是页面内部的全局变量,可以在各种方法里使用。
* `export default {}` 里是一个大json,data、生命周期、method都需要用逗号分隔。
* data -> return 里,编写可以绑定在页面template模板里的变量,页面组件的text里绑定data数据使用{{}},比如下面例子中的`textvalue`。而下面的globalvar就不能在模板里绑定使用。在HBuilderX中,敲vdata代码块,可以快捷生成data的代码结构。
* 页面的生命周期/事件,如下面的`onLoad`,和data平级。
* 模板里要调用的方法,都需要写在`methods`下面。每个方法也需要用逗号分隔。不需要再使用`function`声明,只要写在`methods`下的函数,都可以在template里调用。同样,HBuilderX里敲`vmethods`代码块,也可以生成相应结构。
```
html
<template>
<view>
<text>
{{textvalue}}
</text>
<!-- 这里演示了组件值的绑定 -->
<button
:type=
"buttontype"
@
click=
"changetextvalue()"
>
修改为789
</button>
<!-- 这里演示了属性和事件的绑定 -->
</view>
</template>
<script>
var
globalvar
=
1
function
globalfun
(){}
export
default
{
data
()
{
return
{
textvalue
:
"
123
"
,
buttontype
:
"
primary
"
};
},
onLoad
()
{
globalvar
=
2
globalfun
()
this
.
textvalue
=
"
456
"
//这里修改textvalue的值
},
methods
:
{
changetextvalue
()
{
this
.
textvalue
=
"
789
"
//这里修改textvalue的值
}
}
}
</script>
```
在上述例子中,传统写法的定义的变量globalvar和函数globalfun,可以在
`export default { }`
里使用,但无法在模板里直接绑定和调用。模板里只能绑定data里的变量、调用methods里的方法。
-
以前的 DOM 操作,如果你想改变某个 DOM 元素的显示内容,比如一个view的显示文字:给view设id,然后js里通过选择器获取 DOM 元素,进一步通过js进行赋值操作,修改 DOM 元素的属性或值。
...
...
@@ -226,9 +270,10 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
```
-
以前在是html的tag里用一个属性
`onclick`
来写点击事件
-
现在是使用
`@click`
(其实是
`v-on:click`
的缩写,在uni-app里基本都使用缩写)调用methods里的方法。
## 在 uni-app 中使用差异
## 在 uni-app 中使用vue的差异
`uni-app`
在发布到H5时支持所有vue的语法;发布到App和小程序时,由于平台限制,无法实现全部vue语法,但
`uni-app`
仍是对vue语法支持度最高的跨端框架。
...
...
@@ -241,13 +286,11 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
[
uni-app 项目支持 vue 3.0介绍,及升级指南
](
https://ask.dcloud.net.cn/article/37834
)
`uni-app`
项目对 vue 3.0 的支持版本情况如下:
`HBuilderX 3.2.5`
新增在App平台支持 vue 3.0,至此
`uni-app`
项目对 vue 3.0 的支持情况如下:
-
H5/PC Web平台支持,编译器升级为
`vite`
。
-
小程序平台:
`HBuilderX 3.3.3+`
支持
`vite`
。
-
App 平台:支持,编译器升级为
`vite`
,
`HBuilderX 3.3.13`
起
`nvue`
编译器升级为
`vite`
。
-
Web平台:支持。
-
小程序平台:
`HBuilderX 3.3.3+`
编译器改为
`vite`
,之前版本的编译器为
`webpack`
。
-
App 平台:
`uni-app 3.2.5+`
支持。
`HBuilderX 3.3.13`
起
`nvue`
编译器升级为
`vite`
。
**注意事项**
...
...
@@ -256,8 +299,6 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
-
目前
`HBuilderX 3.2`
起已预置,之前的版本只能使用cli方式。
## 模板语法
`Vue.js`
使用了基于
`HTML`
的模板语法,允许开发者声明式地将
`DOM`
绑定至底层组件实例的数据。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录