首页 > 其他分享 >uniapp自动引入Vue3(ref,reactive...)的API、uniapp生命周期和封装hooks

uniapp自动引入Vue3(ref,reactive...)的API、uniapp生命周期和封装hooks

时间:2023-09-27 22:00:12浏览次数:42  
标签:uniapp ... hooks useList uni import Timestamp vite

未自动导入Vue3(ref,reactive...)的API和uniapp生命周期,需要在每个页面把API和uniapp生命周期的代码都重复写一遍

<script setup>
  import { ref, reactive } from "vue"
  import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
  
  // 封装的hooks
  import { useList } from '@/hooks/useList.js'
  const { list, getList } = useList('/user/list','get')
  getList()

  const bool = ref(true)

  onl oad(() => {
    
  })

  onShow(() => {
    
  })
</script>

 

使用自动导入后,不需要在每个页面重复导入,简化的代码如下:

<script setup>
  // 封装的hooks
  const { list, getList } = useList('/user/list','get')
  getList()

  const bool = ref(true)

  onl oad(() => {
    
  })

  onShow(() => {
    
  })
</script>

 

安装 unplugin-auto-import 插件

npm install unplugin-auto-import -D

 

在项目文件 vite.config.js 导入并使用插件

import path from 'path'
import fs from 'fs-extra'
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import AutoImport from 'unplugin-auto-import/vite'


export default defineConfig({
	plugins: [
		uni(),
		copyFile(),
                // 自动导入配置
		AutoImport({
			imports:[
				// 预设
				'vue',
				'uni-app',
				// 自定义预设
				{
					'@/store': ['useStore'],
					'@/store/modules/theme': ['useThemeStore'],
					'@/hooks/useList': ['useList'],
					'@/hooks/useTheme': ['useTheme'],
					'@/hooks/useShare': ['useShare']
				}
			]
		})
	],
	build: {
		terserOptions: {
			compress: {
				// 发布时删除 console
				drop_console: true,
			},
		},
		rollupOptions: {
			output:{ // 输出重构  打包编译后的 文件目录 文件名称 【模块名称.时间戳】
				// 入口文件名
				entryFileNames: `${filePath}[name]${Timestamp}.js`,
				// 块文件名
				chunkFilename: `${filePath}[name]${Timestamp}.js`,
				// 资源文件名 css 图片等等
				assetFileNames: `${filePath}[name]${Timestamp}.[ext]`
			}
		}
	}
})

 

vite.config.js完整代码:

import path from 'path'
import fs from 'fs-extra'
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import AutoImport from 'unplugin-auto-import/vite'

