Vue 安装依赖的集合和小知识

Vue项目

typescript 复制代码
npm create vite@latest
typescript 复制代码
pnpm create vite
typescript 复制代码
pnpm add scss -D

.d.ts文件中添加vue的类型声明

typescript 复制代码
declare module "*.vue"{
    import type {DefineComponent} from 'vue'
    const component:DefineComponent<{},{},any>
    export default component
}
javascript 复制代码
yarn add axios

Element-plus

  • 安装element
typescript 复制代码
npm install element-plus --save
typescript 复制代码
pnpm add element-plus
  • 按需引入
javascript 复制代码
npm install -D unplugin-vue-components unplugin-auto-import
javascript 复制代码
pnpm add -D unplugin-vue-components unplugin-auto-import
  • 修改vite.config.ts
javascript 复制代码
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()]
    }),
    Components({
      resolvers: [ElementPlusResolver()]
    })
  ],
  • 插件会在根目录自动生成两个文件
  • 在tsconfig.app.json文件中引入这两个文件
    • 添加"./*.d.ts":不知道这么做合适不,懒得写两个文件的文件名
javascript 复制代码
"include": ["env.d.ts", "src/**/*", "src/**/*.vue", "./*.d.ts"],
  • 设置.d.ts文件后,把鼠标悬停在element的标签上就能有提示了,感觉看到提示也没有啥用

分页

  • 分页器的html部分
javascript 复制代码
<!-- 国际化后显示汉字-->
<el-pagination
     style="margin-top: 10px"
     v-model:current-page="currentPage"
     v-model:page-size="pageSize"
     :page-sizes="[10, 20, 30, 40]"
     layout=" prev, pager, next, jumper,->,total, sizes"
     :total="totalPage"
     @size-change="handleSizeChange"
     @current-change="handleCurrentChange"
     >
   </el-pagination>
  • 上面各参数的解释
js 复制代码
	 style="margin-top: 10px" // 设置与上面表格部分的间隔
	 v-model:current-page="currentPage" // 当前页页码,发生改变时触发@current-change的回调函数
	 v-model:page-size="pageSize"	// 每页显示条目个数
	 :page-sizes="[10, 20, 30, 40]"	// 每页显示个数选择器的选项设置,发生改变时page-size发生变化,触发@size-change的回调函数
	 layout=" prev, pager, next, jumper,->,total, sizes" // 设置分页器的布局
	 :total="totalPage"	// 总条目数
	 @size-change="handleSizeChange" // 每页显示的条目数有变化时触发该方法
	 @current-change="handleCurrentChange" // 当前页有变化时触发
  • 分页器代码部分
javascript 复制代码
<script setup lang="ts">
import { ref } from 'vue'
/**分页器相关 */
const currentPage = ref(1) // 当前页
const pageSize = ref(10) // 每页显示条目个数
const totalPage = ref(0) // 总条数
/**
 * @function  页码发生改变时调用该方法,默认跳转到第一页
 * @param {number} current 传入跳转到第几页,默认第一页。如要保持页面不变,传入currentPage.value
 */
async function requestPage(current: number = 1) {
    // 参数的页码数大于总页数时,跳转到最后一页
    if (current > Math.ceil(totalPage.value / pageSize.value)) {
        currentPage.value = Math.ceil(totalPage.value / pageSize.value)
    } else {
        currentPage.value = current
    }
    // 根据当前页和每页显示多少条,请求数据
    const result = await request()//发送请求
    if (result.code === 200) {
        pageSize.value = result.data.size
        totalPage.value = result.data.total
    }
}
// 加载该组件时,运行该方法
requestPage()
/**
 * @callback sizeChange 每页显示条目个数发生改变时调用该方法
 */
function handleSizeChange() {
    requestPage(currentPage.value)
}
/**
 * @callback currentChange 页码发生改变时调用该方法
 */
function handleCurrentChange() {
    requestPage(currentPage.value)
}
</script>

nestjs

typescript 复制代码
npm i -g @nestjs/cli
typescript 复制代码
nest new [项目名称]

跨域的设置proxy

json 复制代码
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true, // 是否跨域
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
名称 简写 描述 翻译
application application Generate a new application workspace 生成新的应用程序工作区
class cl Generate a new class 生成新类
configuration config Generate a CLI configuration file 生成新类
controller co Generate a controller declaration 生成控制器
decorator d Generate a custom decorator 生成自定义装饰器
filter f Generate a filter declaration 生成筛选器
gateway ga Generate a gateway declaration 生成网关
guard gu Generate a guard declaration 生成守卫
interceptor itc Generate an interceptor declaration 生成拦截器
interface itf Generate an interface 生成接口
library lib Generate a new library within a monorepo 在monorepo中生成新库
middleware mi Generate a middleware declaration 生成中间件
module mo Generate a module declaration 生成模块
pipe pi Generate a pipe declaration 生成管道
provider pr Generate a provider declaration 生成提供者
resolver r Generate a GraphQL resolver declaration 生成GraphQL解析器
resource res Generate a new CRUD resource 生成新的CRUD资源
service s Generate a service declaration 生成服务
sub-app app Generate a new application within a monorepo 在monorepo中生成新应用程序

初始化一个响应式数据

typescript 复制代码
// 数据的初始值
const data = ref<dataType>({
  name: "",
  desc: "",
});
// 用于初始化data数据
const resetData = {...data.value};
// 用resetData初始化data的值
Object.assign(data.value, resetData);
typescript 复制代码
// 数据的初始值
const data = reactive<dataType>({
  name: "",
  desc: "",
});
// 用于初始化data数据
const resetData = {...data};
// 用resetData初始化data的值
Object.assign(data, resetData);
相关推荐
Dovis(誓平步青云)8 小时前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
可乐鸡翅yeah_9 小时前
fmp4 碎片 MP4 格式 HLS 流,和传统 TS 分片有什么不一样
开发语言·javascript·ios·音视频·safari·m3u8·m3u8在线播放
ss27310 小时前
AI全栈实战 | 2.3-01 组件库实战:Element Plus 怎么搭出专业界面,过度封装为什么成维护负担
前端·javascript·elementui·vue
福兮说10 小时前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
小的时候可菜了11 小时前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
可乐鸡翅yeah_11 小时前
hls.js 配置 loadStartPosition,点播起始播放位置踩坑
开发语言·javascript·网络协议·ecmascript·m3u8在线
web打印社区11 小时前
Windows 网页静默打印设置步骤:客户端、防火墙与联调清单
开发语言·前端·javascript·chrome·pdf·ecmascript
web打印社区12 小时前
JS 静默打印怎么做:纯前端为什么不行,以及最小可跑通写法
开发语言·前端·javascript·websocket·网络协议·http·pdf
web打印社区12 小时前
HTML5 静默打印:前端页面怎么调用打印机且尽量不弹窗
前端·javascript·vue.js·pdf·html·html5
liangshanbo121513 小时前
React Fiber:从“解决卡顿”到完整更新链路
前端·javascript·react.js