项目初始化--uniapp--vscode--vue3--ts

HBuilderX 创建 uni-app 项目

注意开启服务端口

目录结构

javascript 复制代码
├─pages            业务页面文件存放的目录
│  └─index
│     └─index.vue  index页面
├─static           存放应用引用的本地静态资源的目录(注意:静态资源只能存放于此)
├─unpackage        非工程代码,一般存放运行或发行的编译结果
├─index.html       H5端页面
├─main.js          Vue初始化入口文件
├─App.vue          配置App全局样式、监听应用生命周期
├─pages.json       **配置页面路由、导航栏、tabBar等页面类信息**
├─manifest.json    **配置appid**、应用名称、logo、版本等打包信息
└─uni.scss         uni-app内置的常用样式变量

命令行创建 uni-app 项目 vsCode

不必依赖 HBuilderX,TypeScript 类型支持友好

1 vue3 + ts 版

javascript 复制代码
npx degit dcloudio/uni-preset-vue#vite-ts 项目名称

创建其他版本可查看:uni-app 官网

2 编译和运行 uni-app 项目

安装依赖

javascript 复制代码
pnpm install

编译成微信小程序

javascript 复制代码
pnpm dev:mp-weixin

导入微信开发者工具 -- 温馨提示: 在 manifest.json 文件添加小程序 appid 方便真机预览

javascript 复制代码
微信开发者工具 左上角--项目--导入项目--项目文件夹--D:\UniAppWorkSpace\eribbit-client-uniapp\dist\dev\mp-weixin

3 用 vsCode 开发配置

安装 uni-app 插件

uni-create-view :快速创建 uni-app 页面

uni-helper uni-app :代码提示

uniapp 小程序扩展 :鼠标悬停查文档

javascript 复制代码
.vscode
extensions.json
{
  // 推荐的扩展插件
  "recommendations": [
    "mrmaoddxxaa.create-uniapp-view", // 创建 uni-app 页面
    "uni-helper.uni-helper-vscode", // uni-app 代码提示
    "evils.uniapp-vscode", // uni-app 文档
    "vue.volar", // vue3 语法支持
    "vue.vscode-typescript-vue-plugin", // vue3 ts 插件
    "editorconfig.editorconfig", // editorconfig
    "dbaeumer.vscode-eslint", // eslint
    "esbenp.prettier-vscode" // prettier
  ]
}

4 TS 类型校验

javascript 复制代码
pnpm i -D @types/wechat-miniprogram @uni-helper/uni-app-types

// uni-ui -- 类型声明文件

pnpm i -D @uni-helper/uni-ui-types
javascript 复制代码
// tsconfig.json
{
  "extends": "@vue/tsconfig/tsconfig.json",
  "compilerOptions": {
    "sourceMap": true,
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    },
    "lib": ["esnext", "dom"],
    "types": [
      "@dcloudio/types",
+      "@types/wechat-miniprogram",
+      "@uni-helper/uni-app-types"
+      "@uni-helper/uni-ui-types" 
    ]
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

5 安装 sass

javascript 复制代码
npm i sass -D

npm i sass-loader@10.1.1 -D

6 引入 uni-ui 组件库

javascript 复制代码
pnpm i @dcloudio/uni-ui
javascript 复制代码
// pages.json
{
  // 组件自动导入
  "easycom": {
    "autoscan": true,
    "custom": {
      // uni-ui 规则如下配置  
      "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" 
    }
  },
  "pages": [
    // ...省略
  ]
}

7 配置 @==src

javascript 复制代码
// vite.config.ts

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'

// https://vitejs.dev/config/
export default defineConfig({
	plugins: [uni()],
	resolve: {
		extensions: ['.ts', '.js', '.json', '.vue', '.less', '.scss', '.css'], // 省略后缀 以及 index.*
		alias: {
			'@': fileURLToPath(new URL('./src', import.meta.url)),
		},
	},
})

8 .editorconfig

javascript 复制代码
# Editor configuration, see http://editorconfig.org

# 表示是最顶层的 EditorConfig 配置文件
root = true

[*] # 表示所有文件适用
charset = utf-8 # 设置文件字符集为 utf-8
indent_style = space # 缩进风格(tab | space)
indent_size = 2 # 缩进大小
end_of_line = lf # 控制换行类型(lf | cr | crlf), lf 适配 mac,linix ; cr 适配window;
trim_trailing_whitespace = true # 去除行首的任意空白字符
insert_final_newline = true # 始终在文件末尾插入一个新行

[*.md] # 表示仅 md 文件适用以下规则
max_line_length = off
trim_trailing_whitespace = false

9 .eslintrc.cjs

javascript 复制代码
/* eslint-env node */
require("@rushstack/eslint-patch/modern-module-resolution");

module.exports = {
  root: true,
  extends: [
    "plugin:vue/vue3-essential",
    "eslint:recommended",
    "@vue/eslint-config-typescript",
    "@vue/eslint-config-prettier",
  ],
  // 小程序全局变量
  globals: {
    uni: true,
    wx: true,
    WechatMiniprogram: true,
    getCurrentPages: true,
    UniHelper: true,
  },
  parserOptions: {
    ecmaVersion: "latest",
  },
  rules: {
    "prettier/prettier": [
      "warn",
      {
        singleQuote: true,
        semi: false,
        printWidth: 80,
        trailingComma: "all",
        endOfLine: "auto",
      },
    ],
    "vue/multi-word-component-names": ["off"],
    "vue/no-setup-props-destructure": ["off"],
    "vue/no-deprecated-html-element-is": ["off"],
    "@typescript-eslint/no-unused-vars": ["off"],
  },
};

10 .prettierrc.json

javascript 复制代码
{
	"$schema": "https://json.schemastore.org/prettierrc",
	"printWidth": 80,
	"tabWidth": 2,
	"useTabs": true,
	"semi": false,
	"singleQuote": true,
	"trailingComma": "es5",
	"bracketSpacing": true,
	"jsxBracketSameLine": true,
	"arrowParens": "avoid",
	"endOfLine": "auto"
}

JSON 注释问题 -- 把 manifest.json 和 pages.json 设置为 jsonc

vsCOde 左下角--设置--右上角源码模式--添加代码

javascript 复制代码
"files.associations": { "*.json": "jsonc" }
相关推荐
Jiaberrr3 分钟前
Vite环境下uniapp Vue 3项目添加和使用环境变量的完整指南
前端·javascript·vue.js·uni-app
zhaoyapeng_3 分钟前
uniapp 小程序 周选择器
微信小程序·小程序·uni-app·uniapp
Marry1.012 分钟前
uniapp背景图用本地图片
前端·uni-app
蜕变菜鸟18 分钟前
uni-app 实现自定义底部导航
uni-app·notepad++
记忆深处的声音18 分钟前
vue2 + Element-ui 二次封装 Table 组件,打造通用业务表格
前端·vue.js·代码规范
四喜花露水1 小时前
Vue 自定义icon组件封装SVG图标
前端·javascript·vue.js
瑶琴AI前端2 小时前
uniapp实现H5和微信小程序获取当前位置(腾讯地图)
微信小程序·小程序·uni-app
程序员爱技术6 小时前
Vue 2 + JavaScript + vue-count-to 集成案例
前端·javascript·vue.js
耶啵奶膘8 小时前
uniapp-是否删除
linux·前端·uni-app
cs_dn_Jie10 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