沈阳市城市建设管理局网站游戏推广怎么做
创建项目
使用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-typesconst 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组件类型]}
}