function copyFile() {
	return {
		enforce: 'post',
		async writeBundle() {
			await fs.copy(
				path.join(__dirname, '/static_sub'),
				path.join(__dirname + '/unpackage/', 'dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, '/')
			)
		},
	}
}

let filePath = ''
let Timestamp = ''
//编译环境判断,判断是否H5环境
if (process.env.UNI_PLATFORM === 'h5') {
  filePath = 'assets/'; //打包文件存放文件夹路径
  Timestamp = '.' + new Date().getTime();//时间戳
}

export default defineConfig({
	plugins: [
		uni(),
		copyFile(),
		AutoImport({
			imports:[
				// 预设
				'vue',
				'uni-app',
				// 自定义预设
				{
					'@/store': ['useStore'],
					'@/store/modules/theme': ['useThemeStore'],
					'@/hooks/useList': ['useList'],
					'@/hooks/useTheme': ['useTheme'],
					'@/hooks/useShare': ['useShare']
				}
			]
		})
	],
	build: {
		terserOptions: {
			compress: {
				// 发布时删除 console
				drop_console: true,
			},
		},
		rollupOptions: {
			output:{ // 输出重构  打包编译后的 文件目录 文件名称 【模块名称.时间戳】
				// 入口文件名
				entryFileNames: `${filePath}[name]${Timestamp}.js`,
				// 块文件名
				chunkFilename: `${filePath}[name]${Timestamp}.js`,
				// 资源文件名 css 图片等等
				assetFileNames: `${filePath}[name]${Timestamp}.[ext]`
			}
		}
	}
})

 

标签:uniapp,...,hooks,useList,uni,import,Timestamp,vite
From: https://www.cnblogs.com/Intellectualscholar/p/17733333.html

相关文章

  • 23年9月最新微信小程序 手机号授权 (uniapp+盛派SDK) 帮你踩坑
    一、背景微信小程序手机号授权接口,从23年8月开始实行付费验证。文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getRealtimePhoneNumber.html 新版手机号授权说明如下:自2023年8月28日起【手机号实时验证组件】将需要付费使用。标准单价......
  • uniapp代码 上传发布钉钉小程序 流程
    uniapp代码发行到钉钉平台流程:1.下载hbuilder,打开项目,在setting.json里面运行配置里面配置支付宝小程序开发路径:类似D:/ProgramFiles/小程序开发者工具/小程序开发者工具.exe,然后发行-自定义发行-钉钉小程序,然后  2.会自动打开小程序开发工具,工具下载地址:https://open.di......
  • uniapp项目实践总结(二十四)安卓平台 APP 打包教程
    导语:当你的应用程序开发完成后,在上架安卓应用商店之前,需要进行打包操作,下面简单介绍一下打包方法。目录准备工作配置项目生成证书打包配置准备工作在打包之前,请保证你的uniapp应用程序编译到安卓手机模拟器的App是可以正常运行的,APP打包分为安卓和ios两个平台,下......
  • uniapp微信小程序如何点击复制文字内容?
    uniapp微信小程序点击复制文字内容如果使用微信小程序把uni.换成wx.就可以了下面用的都是是uni的实例uni.setClipboardData是把指定数据按照指定格式放入剪切板中uni.setClipboardData({data:'复制的文字',success:function(res){uni.getC......
  • uniapp项目实践总结(二十三)网页和小程序应用打包教程
    导语:当你的应用程序开发完成后,在发布到互联网之前,需要进行打包操作,包括网页端、小程序端的打包。目录准备工作网页打包小程序打包准备工作在打包之前,请保证你的uniapp应用程序编译到网页、小程序是可以正常运行的。网页打包编写好应用之后,如需打包到web平台,可以选......
  • uniapp项目实践总结(二十二)分包优化和游客模式
    导语:这篇主要介绍应用分包和游客模式相关的内容。目录应用分包游客模式应用分包微信对于小程序的打包压缩后的代码体积是有限制的,网页和APP也可以适用分包功能,因此需要进行分包添加以及分包优化。分包添加在pages.json文件中添加分包的信息。例如:有一个名叫user的分......
  • React Hooks中父组件中调用子组件方法
    import {useState,useImperativeHandle,forwardRef}from 'react';//props子组件中需要接受reflet ChildComp=(props,ref)=>{    //此处注意useImperativeHandle方法的的第一个参数是目标元素的ref引用    useImperativeHandle(ref,()=>({      ......
  • uniapp 小程序生成erweima
    下载uqrcode.js文件https://download.csdn.net/download/weixin_46162592/88215531?spm=1001.2014.3001.5503下载好后,将文件夹放置common文件中,这个放置位置看你们自己需求,一般是common里面。importuQRCodefrom'@/common/uqrcode.js'html<template><view><canvas......
  • IntelliJ IDEA中执行@Test单元测试时报错Class not found: "..."终极办法
    之前也出现过在编译时找不到测试类的问题,但之前的那篇博文,并不是终极办法IntelliJIDEA中执行@Test单元测试时报错Classnotfound:"..."Emptytestsuite 问题:出现类似问题,普遍时同然就报错了,原因是使用IDEA,从别人的Git上拉取代码后,别人把一些idea的配置文件也传上了,到时更新......
  • uniapp,微信小程序确认收货组件的使用
    直接上代码//拉起确认收货组件if(wx.openBusinessView){wx.openBusinessView({businessType:'weappOrderConfirm',extraData:{//merchant_id:'1230000109',//用户交易商户号//merchant_trade_no:"1234323JKHDFE1243252",//商户......