iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue3-HOOKS模块化处理方式
  • 282
分享到

vue3-HOOKS模块化处理方式

2024-04-02 19:04:59 282人浏览 八月长安
摘要

目录vue3模块化处理Vue hooks理解与使用demo源码示意vue3模块化处理 vue3版本的更新,就是能搞更好的重用机制,可以把想要得模块独立出去 eg:显示一个当前时间的工

vue3模块化处理

vue3版本的更新,就是能搞更好的重用机制,可以把想要得模块独立出去

eg:显示一个当前时间的工能,在多个页面需要调用的时候不用重复的调用

可以在src目录下,新建一个文件夹hooks(所有抽离出来的功能模块都可以放到这个文件夹里),

然后再新建一个文件useNowTime.js,这里使用use开头是一个使用习惯,代表是一个抽离出来的模块

import { ref } from "vue";
const nowTime = ref("00:00:00");
const getNowTime = () => {
    const now = new Date();
    const hour = now.getHours() < 10 ? "0" + now.getHours() : now.getHours();
    const minu =
        now.getMinutes() < 10 ? "0" + now.getMinutes() : now.getMinutes();
    const sec =
        now.getSeconds() < 10 ? "0" + now.getSeconds() : now.getSeconds();
    nowTime.value = hour + ":" + minu + ":" + sec;
    setTimeout(getNowTime, 1000);
};
export { nowTime, getNowTime }

注意:需要将定义的变量nowTime和方法getNowTime通过export导出

  • 使用的时候跟在setup中定义的变量和方法一样使用
  • 使用模块化封装一个远程调用接口的组件

建立useURLAxiOS.js文件

在文件中定义远程加载需要的 变量和axios请求

import {ref} from 'vue'
import axios from 'axios';
function usURLAxios(url) {
    const result = ref(null)
    const loading = ref(true)
    const loaded =ref(false)
    const error =ref(null)
    axios.get(url).then((res)=>{
        loading.value = false
        loaded.value = true
        result.value = res.data
    }).catch(e=>{
        error.value = e
        loading.value = false
    })
    return {
        result,
        loading,
        loaded,
        error
    }
}
export default usURLAxios

使用时

新增一个.vue文件

<template>
  <div>
    <button @click="getImg">随机展示图片</button>
    <div v-if="thisloading">Loading.....</div>
    <img v-if="thisloaded" :src="thisresult.message" />
    <div></div>
  </div>
</template>
<script>
import { Reactive, toRefs } from "vue";
import useUrlAxios from "../hooks/useURLAxios";
export default {
  setup() {
    const data = reactive({
      thisresult: null,
      thisloading: true,
      thisloaded: false,
      getImg: () => {
        const { result, loading, loaded } = useUrlAxios(
          "https://dog.ceo/api/breeds/image/random"
        );
        data.thisresult = result;
        data.thisloading = loading;
        data.thisloaded = loaded;
        console.log(
          22222,
          data.thisresult,
          data.thisloading,
          data.thisloaded,
          result,
          loaded,
          loading
        );
      },
    });
    const refData = toRefs(data);
    return { ...refData };
  },
};
</script>
<style lang="sCSS" scoped>
</style>

vue hooks理解与使用

vue的hooks和mixins功能相似,但又比mixins具有以下几个优势:

  • 允许hooks间相互传递值
  • 组件之间重用状态逻辑
  • 明确指出逻辑来自哪里

demo源码示意

hook1:

import { useData, useMounted } from 'vue-hooks';
 
export function windowwidth() {
  const data = useData({
    width: 0
  })
 
  useMounted(() => {
    data.width = window.innerWidth
  })
 
  // this is something we can consume with the other hook
  return {
    data
  }
}
import { useData, useMounted } from 'vue-hooks';
 
export function windowwidth() {
  const data = useData({
    width: 0
  })
 
  useMounted(() => {
    data.width = window.innerWidth
  })
 
  // this is something we can consume with the other hook
  return {
    data
  }
}

hook2:

