uniapp+vue3+ts+uview-plus搭建项目步骤

news2024/11/16 17:42:52

创建项目

使用Vue3/Vite版,创建以 typescript 开发的工程

下载仓库 · DCloud/uni-preset-vue - Gitee.com

node版本:v16.18.0

npm版本: v8.19.2

依赖下载

解压之后,在vscode打开

 

通过终端运行 npm 命令下载依赖:npm install

下载完成之后,会多出来一个node_modules文件夹

tsconfig.json文件

如遇到tsconfig.json有报错提示:

Option 'importsNotUsedAsValues' is deprecated and will stop functioning in TypeScript 5.5. Specify compilerOption '"ignoreDeprecations": "5.0"' to silence this error.Use 'verbatimModuleSyntax' instead.ts

译文:警告消息与 TypeScript 编译器选项的弃用有关importsNotUsedAsValues,并建议改用该verbatimModuleSyntax选项。要在 TypeScript 5.5 之前使错误消息静音,您可以添加ignoreDeprecations": "5.0"到编译器选项;

//在tsconfig.json文件中"compilerOptions"配置项内添加"ignoreDeprecations": "5.0"
  "compilerOptions": {
    "ignoreDeprecations": "5.0"
  },

基本配置

打开 vite.config.ts 配置一下 alias

// vits.config.ts
import { defineConfig } from "vite"
import uni from "@dcloudio/vite-plugin-uni"
import { resolve } from "path"

export default defineConfig({
  resolve: {
    alias: {
      "@": resolve(__dirname, "src"),
    },
    extensions: ['.mjs', '.js', '.jsx', '.json', '.vue'],
  },
  plugins: [
    uni(),
  ],
})

 alias 配置中的 path 和 __dirname 会报红,在终端安装一下 @types/node即可

npm i -D @types/node

安装相关类型声明文件(看个人需要)

微信小程序 API 的 TypeScript 类型定义文件

GitHub - wechat-miniprogram/api-typings: Type definitions for APIs of Wechat Mini Program in TypeScript

npm i -D @types/wechat-miniprogram

uni-helper相关类型文件

uni-app-types | Uni Helper (uni-helper.js.org)

npm i -D @uni-helper/uni-app-types //提供 uni-app 组件类型
npm i -D @uni-helper/uni-cloud-types //提供 uni-cloud 组件类型
npm i -D @uni-helper/uni-ui-types //提供 uni-ui 组件类型

 配置tsconfig.json

