当前位置: 首页 > news >正文

如何布局网站网站顶部广告素材

如何布局网站,网站顶部广告素材,dw软件怎么制作网页视频,建什么网站好目录 一、Vue 3 TypeScript 1. 项目创建与配置 项目创建 关键配置文件 2.完整项目结构示例 3. 组件 Props 类型定义 4. 响应式数据与 Ref 5. Composition 函数复用 二、组件开发 1.组合式API#xff08;Composition API#xff09; 2.选项式API#xff08;Options…目录 一、Vue 3 TypeScript  1. 项目创建与配置 项目创建 关键配置文件 2.完整项目结构示例 3. 组件 Props 类型定义 4. 响应式数据与 Ref 5. Composition 函数复用 二、组件开发 1.组合式APIComposition API 2.选项式APIOptions API) 三、Vue 2 TypeScript 1. 安装依赖 2. 类组件Vue Class Component) 3.Vuex类型安全 四、状态管理Pinia TypeScript 1. 定义 Store 2. 在组件中使用 五、高级类型操作 1.全局属性扩展 2. 为无类型库添加声明 3.泛型组件 4.使用 Vue Router 六、最佳实践 严格类型检查 类型导入 避免 any 性能优化 七、常见问题 Q1:模板中的类型检查 Q2处理$refs类型 Q3:动态路由类型(Vue  Router Q2: 如何处理模板中的类型检查 八、学习资源 一、Vue 3 TypeScript  Vue 3 原生支持 TypeScript推荐使用 script setup 语法糖和 Composition API。 1. 项目创建与配置 项目创建 使用 Vue CLI 或 Vite 创建支持 TypeScript 的 Vue 项目 # 使用 Vite 创建 Vue TS 项目推荐 npm create vitelatest my-vue-app -- --template vue-ts# 进入项目并运行 cd my-vue-app npm install npm run dev# 使用 Vue CLI需全局安装 vue/cli vue create my-vue-app # 选择 Manually select features → 勾选 TypeScript 关键配置文件 tsconfig.json {compilerOptions: {target: ESNext,module: ESNext,strict: true, // 启用严格模式jsx: preserve, // 支持 JSX可选moduleResolution: node,baseUrl: ./,paths: {/*: [src/*] // 路径别名},types: [vite/client] // Vite 环境类型},include: [src/**/*.ts, src/**/*.d.ts, src/**/*.vue] } vite.config.ts(vite项目) import { defineConfig } from vite; import vue from vitejs/plugin-vue;export default defineConfig({plugins: [vue()],resolve: {alias: {: /src // 路径别名}} }); 2.完整项目结构示例 src/components/Button.vue // 基础组件GenericList.vue // 泛型组件stores/counter.ts // Pinia Storetypes/global.d.ts // 全局类型扩展api.d.ts // API 响应类型views/Home.vueApp.vuemain.tsvite-env.d.ts 3. 组件 Props 类型定义 script setup langts // 定义 Props 类型 interface Props {title: string;count?: number; // 可选参数isActive: boolean; }// 声明 PropswithDefaults 设置默认值 const props withDefaults(definePropsProps(), {count: 0,isActive: false });// 使用 Props console.log(props.title); /scripttemplatediv :class{ active: props.isActive }{{ title }} - {{ count }}/div /template 4. 响应式数据与 Ref script setup langts import { ref, computed } from vue;// 定义响应式数据自动推断类型 const count ref(0); // 类型为 Refnumber// 显式指定复杂类型 interface User {name: string;age: number; } const user refUser({ name: Alice, age: 30 });// 计算属性 const doubleCount computed(() count.value * 2);// 函数 const increment () {count.value; }; /script 5. Composition 函数复用 // composables/useCounter.ts import { ref } from vue;export default function useCounter(initialValue: number 0) {const count ref(initialValue);const increment () {count.value;};return {count,increment}; }// 在组件中使用 script setup langts import useCounter from /composables/useCounter;const { count, increment } useCounter(10); /script 二、组件开发 1.组合式APIComposition API script setup langts import { ref, computed, onMounted } from vue;// Props 类型定义 interface Props {title: string;initialCount?: number; } const props withDefaults(definePropsProps(), {initialCount: 0 });// 响应式数据 const count ref(props.initialCount); const doubleCount computed(() count.value * 2);// 事件触发 const emit defineEmits{(e: count-change, newCount: number): void; }();// 方法 const increment () {count.value;emit(count-change, count.value); };// 生命周期 onMounted(() {console.log(Component mounted); }); /scripttemplatedivh2{{ title }}/h2pCount: {{ count }}, Double: {{ doubleCount }}/pbutton clickincrement1/button/div /template 2.选项式APIOptions API) script langts import { defineComponent } from vue;interface State {message: string;count: number; }export default defineComponent({props: {title: {type: String,required: true}},data(): State {return {message: Hello Vue!,count: 0};},computed: {reversedMessage(): string {return this.message.split().reverse().join();}},methods: {increment() {this.count;}} }); /script 三、Vue 2 TypeScript Vue 2 需通过 vue-class-component 或 vue-property-decorator 增强类型支持。 1. 安装依赖 npm install vue-class-component vue-property-decorator --save2. 类组件Vue Class Component) templatedivp{{ message }}/pbutton clickincrementCount: {{ count }}/button/div /templatescript langts import { Component, Vue, Prop } from vue-property-decorator;Component export default class MyComponent extends Vue {// PropsProp({ type: String, required: true }) readonly title!: string;Prop({ default: 0 }) readonly initialCount!: number;// 数据private count: number this.initialCount;// 计算属性get message(): string {return ${this.title}: ${this.count};}// 方法increment() {this.count;} } /script 3.Vuex类型安全 // store/modules/user.ts import { Module } from vuex;interface UserState {name: string;age: number; }const userModule: ModuleUserState, RootState {namespaced: true,state: () ({name: Alice,age: 30}),mutations: {SET_NAME(state, payload: string) {state.name payload;}},actions: {updateName({ commit }, newName: string) {commit(SET_NAME, newName);}},getters: {fullInfo: (state) ${state.name} (${state.age})} }; 四、状态管理Pinia TypeScript Pinia 是 Vue 官方推荐的状态管理库天然支持 TypeScript。 1. 定义 Store // stores/counter.ts import { defineStore } from pinia;interface CounterState {count: number;lastUpdated?: Date; }export const useCounterStore defineStore(counter, {state: (): CounterState ({count: 0,lastUpdated: undefined}),actions: {increment() {this.count;this.lastUpdated new Date();}},getters: {doubleCount: (state) state.count * 2} }); 2. 在组件中使用 script setup langts import { useCounterStore } from /stores/counter;const counterStore useCounterStore();// 直接修改状态 counterStore.count;// 通过 action 修改 counterStore.increment();// 使用 getter console.log(counterStore.doubleCount); /script 五、高级类型操作 1.全局属性扩展 // src/types/global.d.ts import { ComponentCustomProperties } from vue;declare module vue/runtime-core {interface ComponentCustomProperties {$formatDate: (date: Date) string; // 全局方法$api: typeof import(./api).default; // 全局 API 实例} }// main.ts 中注入 app.config.globalProperties.$formatDate (date: Date) date.toLocaleString(); 2. 为无类型库添加声明 创建 src/types/shims.d.ts declare module untyped-vue-library {export function doSomething(config: any): void; } 3.泛型组件 script setup langts genericT import { ref } from vue;interface GenericListPropsT {items: T[];keyField: keyof T; }const props definePropsGenericListPropsT();const selectedItem refT(); /scripttemplateulli v-foritem in items :keyitem[keyField]clickselectedItem item{{ item }}/li/ul /template 4.使用 Vue Router // router/index.ts import { createRouter, createWebHistory, RouteRecordRaw } from vue-router;const routes: ArrayRouteRecordRaw [{path: /,name: Home,component: () import(/views/Home.vue)} ];const router createRouter({history: createWebHistory(),routes });export default router; 六、最佳实践 严格类型检查 在 tsconfig.json 中启用严格模式 {compilerOptions: {strict: true,noImplicitAny: false // 可逐步开启} } 类型导入 优先使用 TypeScript 类型导入 import type { Router } from vue-router; 避免 any 尽量使用精确类型仅在紧急情况下使用 any。 性能优化 1.类型安全的异步组件 // 显式定义加载的组件类型 const AsyncModal defineAsyncComponent({loader: () import(./Modal.vue),loadingComponent: LoadingSpinner,delay: 200 }); 2.避免不必要的类型断言 // Bad: 过度使用 as const data response.data as User[];// Good: 使用类型守卫 function isUserArray(data: any): data is User[] {return Array.isArray(data) data.every(item id in item); } if (isUserArray(response.data)) {// 安全使用 response.data } 七、常见问题 Q1:模板中的类型检查 安装Volar VS Code插件 禁用Vetur避免冲突 Q2处理$refs类型 // main.ts import { createApp } from vue;declare module vue/runtime-core {interface ComponentCustomProperties {$myGlobal: string;} }const app createApp(App); app.config.globalProperties.$myGlobal hello; Q3:动态路由类型(Vue  Router // router/index.ts import { createRouter, createWebHistory, RouteRecordRaw } from vue-router;declare module vue-router {interface RouteMeta {requiresAuth?: boolean;} }const routes: RouteRecordRaw[] [{path: /user/:id,component: () import(/views/User.vue),props: (route) ({ id: Number(route.params.id) }) // 类型转换} ]; Q3: 如何为全局属性添加类型 在 Vue 3 中 // main.ts import { createApp } from vue;declare module vue/runtime-core {interface ComponentCustomProperties {$myGlobal: string;} }const app createApp(App); app.config.globalProperties.$myGlobal hello; Q2: 如何处理模板中的类型检查 Vue 3 的 Volar 插件替代 Vetur提供模板内类型检查需在 VS Code 中安装。 八、学习资源 Vue 3 TypeScript 官方指南 Pinia 官方文档 Vue 3 TypeScript 示例项目 本文有待更新暂时不为最终版本 码字不易各位大佬点点赞
http://www.hkea.cn/news/14536673/

