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


    创建项目

    使用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"到编译器选项;

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

    基本配置

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

    1. // vits.config.ts
    2. import { defineConfig } from "vite"
    3. import uni from "@dcloudio/vite-plugin-uni"
    4. import { resolve } from "path"
    5. export default defineConfig({
    6. resolve: {
    7. alias: {
    8. "@": resolve(__dirname, "src"),
    9. },
    10. extensions: ['.mjs', '.js', '.jsx', '.json', '.vue'],
    11. },
    12. plugins: [
    13. uni(),
    14. ],
    15. })

     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

    1. {
    2. "extends": "@vue/tsconfig/tsconfig.json",
    3. "compilerOptions": {
    4. "ignoreDeprecations": "5.0",
    5. "sourceMap": true,
    6. "baseUrl": ".",
    7. "paths": {
    8. "@/*": ["./src/*"]
    9. },
    10. "lib": ["esnext", "dom"],
    11. "types": [
    12. // "miniprogram-api-typings", // 原生微信小程序类型
    13. "@dcloudio/types", // uni-app API 类型
    14. "@uni-helper/uni-app-types", // uni-app 组件类型
    15. ]
    16. },
    17. "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
    18. }

    安装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一下。 

    1. // 不使用自动导入的用法
    2. // 使用自动导入的用法
    3. <script lang="ts" setup>
    4. const name = ref('')
    5. onLoad(() => {
    6. console.log(name.value)
    7. })
    8. script>

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

    1. import { defineConfig } from "vite";
    2. import uni from "@dcloudio/vite-plugin-uni";
    3. // 加上下面这一行
    4. import AutoImport from 'unplugin-auto-import/vite'
    5. // https://vitejs.dev/config/
    6. import { resolve } from "path"
    7. // https://vitejs.dev/config/
    8. export default defineConfig({
    9. base: "/couponPromotion",
    10. plugins: [
    11. uni(),
    12. // ---- 配置自动引入 ----
    13. AutoImport({
    14. include: [
    15. /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
    16. /\.vue$/,
    17. /\.vue\?vue/, // .vue
    18. /\.md$/, // .md
    19. ],
    20. imports: ['vue', 'uni-app'],
    21. dts: 'typings/auto-imports.d.ts',
    22. })
    23. ],
    24. })

    在 tsconfig.json 中添加如下配置

    1. {
    2. "include": [
    3. "src/**/*.ts",
    4. "src/**/*.d.ts",
    5. "src/**/*.tsx",
    6. "src/**/*.vue",
    7. // 加上下面两项
    8. "typings/**/*.ts",
    9. "typings/**/*.d.ts"
    10. ],
    11. }

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

     

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

    1. "compilerOptions": {
    2. "skipLibCheck": true,
    3. },

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

     

    安装uview-plus

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

    1. // 安装
    2. npm install uview-plus
    3. npm install dayjs
    4. npm install clipboard

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

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

    引入uview-plus主JS库

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

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

    1. import { createSSRApp } from "vue";
    2. import uviewPlus from 'uview-plus'
    3. import App from "./App.vue";
    4. export function createApp() {
    5. const app = createSSRApp(App);
    6. app.use(uviewPlus);
    7. return {
    8. app,
    9. };
    10. }

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

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

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

     引入uview-plus基础样式

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

    1. // App.vue

    配置easycom组件模式

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

    温馨提示:

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

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

    1. // pages.json
    2. {
    3. "easycom": {
    4. // 注意一定要放在custom里,否则无效,https://ask.dcloud.net.cn/question/131175
    5. "custom": {
    6. "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
    7. "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
    8. "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"
    9. }
    10. },
    11. // 此为本身已有的内容
    12. "pages": [
    13. // ......
    14. ]
    15. }

    修改env.d.ts文件

    注意:

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

    1. ///
    2. declare module '*.vue' {
    3. import { DefineComponent } from 'vue'
    4. // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
    5. const component: DefineComponent<{}, {}, any>
    6. export default component
    7. }
    8. declare module "uview-plus";

    安装uni-ui组件库

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

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

    配置自动导入组件

    1. // pages.json
    2. {
    3. "easycom": {
    4. //是否开启自动导入
    5. "autoscan": true,
    6. "custom": {
    7. "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
    8. "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
    9. "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue",
    10. "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" // uni-ui 规则
    11. }
    12. },
    13. "pages": [],
    14. }

    安装类型声明文件

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

    配置类型声明文件

    1. // tsconfig.json
    2. {
    3. "compilerOptions": {
    4. "types": [
    5. "@dcloudio/types",
    6. "@uni-helper/uni-app-types",
    7. "@uni-helper/uni-ui-types" // uni-ui组件类型
    8. ]
    9. }
    10. }
  • 相关阅读:
    OpenCV2 module ‘cv2‘ has no attribute ‘legacy‘
    QT—3D绘图
    稳压器【TPS6283810YFPR 3A】汽车类、TPS629203QDRLRQ1,TPS74550PQWDRVRQ1采用小型6 引脚 WSON 封装。
    什么FPGA开发板入门学习比较好?
    JAVA毕业设计Web医学院校大学生就业信息管理系统计算机源码+lw文档+系统+调试部署+数据库
    Java代理
    mirai登陆失败反复验证码或提示登录存在安全风险的解决方法
    lightdb22.3-oracle 内置包兼容增强
    模板引擎Velocity 基础
    用DIV+CSS技术设计的水果介绍网站(web前端网页制作课作业)
  • 原文地址:https://blog.csdn.net/weixin_43743175/article/details/133711188