{
  "extends": "@vue/tsconfig/tsconfig.json",
  "compilerOptions": {
    "ignoreDeprecations": "5.0",
    "sourceMap": true,
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    },
    "lib": ["esnext", "dom"],
    "types": [
      // "miniprogram-api-typings", // 原生微信小程序类型
      "@dcloudio/types", // uni-app API 类型
      "@uni-helper/uni-app-types", // uni-app 组件类型
    ]
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

安装unplugin-auto-import自动导入插件

GitHub - unplugin/unplugin-auto-import: Auto import APIs on-demand for Vite, Webpack and Rollup

npm i -D unplugin-auto-import

在不使用自动导入的情况下,我们每使用到一个vue或者uniapp的方法的时候,就需要import一下。 

// 不使用自动导入的用法
<script lang="ts" setup>
import { ref } form 'vue'
import { onLoad } from '@dcloudio/uni-app'

const name = ref('')

onLoad(() => {
	console.log(name.value)
})
</script>

// 使用自动导入的用法
<script lang="ts" setup>
const name = ref('')

onLoad(() => {
	console.log(name.value)
})
</script>

项目根目录创建 typings 目录,然后配置 vite.config.ts

import { defineConfig } from "vite";
import uni from "@dcloudio/vite-plugin-uni";
// 加上下面这一行
import AutoImport from 'unplugin-auto-import/vite'

// https://vitejs.dev/config/
import { resolve } from "path"
// https://vitejs.dev/config/
export default defineConfig({
  base: "/couponPromotion",
  plugins: [
    uni(),
    // ---- 配置自动引入 ----
    AutoImport({
      include: [
        /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
        /\.vue$/,
        /\.vue\?vue/, // .vue
        /\.md$/, // .md
      ],
      imports: ['vue', 'uni-app'],
      dts: 'typings/auto-imports.d.ts',
    })
  ],
})

在 tsconfig.json 中添加如下配置

{
  "include": [
    "src/**/*.ts",
    "src/**/*.d.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    // 加上下面两项
    "typings/**/*.ts",
    "typings/**/*.d.ts"
  ],
}

当我们运行项目后,在 typings 目录中自动生成了一个 auto-imports.d.ts 文件

 

如果打开该文件之后发现里面的 createApp 报红,在 tsconfig.json 文件compilerOptions 选项中加入 "skipLibCheck": true

  "compilerOptions": {
    "skipLibCheck": true,
  },

建议关闭项目,然后重新打开项目,不然 .vue文件中可能还是会标红

 

安装uview-plus

注意: 此安装方式必须要按照npm方式安装的配置中的说明配置了才可用,且项目名称不能有中文字符。

// 安装
npm install uview-plus
npm install dayjs
npm install clipboard

 uview-plus依赖SCSS,所以必须要安装此插件,否则无法正常运行

// 安装sass
npm i sass -D

// 安装sass-loader,注意需要版本10,否则可能会导致vue与sass的兼容问题而报错
npm i sass-loader@10 -D

引入uview-plus主JS库

在项目src目录中的main.js中,引入并使用uview-plus的JS库

注意:这两行要放在const app = createSSRApp(App)之后。

import { createSSRApp } from "vue";
import uviewPlus from 'uview-plus'


import App from "./App.vue";
export function createApp() {
  const app = createSSRApp(App);
  app.use(uviewPlus);
  return {
    app,
  };
}

 引入uview-plus的全局SCSS主题文件

 在项目根目录的uni.scss中引入此文件

/* uni.scss */
@import 'uview-plus/theme.scss';

 引入uview-plus基础样式

 App.vue中首行的位置引入,注意给style标签加入lang="scss"属性

// App.vue
<style lang="scss">
	/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
	@import "uview-plus/index.scss";
</style>

配置easycom组件模式

需要在项目src目录的pages.json中进行 

温馨提示:

uni-app为了调试性能的原因,修改easycom规则不会实时生效,配置完后,您需要重启HX或者重新编译项目才能正常使用uview-plus的功能。

请确保您的pages.json中只有一个easycom字段,否则请自行合并多个引入规则。

// pages.json
{
	"easycom": {
		// 注意一定要放在custom里,否则无效,https://ask.dcloud.net.cn/question/131175
		"custom": {
			"^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
			"^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
	        "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"
		}
	},
	
	// 此为本身已有的内容
	"pages": [
		// ......
	]
}

修改env.d.ts文件

注意:

配置完后,可以发现在mian.ts中引入uview-plus时会提示ts报错:无法找到模块“uview-plus”的声明文件

/// <reference types="vite/client" />

declare module '*.vue' {
  import { DefineComponent } from 'vue'
  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
  const component: DefineComponent<{}, {}, any>
  export default component
}

declare module "uview-plus";

安装uni-ui组件库

uni-app官网 (dcloud.net.cn)

npm i @dcloudio/uni-ui   或   yarn add @dcloudio/uni-ui

配置自动导入组件

// pages.json
{
	"easycom": {
		//是否开启自动导入
		"autoscan": true,
		"custom": {
			"^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
			"^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
	    "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue",
			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" // uni-ui 规则
		}
	},
	"pages": [],
}

安装类型声明文件

npm i -D @uni-helper/uni-ui-types

配置类型声明文件

// tsconfig.json
{
  "compilerOptions": {
    "types": [
      "@dcloudio/types",
      "@uni-helper/uni-app-types",
      "@uni-helper/uni-ui-types" // uni-ui组件类型
    ]
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1078117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1. Windows平台下如何编译C++版本的Redis库hiredis

Redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支持push/pop、add/remove及取交集并…

Java中的抽象类和接口(Abstract Class and Interface)的区别

在Java面向对象编程中&#xff0c;总会用到接口和抽象类&#xff0c;他们都是对事物的一种抽象&#xff0c;有一些共同点但是也有很多区别。 接口Interface 在Java中接口需要用interface关键字定义&#xff0c;他是对一种行为的抽象&#xff0c;是一种约定的协议&#xff0c;…

微信小程序通过 movable-area 做一个与vuedraggable相似的上下拖动排序控件

因为只是做个小案例 我就直接代码写page页面里了 其实很简单 组件稍微改一下就好了 wxss /* 设置movable-area的宽度 */ .area{width: 100%; }/* a b c 每条元素的样式 */ movable-view {width: 100%;background-color: red;height: 40px;line-height: 40px;color: #FFFFFF;tex…

C语言进阶第五课-----------字符函数和字符串函数

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

库存管理方法有哪些?

本文将为大家讲解&#xff1a;库存管理方法有哪些&#xff1f; 库存管理是企业运营中的核心环节&#xff0c;它涉及到货物的采购、存储、销售和配送。有效的库存管理可以确保企业有足够的货物满足客户的需求&#xff0c;同时避免库存积压和浪费。为了达到这个目标&#xff0c;…

免费开源的非标项目型制造BOM一键导入方案介绍

非标项目型制造&#xff0c;每一个订单都会引入很多新料号、新BoM、新工艺路线。实施ERP/MES系统&#xff0c;实现生产管理数字化&#xff0c;第一步就是要导入这些料号、BoM和工艺。项目型制造&#xff0c;大多数订单只生产一次。但在ERP/MES系统中&#xff0c;订单的料号、Bo…

软件测试之概念篇2(瀑布模型、螺旋模型、增量模型和迭代模型、敏捷模型,V模型、W模型)

目录 开发模型 &#xff08;1&#xff09;瀑布模型 &#xff08;2&#xff09;螺旋模型 &#xff08;3&#xff09;增量模型和迭代模型 &#xff08;4&#xff09;敏捷模型 &#xff08;5&#xff09;测试模型&#xff08;V模型、W模型&#xff09; V模型 W模型 开发模型…

计算机等级考试—信息安全三级真题十

目录 一、单选题 二、填空题 三、综合题 一、单选题

企业文件、图纸加密软件哪个好——推荐【天锐绿盾加密软件】

天锐绿盾加密软件是一款全面、高效、方便的企业文件和图纸加密软件。 PC访问地址&#xff1a; isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是这款软件的一些优点和推荐理由&#xff1a; 天锐绿盾加密软件集文件加密、行为监控、权限控制于一体…

身为底层码农,你见过最无理需求是啥?

案例一 20万的项目&#xff0c;已经花了六十万了&#xff0c;客户突然又新提要求做一套百度的搜索系统&#xff0c;我尿了&#xff0c;一顿冥思苦想&#xff0c;然后做了一个搜索页面&#xff0c;把几百张表的每个字段都like一遍在搜索页面输入的查询内容&#xff0c;一次搜索…

五分钟Win11安装安卓(Android)子系统

十分钟&#xff0c;完成win11安装安卓子系统 Step1、地区设置为美国 Wini 进入设置页面&#xff0c;选择时间和语言-语言和区域- 区域-美国 Step2 安装 Windows Subsystem for Android™ with Amazon Appstore 访问如下连接&#xff0c;install即可 安卓子系统 Step3 安…

Ubuntu虚拟机安装教程

镜像下载地址&#xff1a; https://releases.ubuntu.com/22.04/ubuntu-22.04.3-desktop-amd64.iso 选择自己要存放的位置&#xff0c;不要放C盘 双击 选择镜像文件 等待 安装完成 能出网即可

PyTorch CUDA GPU高占用测试

0x00 问题描述 安装完成PyTorch、CUDA后&#xff0c;验证PyTorch是否能够通过CUDA高占用GPU&#xff08;占用>95%&#xff09;&#xff0c;特地使用以下代码测试。 0x01 代码设计 这个代码会持续执行神经网络的训练任务&#xff0c;每次循环都进行前向传播、反向传播和参数…

数据库系统工程师------时间周期

时间周期 计算机各种周期 时钟周期 机器&#xff08;CPU&#xff09;周期 指令周期 总线周期 时钟周期&#xff1a;也称振荡周期&#xff0c;定义为时钟频率的倒数。是计算机中最基本、最小的时间单位。 机器&#xff08;CPU&#xff09;周期&#xff1a;也称CPU周期&…

unity 使用模拟器进行Profiler性能调试

这篇文章主要记录如何实现通过模拟器对打包的app游戏进行Profiler调试。主要记录一些比较重要的点。 准备工作 首先你要能够打包unity的安卓包&#xff0c;如果没有安装安卓组件&#xff0c;请先安装组件。 安装完成以后&#xff0c;会在unity的安装目录找到相应的SDK 这个…

encoding/json vs json-iterator

encoding/json vs json-iterator 100% Compatibility 默认情况下&#xff0c;jsoniter 不会像标准库那样对映射键进行排序。如果你想要 100% 的兼容性&#xff0c;就这样使用 m : map[string]interface{}{"3": 3,"1": 1,"2": 2, } json : json…

10.10作业

运算符重载 #include <iostream>using namespace std;class Per{friend bool operator<(const Per &l, const Per &r);friend const Per operator(const Per &L,const Per &R);friend Per &operator-(Per &l , const Per &r); private:i…

棱镜七彩参编!开源领域4项团体标准正式发布

近日&#xff0c;中电标2023年第27号团体标准公告正式发布&#xff0c;《T/CESA 1270.2-2023 信息技术 开源治理 第 2 部分&#xff1a;企业治理评估模型》、《T/CESA 1270.3-2023 信息技术 开源治理 第 3 部分&#xff1a;社区治理框架》、《T/CESA 1270.5-2023 信息技术 开源…

Unity 捕鱼游戏开发教程与源码

效果图展示 项目分析 主要功能点&#xff1a; 鱼的移动路线 这里使用简单移动的方式&#xff1a;随机位置然后随机鱼直线或者每帧更新鱼的角度实现走圆形。枪随着鼠标或点击位置移动 这个用坐标转换参考代码 private void Update(){Vector3 mousePos; // 鼠标位置// RectTra…

[羊城杯 2020]black cat - 文件隐写+RCE(hash_hmac绕过)

[羊城杯 2020]black cat 1 解题流程1.1 第一步1.2 第二步1.3 第三步 1 解题流程 1.1 第一步 打开网站有首歌&#xff0c;按F12也是提示听歌&#xff0c;ctf-wscan扫描就flag.php下载歌&#xff0c;用010打开&#xff0c;发现有一段内容if(empty($_POST[Black-Cat-Sheriff]) |…