首页 > 其他分享 >Vuejs装饰器风格开发教程(前言、模板项目、类属性、类方法)

Vuejs装饰器风格开发教程(前言、模板项目、类属性、类方法)

时间:2023-08-14 18:33:51浏览次数:65  
标签:教程 Vue slogan Vuejs Component facing vue 模板 decorator

教程前言

AOP 切面编程是面向对象开发中的一种经典的编程范式,旨在将横切关注点与核心业务逻辑分离来提高代码的模块性和可维护性。如:日志记录、事务管理等就属于横切关注点。在为 H5 提供 Android 原生支持时,曾将插件模块改造为 AOP 模式,实现插件的自动注册。Java 领域的 SpringBoot 就是典型的切面编程引领者。

Vuejs 的开发风格其实是多样的,按 API 可分为:options apicomposition api,按 UI 开发可分为:templatejsx/tsx,渲染函数。除此之外 Vuejs 还提供了各种语法糖,就比如说为 setup() 函数提供了 setup 语法糖。

Vuejs 开发者中有一小众的人群就习惯使用装饰器风格做开发,也就是 AOP 切面编程模式,主要利用的 ECMAScript 提供了 class 和 仍处在 实验阶段的 decorator,目前 Vuejs 社区不再建议在 Vue 3 中使用基于类的组件,仍想使用类组件推荐使用 vue-facing-decorator

如果你是从 Java (后端、安卓)转向的 Vuejs 还是 Angular (前端)转向的 Vuejs,对于已经习惯 AOP 切面编程的小伙伴来说,还是可以尝试这种装饰器风格的开发的。对于觉得 “本末倒置的” 的小伙伴我想说:存在即合理。

模板项目

仅两步快速创建项目:

推荐使用 1024Code 智能协同IDE进行教程学习,1024Code 是一个免费的、协作式的、基于浏览器的 IDE 环境,支持 10 多种编程语言,支持 SpringVueReact 等框架,还支持很多图形库,并集成了 AI 编程助手、编程社区。拥有无需安装环境,任何设备开箱即用的特性,是刚入门的程序员学习编程,与朋友一起创造作品,分享交流的最佳选择。

1、 搜索社区代码空间:【项目模板】Vue3+Vite3+Ts4;

image-20230804104713229

2、点击进入项目后 Fork 此空间;

image-20230804104820088

安装 vue-facing-decorator

使用任意包管理器安装 vue-facing-decorator

npm install --save vue-facing-decorator

^注: 在1024Code 右侧切换到 Shell 页签可执行安装命令。

tsconfig.json 中启用装饰器

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}

定义和使用类组件

在默认的 HelloWorld 组件中,提供了一个 msg 和一个响应式的自增 count 属性,接着就尝试使用 vue-facing-decorator 改造它。在 vue-facing-decorator禁止 使用 composition api <script setup lang="ts">

1、首先移除 setup 语法糖,再申明 HelloWorldComponent 类组件,继承自 Vue 并增加 @Component 装饰器

import { Component, Vue } from 'vue-facing-decorator';

@Component
class HelloWorldComponent extends Vue {}
export default HelloWorldComponent;

2、响应式的 count 属性使用类属性来描述,同样也是响应式的:

import { Component, Vue } from 'vue-facing-decorator';

@Component
class HelloWorldComponent extends Vue {
  count: number = 0;
}
export default HelloWorldComponent;

3、组件属性 msg 则需要在类属性的基础上使用 @Prop 装饰描述:

import { Component, Prop, Vue } from 'vue-facing-decorator';

@Component
class HelloWorldComponent extends Vue {
  @Prop
  msg: string;
}
export default HelloWorldComponent;

^注: App.vue 无需任何调整整个模板项目就再次运行起来了。

类属性

在类组件中,vfd 项目会分析类属性来构建 Vuejs 组件中 data 函数的返回值,同时这些类属性也是可响应的。

<script lang="ts">
import {Component, Vue} from 'vue-facing-decorator';
@Component({
  name: 'App',
})
export default class App extends Vue {
  // 定义类属性
  slogan = 'HelloWorld';
}
</script>

<template>
  {{slogan}}
</template>

类方法

在类组件中,vfd 项目会分析类方法来构建 Vuejs 组件中 methods 选项。如:在 App 组件中定义 caseSwitching 函数,用来切换 slogan 大小写。