// the data comes from the other hook
export function loGolettering(data) {
  useMounted(function () {
    // this is the width that we stored in data from the previous hook
    if (data.data.width > 1200) {
      // we can use refs if they are called in the useMounted hook
      const logoname = this.$refs.logoname;
      Splitting({ target: logoname, by: "chars" });
 
      TweenMax.staggerFromTo(".char", 5,
        {
          opacity: 0,
          transfORMOrigin: "50% 50% -30px",
          cycle: {
            color: ["red", "purple", "teal"],
            rotationY(i) {
              return i * 50
            }
          }
        },
        ...

在组件内部,我们可以将 hook1 作为参数传递给 hook2:

<script>
import { logolettering } from "./../hooks/logolettering.js";
import { windowwidth } from "./../hooks/windowwidth.js";
 
export default {
  hooks() {
    logolettering(windowwidth());
  }
};
</script>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vue3-HOOKS模块化处理方式

本文链接: https://www.lsjlt.com/news/146317.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue3-HOOKS模块化处理方式
    目录vue3模块化处理vue hooks理解与使用demo源码示意vue3模块化处理 vue3版本的更新,就是能搞更好的重用机制,可以把想要得模块独立出去 eg:显示一个当前时间的工...
    99+
    2024-04-02
  • Vue3 Hooks 模块化抽离示例详解
    目录正文todoList demo目录结构TodoList.vue代码如下定义的类型文件逻辑抽离正文 Vue3中的Hooks 其实就是业务逻辑的抽离,跟Vue2中mixin 本质上是...
    99+
    2024-04-02
  • vue3自定义hooks/可组合函数方式
    目录自定义hooks/可组合函数1.mixins方式的痛点2.传统mixins方式示例3.自定义hooks方式示例vue3(hooks)自定义hooks/可组合函数 vue3 com...
    99+
    2024-04-02
  • Node.js使用方式及模块化的方法
    本篇内容介绍了“Node.js使用方式及模块化的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是Node.js Node.js 是一...
    99+
    2023-06-29
  • JavaScript模块化:模块化的思维方式,重塑你的编程世界
    封装性:模块将数据和相关函数封装在一个单元中,对外提供明确的接口,隐藏内部实现细节。 高内聚性:模块内部的元素高度相关,形成一个紧密联系的单元。 低耦合性:模块之间尽量减少依赖关系,保持松散的连接,提高代码的灵活性。 模块化的优势 模...
    99+
    2024-04-02
  • JavaScript 代理模式:通往模块化编程的捷径
    ...
    99+
    2024-04-02
  • Python文件处理、os模块、glob模块
    目录一、文件基本的操作1、open() 打开文件2、read() 读文件3、write()写文件:4、with open()方法二、文件的打开模式1、文件r打开模式1、读文本2、读字...
    99+
    2024-04-02
  • Python模块化和第三方模块安装的方法
    这篇文章主要介绍了Python模块化和第三方模块安装的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python模块化和第三方模块安装的方法文章都会有所收获,下面我们一起来看看吧。模块化编程1.什么叫模块(...
    99+
    2023-06-30
  • 小程序中怎么进行模块化处理
    这篇文章主要介绍了小程序中怎么进行模块化处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ES6和commonJS的选择首先在微信小程序中不论是 ES6 或者是 common...
    99+
    2023-06-22
  • JavaScript模块化揭秘:深入探究模块化背后原理
    模块化概述 模块化是一种将代码组织成独立单元的方法。这可以帮助你提高代码的可读性、可维护性和可重用性。在JavaScript中,模块化通常是通过使用模块化系统来实现的。 模块化系统 模块化系统是一种允许你将代码组织成模块的工具。这些模块...
    99+
    2024-02-26
    JavaScript、模块化、封装、重用、性能
  • Python文件处理方法、os模块和glob模块怎么使用
    这篇“Python文件处理方法、os模块和glob模块怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python文件...
    99+
    2023-06-30
  • Python文件处理方法、os模块和glob模块如何使用
    这篇文章主要讲解了“Python文件处理方法、os模块和glob模块如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python文件处理方法、os模块和glob模块如何使用”吧!一、文...
    99+
    2023-07-06
  • 如何理解JavaScript模块化
    目录1. 浏览器支持2. export 导出模块3. import 导入模块4. 创建模块对象5. export import 中转站6. 动态加载模块1. 浏览器支持 使用Java...
    99+
    2024-04-02
  • 如何理解Node.js模块化
    本篇内容主要讲解“如何理解Node.js模块化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Node.js模块化”吧!正文在Node.js中,内置了两个...
    99+
    2024-04-02
  • JavaScript 模块化如何理解
    这期内容当中小编将会给大家带来有关JavaScript 模块化如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:1.概念将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并...
    99+
    2023-06-22
  • python日志处理模块
    1 日志级别 日志级别level 数值 CRITICAL 50 ERROR 40 WARNING 30 ,默认日志级别 INFO 20 DEBUG 10 NOTSET 0,表示不设置 日志级别是指...
    99+
    2023-01-31
    模块 日志 python
  • 如何进行CSS预处理语言的模块化
    这篇文章给大家介绍如何进行CSS预处理语言的模块化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。编写css是前端工作中,一项普通而又频繁的劳动,由于css并不是一门语言,所以在程序设计...
    99+
    2024-04-02
  • 如何理解React受控组件Hooks方式
    这篇文章主要介绍“如何理解React受控组件Hooks方式”,在日常操作中,相信很多人在如何理解React受控组件Hooks方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • C++ 函数异常与设计模式:模式化异常处理
    在 c++++ 中,异常处理设计模式是创建可重用且可靠代码的有效方法,其中包括异常处理模式。本文探讨了以下常用模式:异常安全:确保异常不会破坏函数内部状态。访问器保护:确保访问成员变量时...
    99+
    2024-05-03
    c++ 异常
  • pythoncommands模块的适用方式
    目录commands模块的适用1、 commands.getstatusoutput(cmd)返回一个元组(status,output)2、返回ls -ld file执行的结果3、判...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作