相关文章:

  • 鹿泉市建设局网站织梦 网站标题
  • 怎样黑进别人的网站地方网站运营方案
  • 潍坊外贸网站优化seo是做什么的
  • 网站建设中最重要的是什么彩票网站是静态动态
  • 备案需要网站建设方案书wordpress 国产主题
  • 国内网站做国外服务器网站导航
  • seo网站推广价格广州微信开发
  • 杭州网站建站公司做推广哪家网站好
  • 宁德营销型网站建设网站关键字没有排名
  • 如何查询网站的备案信息查询去马来西亚做网站网站
  • 外贸网站推广多少费用做那个的网页
  • 江门手机网站建设连云港吧
  • thinkphp5 做网站google地图嵌入网站
  • 简单的网站建设企业网站备案跟做哪个推广有关系吗
  • HTML5怎么做自适应网站建设银行官网网站首页
  • 在欣欣网上做网站效果如何互联网优化营销
  • 广州市恒嘉建设有限公司网站天猫入驻网站建设
  • 网站开发fsdpjq个人名下公司查询网
  • 北川建设局网站免备案的网站首页
  • 简洁 手机 导航网站模板下载安装江西省赣州市地图
  • 网络营销八大工具湖南seo优化按天付费
  • 网站赚钱今天的新闻内容50字
  • 网站建设开发pptwordpress接入小程序
  • 泉州市培训建设系统中心网站教师进修学校网站建设方案
  • 怎样在外管局网站做延期付款化工厂建设网站
  • 惠州网站建设兼职知识付费问答系统网站开发
  • 网站风格配置怎么做汇算清缴在哪个网站上做
  • 相城建设监理有限公司网站网站外部链接如何建设
  • 服装网站建设规划书wordpress cdn图片加速
  • 自己做网站如何挣钱wordpress 性能分析