<script lang="ts">
import {Component, Vue} from 'vue-facing-decorator';
@Component({
  name: 'App',
})
export default class App extends Vue {
  // 定义类属性
  slogan = 'hello world';
  isLowerCase = true;
  
  // 定义类方法
  caseSwitching() {
    if(this.isLowerCase) {
      this.slogan = this.slogan.toUpperCase();
      this.isLowerCase = false;
    }else{
      this.slogan = this.slogan.toLowerCase()
      this.isLowerCase = true;
    }
  }
}
</script>
<template>
  {{slogan}}
  <button @click="caseSwitching">大小写切换</button>
</template>

标签:教程,Vue,slogan,Vuejs,Component,facing,vue,模板,decorator
From: https://blog.51cto.com/u_11711012/7079937

相关文章

  • Anaconda使用教程
    参考:https://zhuanlan.zhihu.com/p/348120084下载Anaconda下载地址https://www.anaconda.com/https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Windows-x86_64.exe双击安装,一直下一步等待安装完成,添加环境变量使用以下语句创建一个新的环境变量,新的环境变量......
  • 优维低代码实践:自定义模板
    优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。优维低代码实践连载第14期《自定义模板》▽一、概述构件是我们的页面最基......
  • nvim配置教程
    目录结构首先init.lua是整个配置的入口文件,负责引用所有其他的模块,基本上想要打开或关闭某个插件只要在这里修改一行代码即可。basic.lua:基础配置,是对默认配置的一个重置。colorscheme.lua:我们安装的主题皮肤配置,在这里切换主题。keybindings.lua:快捷键的设置,所有插件的......
  • P3374 【模板】树状数组
    \(P3374\)【模板】树状数组1#include<bits/stdc++.h>usingnamespacestd;constintN=5*1e5+10;intn,m;inta[N];//树状数组模板inttr[N];intlowbit(intx){returnx&-x;}voidadd(intx,intc){for(inti=x;i<N;i+=lo......
  • 模板设计模式
    一.意图模板方法模式 (TemplateMethod)是一种行为设计模式,它在超类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。,没有关联关系。因此,在模板方法模式的类结构......
  • 汪文君->多线程教程
    汪文君-多线程教程第一阶段多线程介绍多线程编程入门多线程创建与启动以及线程状态Runnable接口详细详解线程优先级以及守护线程详解线程同步线程间通讯线程组详解自运行对象详解线程异常回调线程池详解等待线程完成任务阻塞io和多线程详解如何优雅的结束线程自定......
  • 无涯教程-Perl - scalar函数
    描述此函数强制EXPR的判断在标量context中进行,即使它通常在列表context中也可以使用。语法以下是此函数的简单语法-scalarEXPR返回值此函数返回标量。例以下是显示其基本用法的示例代码-#!/usr/bin/perl-w@a=(1,2,3,4);@b=(10,20,30,40);@c=(@a,@b)......
  • 软件测试|Python科学计算神器numpy教程(五)
    NumPy的高级索引功能前言NumPy是Python中最受欢迎的科学计算库之一,它提供了丰富的功能来处理和操作数组数据。在本文中,我们将深入了解NumPy的高级索引功能,这些功能允许我们根据特定条件或索引数组来访问和修改数组的元素,为数据科学和数组操作提供了更大的灵活性和控制力。NumP......
  • 软件测试|Python科学计算神器numpy教程(六)
    NumPy的广播机制前言NumPy是Python中最受欢迎的科学计算库之一,它提供了高性能的多维数组对象和丰富的数组操作功能。其中,广播机制是NumPy的重要特性之一,它允许不同形状的数组进行算术运算,提供了灵活而高效的数组操作能力。在本文中,我们将深入探讨NumPy的广播机制,以便更好地理解......
  • SAP Fiori Elements 应用里标准模板 XML Fragment 加载的逻辑和 XMLPreprocessor 的作
    触发时间点是XMLPreprocessor的insertFragment方法:上图的调试器上下文里,我们看到了XMLPreprocessor.js的实现,它是SAPUI5框架中一个重要的文件,它主要负责处理XML视图的预处理工作。对于SAPUI5中的视图创建,可以使用JavaScript、JSON、XML等多种方式。其中,XML......