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

DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕

共同探索软件研发!敬请关注【宝码香车】
关注描述

csdngif标识

目录

  • DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)
    • 📚前言
    • 📚页面效果
    • 📚指令输入
      • 属性定义
        • 数据相关属性
        • 布局相关属性
        • 样式相关属性
        • 交互相关属性
      • 事件
      • 其他
    • 📚think
      • 📘组件代码
    • 📚代码测试
    • 📚填写参数后主要代码
      • 📘定义组件 src\views\ThumbnailListView.vue
    • 📚测试代码正常跑通,附其他基本代码
      • 📘编写路由 src\router\index.js
      • 📘编写展示入口 src\App.vue
    • 📚页面效果
    • 📚相关文章


📚📗📕📘📖🕮💡📝🗂️✍️🛠️💻🚀🎉🏗️🌐🖼️🔗📊👉🔖⚠️🌟🔐⬇️·正文开始⬇️·🎥😊🎓📩😺🌈🤝🤖📜📋🔍✅🧰❓📄📢📈 🙋0️⃣1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣8️⃣9️⃣🔟🆗*️⃣#️⃣

DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)

📚前言

在创意写作领域,一位小说家也分享了使用 DeepSeek 的奇妙体验。他在创作一部科幻小说时,遇到了创作瓶颈,故事的情节发展陷入了僵局。于是,他向 DeepSeek 寻求帮助,输入了小说的背景设定、人物特点和已有的情节框架。DeepSeek 迅速给出了多个富有创意的情节走向和故事转折建议,这些建议不仅符合小说的整体风格,还为他打开了新的创作思路。他根据 DeepSeek 的建议,对小说进行了重新构思,最终创作出了一部广受好评的科幻小说。他表示:“DeepSeek 的创意激发能力让我惊叹,它就像是一个创意宝库,总能在我最需要的时候提供新奇的想法。”

📚页面效果

页面效果

📚指令输入

已经创建好了一个基于Vue3的组合式API的项目(Composition API),并能正常运行起来,请帮我用 Vue3的组合式API(Composition API) 生成一个 缩略图列表(Thumbnail List) 的功能组件,所有代码都保存在components/ThumbnailList 下的文件夹中。功能组件的script标签中只有setup属性,使用普通 JavaScript 实现,不使用TypeScript。
功能要有,如下属性:

属性定义

数据相关属性
  1. items

    • 类型:数组
    • 描述:用于存储缩略图列表的数据,数组中的每个元素代表一个缩略图项,可以包含图片的 src、标题、描述等信息。
    • 示例[{ src: 'image1.jpg', title: 'Image 1' }, { src: 'image2.jpg', title: 'Image 2' }]
  2. itemKey

    • 类型:字符串
    • 描述:指定 items 数组中每个元素的唯一标识字段,用于 Vue 的 :key 绑定,确保列表渲染的高效性和正确性。
    • 示例:如果 items 数组中的每个元素有一个 id 字段作为唯一标识,则 itemKey 可以设置为 'id'
布局相关属性
  1. columns

    • 类型:数字
    • 描述:指定缩略图列表的列数,用于控制布局。
    • 示例3 表示列表将显示为 3 列。
  2. gutter

    • 类型:数字或字符串
    • 描述:缩略图项之间的间距,可以是像素值(如 20)或带有单位的值(如 '20px')。
样式相关属性
  1. thumbnailWidth

    • 类型:数字或字符串
    • 描述:指定缩略图的宽度,可以是像素值(如 100)或带有单位的值(如 '100px')。
  2. thumbnailHeight

    • 类型:数字或字符串
    • 描述:指定缩略图的高度,可以是像素值(如 100)或带有单位的值(如 '100px')。
  3. loadingPlaceholder

    • 类型:字符串
    • 描述:图片加载过程中显示的占位图的 src 地址。
交互相关属性
  1. selectedIndex

    • 类型:数字
    • 描述:指定当前选中的缩略图项的索引,用于实现选中状态的高亮显示。
  2. disabledIndexes

    • 类型:数组
    • 描述:指定禁用的缩略图项的索引数组,禁用的项不可点击。
    • 示例[1, 3] 表示索引为 1 和 3 的缩略图项被禁用。

事件

  1. click

    • 参数:当前点击的缩略图项的数据和索引
    • 描述:当用户点击缩略图项时触发,可用于实现点击缩略图的相关操作,如显示大图、跳转到详情页等。
  2. load

    • 参数:当前加载成功的缩略图项的数据和索引
    • 描述:当缩略图图片加载成功时触发,可用于实现加载成功后的特效或统计加载成功的图片数量。
  3. error

    • 参数:当前加载失败的缩略图项的数据和索引
    • 描述:当缩略图图片加载失败时触发,可用于显示加载失败的提示信息或替换为默认图片。
  4. select

    • 参数:当前选中的缩略图项的数据和索引
    • 描述:当缩略图项被选中时触发,可用于更新 selectedIndex 属性或执行其他选中相关的操作。

其他

  1. 响应式设计:考虑使用 CSS 媒体查询或 Vue 的响应式布局方案,使缩略图列表在不同屏幕尺寸下都能有良好的显示效果。
  2. 懒加载:对于大量的缩略图列表,使用懒加载技术可以提高页面的加载性能,只在缩略图进入可视区域时才加载图片。
  3. 键盘导航:支持键盘操作,如使用方向键选择缩略图项,回车键触发点击事件,提高组件的可访问性。
  4. 动画效果:为缩略图的选中、加载等状态添加适当的动画效果,提升用户体验。
  5. 自定义插槽:提供自定义插槽,允许用户自定义缩略图的内容,如在缩略图上添加自定义的徽章、标签等。

你有更好的建议也可以添加,要注明。组件定义好后给出5个及以上的调用示例。
下面是现有目录
vueAndDeepseek/
├── src/ # 源代码目录
│ ├── assets/ # 静态资源
│ │ ├── base.css
│ │ ├── main.css
│ │ └── logo.svg
│ ├── components/ # 组件目录
│ │ ├── HelloWorld.vue
│ │ ├── TheWelcome.vue
│ │ ├── WelcomeItem.vue
│ │ ├── Progress/
│ │ │ └── Progress.vue
│ │ ├── Accordion/
│ │ ├── BackToTop/
│ │ ├── Card/
│ │ ├── InfiniteScroll/
│ │ ├── Notification/
│ │ ├── Timeline/
│ │ ├── Switch/
│ │ ├── Tabs/
│ │ ├── Sidebar/
│ │ ├── Breadcrumbs/
│ │ ├── MasonryLayout/
│ │ ├── Rating/
│ │ ├── ColorPicker/
│ │ ├── RightClickMenu/
│ │ ├── RangePicker/
│ │ ├── Navbar/
│ │ ├── FormValidation/
│ │ ├── CopyToClipboard/
│ │ ├── ClickAnimations/
│ │ ├── ThumbnailList/
│ │ ├── DatePicker/
│ │ └── icons/
│ ├── router/ # 路由配置
│ │ └── index.js
│ ├── stores/ # Pinia 状态管理
│ │ └── counter.js
│ ├── views/ # 页面组件
│ │ ├── ProgressView.vue
│ │ ├── TabsView.vue
│ │ ├── SwitchView.vue
│ │ ├── TimelineView.vue
│ │ ├── NotificationView.vue
│ │ ├── CardView.vue
│ │ ├── InfiniteScrollView.vue
│ │ ├── BackToTopView.vue
│ │ ├── AccordionView.vue
│ │ ├── SidebarView.vue
│ │ ├── BreadcrumbsView.vue
│ │ ├── MasonryLayoutView.vue
│ │ ├── RatingView.vue
│ │ ├── ColorPickerView.vue
│ │ ├── RightClickMenuView.vue
│ │ ├── RangePickerView.vue
│ │ ├── NavbarView.vue
│ │ ├── FormValidationView.vue
│ │ ├── CopyToClipboardView.vue
│ │ ├── ClickAnimationsView.vue
│ │ ├── ThumbnailListView.vue
│ │ ├── DatePickerView.vue
│ │ └── AboutView.vue
│ ├── App.vue # 根组件
│ └── main.js # 应用入口
├── public/ # 公共资源目录
├── index.html # HTML 模板
├── package.json # 项目配置
├── vite.config.js # Vite 配置
└── node_modules/ # 依赖包目录

📚think

好的,我现在需要帮用户创建一个基于Vue3组合式API的缩略图列表组件。用户已经有一个项目,并且希望所有代码都保存在components/ThumbnailList文件夹下。首先,我需要明确组件的属性、事件以及其他要求,然后按照这些要求逐步构建组件。

首先,用户提到的属性分为数据相关、布局相关、样式相关和交互相关。数据方面,items数组和itemKey是必须的。布局方面需要处理columns和gutter,可能需要使用CSS Grid或者Flex布局来实现多列。样式方面,缩略图的宽高、占位图等需要处理。交互方面,选中的索引、禁用索引以及各种事件,比如点击、加载、错误、选择事件。

接下来,我需要考虑组件的结构。可能使用

  • 来构建列表,每个项包含图片、标题和描述。图片加载时可能需要懒加载,这里可以用Intersection Observer实现。同时,处理图片加载成功和失败的事件,触发对应的事件。

响应式设计方面,可能需要根据屏幕大小调整列数,或者使用媒体查询。但用户提到使用Vue的响应式布局方案,可能需要在组件内部监听窗口大小变化,动态调整columns属性?或者让用户通过props传递不同的columns,然后自己处理媒体查询?可能需要进一步明确。

懒加载的实现,当图片进入视口时加载,可以使用vueuse库中的useIntersectionObserver,或者自己实现。但用户希望使用普通JavaScript,可能需要自己写Intersection Observer的逻辑。

键盘导航方面,需要处理方向键和回车键的事件,这可能需要为每个缩略图项添加tabindex,并监听keydown事件。选中项的高亮显示可以通过CSS类来处理。

自定义插槽部分,用户可能希望替换缩略图的内容,比如添加徽章或标签。所以需要在组件中定义插槽,允许用户自定义内容。

然后,编写代码的结构。在ThumbnailList.vue中,使用setup语法,定义props,处理事件。计算每个项的样式,比如宽度、高度、间距。处理点击事件,判断是否禁用,触发select和click事件。图片加载时,触发load事件,失败时触发error事件。

样式部分,使用scoped的style,处理布局的grid,设置列数和间距。可能需要将gutter转换为像素单位,比如如果是数字,默认加px,如果是字符串,直接使用。缩略图的宽高同理。

接下来,测试组件是否符合所有属性和事件的要求。比如,传递items数组,是否正确渲染;itemKey是否正确作为key;columns是否正确设置grid的列数;gutter是否作为间距应用;缩略图的宽高是否生效;占位图是否在加载时显示;选中的索引是否高亮;禁用项是否不可点击;事件是否正确触发等。

最后,提供调用示例。用户需要至少5个示例,展示不同的属性配置,比如基本用法、自定义样式、禁用项、懒加载、自定义插槽等。每个示例需要展示如何传递props,监听事件,以及可能的数据结构。

可能的注意事项包括:处理props的默认值,比如columns默认可能是3,gutter默认0,thumbnailWidth和Height的默认值如何处理;是否需要将数字转换为像素单位;disabledIndexes的数组如何处理,是否使用includes判断;键盘导航的实现细节,比如如何切换焦点,处理方向键事件等。

另外,关于响应式设计,可能需要组件内部根据屏幕宽度调整columns,但用户可能更希望外部控制,所以可能不需要在组件内部处理,而是由父组件通过媒体查询或其他方式传递不同的columns值。

懒加载的实现可能需要为每个图片元素添加data-src属性,然后在进入视口时替换为src。使用Intersection Observer监听每个图片元素,当进入视口时加载图片。这部分需要在onMounted中初始化Observer,并在卸载时断开连接。

动画效果方面,可以为选中状态添加CSS过渡,比如边框颜色变化,或者缩放效果。可能需要使用transition或animation类。

自定义插槽的位置,可能需要在每个缩略图项内部提供一个默认插槽,允许用户覆盖内容。同时,可能需要暴露项的数据给插槽,使用作用域插槽。

现在,开始编写组件代码。首先定义props,使用defineProps函数。然后处理布局的grid样式,计算每个项的宽度和间距。对于gutter,可能需要将其拆分为水平和垂直间距,或者统一处理为gap。使用CSS grid的gap属性,将gutter值传入。比如,如果gutter是20,那么grid-gap: 20px。

缩略图的宽高可能需要在img标签的样式中设置,或者外层容器的尺寸。可能需要将thumbnailWidth和Height转换为带有单位的字符串,比如如果是数字,加上px,否则直接使用。

处理图片加载,使用@load和@error事件,触发对应的事件。同时,在加载过程中显示占位图,直到图片加载完成。

选中的索引通过比较当前项的索引和selectedIndex,添加选中状态的类名。禁用项通过判断索引是否在disabledIndexes数组中,添加禁用样式,并阻止点击事件。

键盘导航部分,需要为每个项添加tabindex,当获得焦点时,监听方向键和回车键。例如,按下右箭头时,移动到下一个项,超出时循环或停止。回车键触发点击事件。这部分可能需要为每个项添加ref,并在键盘事件中切换焦点。

自定义插槽部分,在组件中预留,并将项的数据作为作用域传递,比如:item="item"和:index=“index”,让用户可以在插槽中访问。

最后,编写示例代码,展示不同的使用场景,包括基本用法、自定义样式、禁用项、事件处理、懒加载和插槽自定义。

可能遇到的问题包括:CSS grid布局在不同浏览器中的兼容性,但现代浏览器应该都支持。懒加载的性能问题,需要合理配置Intersection Observer的root和threshold。键盘导航的处理,确保焦点正确切换,并且不会与其他组件冲突。

综上所述,需要分步骤构建组件,处理每个属性和事件,确保功能完整,同时代码结构清晰,符合Vue3组合式API的最佳实践。

📘组件代码

根据你的需求,我为你创建了一个功能完善的缩略图列表组件。以下是完整的实现方案:

<!-- components/ThumbnailList/ThumbnailList.vue -->
<template><ul class="thumbnail-list":style="{gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,gap: typeof gutter === 'number' ? `${gutter}px` : gutter}"><liv-for="(item, index) in items":key="item[itemKey]"class="thumbnail-item":class="{'selected': index === selectedIndex,'disabled': disabledIndexes.includes(index)}":style="{width: typeof thumbnailWidth === 'number' ? `${thumbnailWidth}px` : thumbnailWidth,height: typeof thumbnailHeight === 'number' ? `${thumbnailHeight}px` : thumbnailHeight}"@click="handleClick(item, index)"@keydown="handleKeyDown($event, index)"tabindex="0"><!-- 自定义插槽 --><slot v-if="$slots.default" :item="item" :index="index"></slot><div v-else class="thumbnail-content"><div class="image-wrapper"><img:src="loadingPlaceholder":data-src="item.src":alt="item.title"class="thumbnail-image"@load="handleImageLoad(item, index)"@error="handleImageError(item, index)"ref="imageRefs"/></div><div v-if="item.title" class="thumbnail-title">{{ item.title }}</div><div v-if="item.description" class="thumbnail-description">{{ item.description }}</div></div></li></ul>
</template><script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue'const props = defineProps({items: {type: Array,required: true},itemKey: {type: String,default: 'id'},columns: {type: Number,default: 3},gutter: {type: [Number, String],default: 10},thumbnailWidth: {type: [Number, String],default: 200},thumbnailHeight: {type: [Number, String],default: 150},loadingPlaceholder: String,selectedIndex: {type: Number,default: -1},disabledIndexes: {type: Array,default: () => []}
})const emit = defineEmits(['click', 'load', 'error', 'select'])const imageRefs = ref([])
let observer = null// 懒加载处理
onMounted(() => {if ('IntersectionObserver' in window) {observer = new IntersectionObserver((entries) => {entries.forEach(entry => {if (entry.isIntersecting) {const img = entry.targetimg.src = img.dataset.srcobserver.unobserve(img)}})})imageRefs.value.forEach(img => observer.observe(img))} else {// 浏览器不支持时直接加载所有图片imageRefs.value.forEach(img => {img.src = img.dataset.src})}
})onBeforeUnmount(() => {if (observer) observer.disconnect()
})const handleClick = (item, index) => {if (props.disabledIndexes.includes(index)) returnemit('click', { item, index })emit('select', { item, index })
}const handleKeyDown = (e, index) => {if (props.disabledIndexes.includes(index)) returnconst itemsCount = props.items.lengthswitch(e.key) {case 'ArrowRight':focusItem((index + 1) % itemsCount)breakcase 'ArrowLeft':focusItem((index - 1 + itemsCount) % itemsCount)breakcase 'Enter':handleClick(props.items[index], index)break}
}const focusItem = (index) => {const items = document.querySelectorAll('.thumbnail-item')if (items[index]) items[index].focus()
}const handleImageLoad = (item, index) => {emit('load', { item, index })
}const handleImageError = (item, index) => {emit('error', { item, index })
}
</script><style scoped>
.thumbnail-list {display: grid;list-style: none;padding: 0;margin: 0;
}.thumbnail-item {position: relative;cursor: pointer;transition: transform 0.2s ease, box-shadow 0.2s ease;overflow: hidden;background: #f5f5f5;
}.thumbnail-item:hover {transform: translateY(-5px);box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}.thumbnail-item.selected {outline: 2px solid #2196f3;outline-offset: 2px;
}.thumbnail-item.disabled {opacity: 0.5;cursor: not-allowed;pointer-events: none;
}.image-wrapper {position: relative;width: 100%;height: 80%;overflow: hidden;
}.thumbnail-image {width: 100%;height: 100%;object-fit: cover;transition: opacity 0.3s ease;
}.thumbnail-image[data-src] {opacity: 0;
}.thumbnail-image.loaded {opacity: 1;
}.thumbnail-title {padding: 8px;font-weight: bold;text-align: center;
}.thumbnail-description {padding: 0 8px 8px;font-size: 0.9em;text-align: center;color: #666;
}@media (max-width: 768px) {.thumbnail-list {grid-template-columns: repeat(2, 1fr) !important;}
}@media (max-width: 480px) {.thumbnail-list {grid-template-columns: 1fr !important;}
}
</style>

以下是5个使用示例:

<!-- 基本用法 -->
<ThumbnailList:items="[{ id: 1, src: 'image1.jpg', title: 'Nature' },{ id: 2, src: 'image2.jpg', title: 'City' }]"item-key="id"@click="handleClick"
/><!-- 自定义尺寸和间距 -->
<ThumbnailList:items="items":columns="4":gutter="20"thumbnail-width="250"thumbnail-height="200"
/><!-- 禁用项和选中状态 -->
<ThumbnailList:items="items":selected-index="selectedIndex":disabled-indexes="[0, 2]"@select="handleSelect"
/><!-- 懒加载和占位符 -->
<ThumbnailList:items="lazyItems"loading-placeholder="/placeholder.jpg"
/><!-- 自定义内容插槽 -->
<ThumbnailList :items="items"><template #default="{ item }"><div class="custom-thumbnail"><img :src="item.src" /><div class="badge">{{ item.category }}</div></div></template>
</ThumbnailList>

额外建议和特性说明:

  1. 性能优化:内置了Intersection Observer实现的懒加载
  2. 无障碍支持:支持键盘导航(方向键切换,回车触发点击)
  3. 响应式设计:内置移动端响应式布局
  4. 动画效果:悬停浮动效果和加载渐显动画
  5. 错误处理:图片加载失败会自动保留占位图
  6. 样式扩展:通过CSS变量可以自定义主题色等样式

使用建议:

  1. 对于大数据量的列表建议搭配虚拟滚动使用
  2. 可以通过CSS变量覆盖默认样式
  3. 推荐使用WebP格式图片优化加载性能
  4. 复杂交互场景可以使用作用域插槽完全自定义内容

📚代码测试

运行正常,代码示例中需要自己填一些参数

📚填写参数后主要代码

📘定义组件 src\views\ThumbnailListView.vue

<template><div class="thumbnail-list-demo"><h2>缩略图列表示例</h2><!-- 示例1:基本用法 --><section class="demo-section"><h3>基本用法</h3><!-- 基本用法 --><ThumbnailList:items="[{ id: 1, src: 'https://picsum.photos/300/200?random=1', title: 'Nature' },{ id: 2, src: 'https://picsum.photos/300/200?random=2', title: 'City' }]"thumbnail-width="250"item-key="id"@click="handleClick"/></section><!-- 示例2:自定义尺寸和间距 --><section class="demo-section"><h3>自定义尺寸和间距</h3><ThumbnailList:items="items":columns="4":gutter="20"thumbnail-width="250"thumbnail-height="200"/></section><!-- 示例3:选中和禁用状态 --><section class="demo-section"><h3>选中和禁用状态</h3><ThumbnailList:items="items"thumbnail-width="250":selected-index="selectedIndex":disabled-indexes="[0, 2]"@select="handleSelect"/></section><!-- 示例4:懒加载和占位图 --><section class="demo-section"><h3>懒加载和占位图</h3><ThumbnailList:items="lazyItems":gutter="20"thumbnail-width="250"loading-placeholder="/placeholder.jpg"/></section><!-- 示例5:自定义插槽 --><section class="demo-section"><h3>自定义插槽</h3><ThumbnailList:items="items":columns="3":gutter="20"thumbnail-width="250"><template #default="{ item }"><div class="custom-thumbnail"><img :src="item.src" :alt="item.title"><div class="custom-overlay"><h4>{{ item.title }}</h4><p>{{ item.description }}</p></div></div></template></ThumbnailList></section></div>
</template><script setup>
import { ref } from 'vue'
import ThumbnailList from '../components/ThumbnailList/ThumbnailList.vue'// 图片数据
const items = ref([{id: 1,src: 'https://picsum.photos/300/200?random=3',title: '自然风光',description: '美丽的自然景观'},{id: 2,src: 'https://picsum.photos/300/200?random=4',title: '城市建筑',description: '现代都市风貌'},{id: 3,src: 'https://picsum.photos/300/200?random=5',title: '生活场景',description: '日常生活瞬间'},{id: 4,src: 'https://picsum.photos/300/200?random=6',title: '艺术设计',description: '创意艺术作品'}
])// 懒加载示例数据
const lazyItems = ref([{id: 5,src: 'https://picsum.photos/300/200?random=7',title: '懒加载图片1',description: '延迟加载示例'},{id: 6,src: 'https://picsum.photos/300/200?random=8',title: '懒加载图片2',description: '延迟加载示例'},{id: 7,src: 'https://picsum.photos/300/200?random=9',title: '懒加载图片3',description: '延迟加载示例'}
])// 选中状态
const selectedIndex = ref(1)// 事件处理函数
const handleClick = (event) => {console.log('点击缩略图:', event)
}const handleSelect = (event) => {console.log('选择缩略图:', event)selectedIndex.value = event.index
}const handleImageLoad = (event) => {console.log('图片加载成功:', event)
}const handleImageError = (event) => {console.log('图片加载失败:', event)
}
</script><style scoped>
.thumbnail-list-demo {padding: 20px;max-width: 1200px;margin: 0 auto;
}h2 {color: #2c3e50;margin-bottom: 30px;text-align: center;
}.demo-section {margin-bottom: 40px;padding: 20px;border: 1px solid #ebeef5;border-radius: 8px;background-color: #fff;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
}h3 {color: #2c3e50;margin-bottom: 20px;font-size: 18px;
}/* 自定义缩略图样式 */
.custom-thumbnail {position: relative;width: 100%;height: 100%;overflow: hidden;border-radius: 8px;
}.custom-thumbnail img {width: 100%;height: 100%;object-fit: cover;transition: transform 0.3s ease;
}.custom-thumbnail:hover img {transform: scale(1.1);
}.custom-overlay {position: absolute;bottom: 0;left: 0;right: 0;padding: 15px;background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);color: white;transform: translateY(100%);transition: transform 0.3s ease;
}.custom-thumbnail:hover .custom-overlay {transform: translateY(0);
}.custom-overlay h4 {margin: 0 0 5px 0;font-size: 16px;
}.custom-overlay p {margin: 0;font-size: 14px;opacity: 0.8;
}
</style>

📚测试代码正常跑通,附其他基本代码

  • 添加路由
  • 页面展示入口

📘编写路由 src\router\index.js

\router\index.js

import { createRouter, createWebHistory } from 'vue-router'
import RightClickMenuView from '../views/RightClickMenuView.vue'
import RangePickerView from '../views/RangePickerView.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',name: 'progress',component:  () => import('../views/ProgressView.vue'),},{path: '/tabs',name: 'tabs',// route level code-splitting// this generates a separate chunk (About.[hash].js) for this route// which is lazy-loaded when the route is visited.// 标签页(Tabs)component: () => import('../views/TabsView.vue'),},{path: '/accordion',name: 'accordion',// 折叠面板(Accordion)component: () => import('../views/AccordionView.vue'),},{path: '/timeline',name: 'timeline',// 时间线(Timeline)component: () => import('../views/TimelineView.vue'),},{path: '/backToTop',name: 'backToTop',component: () => import('../views/BackToTopView.vue')},{path: '/notification',name: 'notification',component: () => import('../views/NotificationView.vue')},{path: '/card',name: 'card',component: () => import('../views/CardView.vue')},{path: '/infiniteScroll',name: 'infiniteScroll',component: () => import('../views/InfiniteScrollView.vue')},{path: '/switch',name: 'switch',component: () => import('../views/SwitchView.vue')},{path: '/sidebar',name: 'sidebar',component: () => import('../views/SidebarView.vue')},{path: '/breadcrumbs',name: 'breadcrumbs',component: () => import('../views/BreadcrumbsView.vue')},{path: '/masonryLayout',name: 'masonryLayout',component: () => import('../views/MasonryLayoutView.vue')},{path: '/rating',name: 'rating',component: () => import('../views/RatingView.vue')},{path: '/datePicker',name: 'datePicker',component: () => import('../views/DatePickerView.vue')},{path: '/colorPicker',name: 'colorPicker',component: () => import('../views/ColorPickerView.vue')},{path: '/rightClickMenu',name: 'rightClickMenu',component: RightClickMenuView},{path: '/rangePicker',name: 'rangePicker',component: () => import('../views/RangePickerView.vue')},{path: '/navbar',name: 'navbar',component: () => import('../views/NavbarView.vue')},{path: '/formValidation',name: 'formValidation',component: () => import('../views/FormValidationView.vue')},{path: '/copyToClipboard',name: 'copyToClipboard',component: () => import('../views/CopyToClipboardView.vue')},{path: '/clickAnimations',name: 'clickAnimations',component: () => import('../views/ClickAnimationsView.vue')},{path: '/thumbnailList',name: 'thumbnailList',component: () => import('../views/ThumbnailListView.vue')}],
})export default router

📘编写展示入口 src\App.vue

 src\App.vue

<script setup>
import { RouterLink, RouterView } from 'vue-router'
import HelloWorld from './components/HelloWorld.vue'
</script><template><header><img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" /><div class="wrapper"><HelloWorld msg="You did it!" /><nav><RouterLink to="/">Progress</RouterLink><RouterLink to="/tabs">Tabs</RouterLink><RouterLink to="/accordion">Accordion</RouterLink><RouterLink to="/timeline">Timeline</RouterLink><RouterLink to="/backToTop">BackToTop</RouterLink><RouterLink to="/notification">Notification</RouterLink><RouterLink to="/card">Card</RouterLink><RouterLink to="/infiniteScroll">InfiniteScroll</RouterLink><RouterLink to="/switch">Switch</RouterLink><RouterLink to="/sidebar">Sidebar</RouterLink><RouterLink to="/breadcrumbs">Breadcrumbs</RouterLink><RouterLink to="/masonryLayout">MasonryLayout</RouterLink><RouterLink to="/rating">Rating</RouterLink><RouterLink to="/datePicker">DatePicker</RouterLink><RouterLink to="/colorPicker">ColorPicker</RouterLink><RouterLink to="/rightClickMenu">RightClickMenu</RouterLink><RouterLink to="/rangePicker">RangePicker</RouterLink><RouterLink to="/navbar">Navbar</RouterLink><RouterLink to="/formValidation">FormValidation</RouterLink><RouterLink to="/copyToClipboard">CopyToClipboard</RouterLink><RouterLink to="/clickAnimations">ClickAnimations</RouterLink><RouterLink to="/thumbnailList">ThumbnailList</RouterLink></nav></div></header><RouterView />
</template><style scoped>
header {line-height: 1.5;max-height: 100vh;
}.logo {display: block;margin: 0 auto 2rem;
}nav {width: 100%;font-size: 12px;text-align: center;margin-top: 2rem;
}nav a.router-link-exact-active {color: var(--color-text);
}nav a.router-link-exact-active:hover {background-color: transparent;
}nav a {display: inline-block;padding: 0 1rem;border-left: 1px solid var(--color-border);
}nav a:first-of-type {border: 0;
}@media (min-width: 1024px) {header {display: flex;place-items: center;padding-right: calc(var(--section-gap) / 2);}.logo {margin: 0 2rem 0 0;}header .wrapper {display: flex;place-items: flex-start;flex-wrap: wrap;}nav {text-align: left;margin-left: -1rem;font-size: 1rem;padding: 1rem 0;margin-top: 1rem;}
}
</style>

📚页面效果

页面效果

📚相关文章

 

———— 相 关 文 章 ————

 

  1. 0基础3步部署自己的DeepSeek安装步骤

  2. DeepSeek 助力 Vue 开发:打造丝滑的步骤条(Step bar)https://blog.csdn.net/qq_33650655/article/details/145560497

  3. DeepSeek 助力 Vue 开发:打造丝滑的进度条(Progress Bar)https://blog.csdn.net/qq_33650655/article/details/145577034

  4. 自己部署 DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)https://blog.csdn.net/qq_33650655/article/details/145587999

  5. 自己部署 DeepSeek 助力 Vue 开发:打造丝滑的折叠面板(Accordion)https://blog.csdn.net/qq_33650655/article/details/145590404

  6. 自己部署 DeepSeek 助力 Vue 开发:打造丝滑的时间线(Timeline )https://blog.csdn.net/qq_33650655/article/details/145597372

  7. DeepSeek 助力 Vue 开发:打造丝滑的返回顶部按钮(Back to Top)https://blog.csdn.net/qq_33650655/article/details/145615550

  8. DeepSeek 助力 Vue 开发:打造丝滑的通知栏(Notification Bar)https://blog.csdn.net/qq_33650655/article/details/145620055

  9. DeepSeek 助力 Vue 开发:打造丝滑的卡片(Card)https://blog.csdn.net/qq_33650655/article/details/145634564

  10. DeepSeek 助力 Vue 开发:打造丝滑的无限滚动(Infinite Scroll)https://blog.csdn.net/qq_33650655/article/details/145638452

  11. DeepSeek 助力 Vue 开发:打造丝滑的开关切换(Switch)https://blog.csdn.net/qq_33650655/article/details/145644151

  12. DeepSeek 助力 Vue 开发:打造丝滑的侧边栏(Sidebar)https://blog.csdn.net/qq_33650655/article/details/145654204

  13. DeepSeek 助力 Vue 开发:打造丝滑的面包屑导航(Breadcrumbs)https://blog.csdn.net/qq_33650655/article/details/145656895

  14. DeepSeek 助力 Vue 开发:打造丝滑的瀑布流布局(Masonry Layout)https://blog.csdn.net/qq_33650655/article/details/145663699

  15. DeepSeek 助力 Vue 开发:打造丝滑的评分组件(Rating)https://blog.csdn.net/qq_33650655/article/details/145664576

  16. DeepSeek 助力 Vue 开发:打造丝滑的日期选择器(Date Picker),未使用第三方插件 https://blog.csdn.net/qq_33650655/article/details/145673279

  17. DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)https://blog.csdn.net/qq_33650655/article/details/145689522

  18. DeepSeek 助力 Vue 开发:打造丝滑的右键菜单(RightClickMenu)https://blog.csdn.net/qq_33650655/article/details/145706658

  19. DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)https://blog.csdn.net/qq_33650655/article/details/145713572

  20. DeepSeek 助力 Vue 开发:打造丝滑的导航栏(Navbar)https://blog.csdn.net/qq_33650655/article/details/145732421

  21. DeepSeek 助力 Vue 开发:打造丝滑的表单验证(Form Validation)https://blog.csdn.net/qq_33650655/article/details/145735582

  22. DeepSeek 助力 Vue 开发:打造丝滑的复制到剪贴板(Copy to Clipboard)https://blog.csdn.net/qq_33650655/article/details/145739569

  23. DeepSeek 助力 Vue 开发:打造丝滑的点击动画(Click Animations)https://blog.csdn.net/qq_33650655/article/details/145766184

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家多多支持宝码香车~💕,若转载本文,一定注明本文链接。


整理不易,点赞关注宝码香车

更多专栏订阅推荐:
👍 html+css+js 绚丽效果
💕 vue
✈️ Electron
⭐️ js
📝 字符串
✍️ 时间对象(Date())操作

相关文章:

DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

day56 第十一章:图论part06

108.冗余连接 注意init初始化 改进&#xff1a; 其实只有一条边冗余&#xff0c;改为&#xff0c;如果两条边在同一个集合里&#xff0c;就输出&#xff0c;不然加入。 #include <iostream> #include <vector> using namespace std;int n 1005; vector<int>…...

conda 配置源

无论是Anaconda vs Miniconda vs Miniforge 中的哪个&#xff0c;只要使用conda就涉及源&#xff0c;换源的目的是为了加速包的获取 修改配置文件 通过修改用户目录下的 .condarc 文件来使用 不同系统下的 .condarc 目录如下&#xff1a; Linux: ${HOME}/.condarcmacOS: ${…...

LangChain大模型应用开发:多模态输入与自定义输出

介绍 大家好&#xff0c;博主又来给大家分享知识了。今天给大家分享的内容是使用LangChain进行大模型应用开发中的多模态输入与自定义输出。 LangChain中的多模态数据输入是指将多种不同形式的数据作为输入提供给基于语言模型的应用程序或系统&#xff0c;以丰富交互内容和提…...

HarmonyOS 开发套件 介绍 ——上篇

HarmonyOS 开发套件 介绍 ——上篇 在当今科技飞速发展的时代&#xff0c;操作系统作为智能设备的核心&#xff0c;其重要性不言而喻。而HarmonyOS&#xff0c;作为华为推出的全新操作系统&#xff0c;正以其独特的魅力和强大的功能&#xff0c;吸引着越来越多的开发者和用户的…...

【Unity Shader编程】之图元装配与光栅化

执行方式&#xff1a;自动完成 图元装配自动化流程 顶点坐标存入装配区 → 按绘制模式连接顶点 → 生成完整几何图元 示例&#xff1a;gl.drawArrays(gl.TRIANGLES, 0, 3)自动生成三角形 会自动自动裁剪超出屏幕范围&#xff08;NDC空间外&#xff09;的三角形&#xff0c;仅保…...

小游戏-记忆卡牌

1、游戏开始4张卡牌&#xff0c;每次过关后新增两张&#xff0c;总共64张卡&#xff0c;可以修改数组EMOJIS&#xff0c;添加表情&#xff0c;增加卡牌数量 2、新建txt文件&#xff0c;将代码粘贴进去&#xff0c;保存后&#xff0c;将txt修改后缀名为html的格式 <!DOCTYPE…...

数据结构——二叉树经典习题讲解

各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 大家好&#xff0c;我们今天来学习java数据结构的二叉树 递归很重要的一些注意事项&#xff1a; 1&#xff1a;递归你能不能掌握在于&#xff1…...

centos 9 时间同步服务

在 CentOS 9 中&#xff0c;默认的时间同步服务是 chrony&#xff0c;而不是传统的 ntpd。 因此&#xff0c;建议使用 chrony 来配置和管理时间同步。 以下是使用 chrony 配置 NTP 服务的步骤&#xff1a; 1. 安装 chrony 首先&#xff0c;确保系统已安装 chrony。 在 CentOS…...

视觉应用工程师(面试)

视觉应用工程师&#xff08;面试&#xff09; 1.自我介绍、会的技能、项目 2.相机和机械手调试过程 检查硬件&#xff0c;看软件驱动是否链接&#xff0c;调节相机和镜头保证能够识别这个物料&#xff0c;看接口和通讯是否正常&#xff0c;如&#xff1a;波特率&#xff0c;数…...

macos sequoia 禁用 ctrl+enter 打开鼠标右键菜单功能

macos sequoia默认ctrlenter会打开鼠标右键菜单&#xff0c;使得很多软件有冲突。关闭方法&#xff1a; end...

【后端基础】布隆过滤器原理

文章目录 一、Bloom Filter&#xff08;布隆过滤器&#xff09;概述1. Bloom Filter 的特点2. Bloom Filter 的工作原理 二、示例1. 添加与查询2. 假阳性 三、Bloom Filter 的操作1、假阳性概率2、空间效率3、哈希函数的选择 四、应用 Bloom Filter 是一种非常高效的概率型数据…...

cs*n 网页内容转为html 加入 onenote

csdn上有好用的内容&#xff0c;我们怎么将它们加到 onenote 里吃灰呢。 一、创建 新html create_html.py import sysdef create_html_file(filename):# 检查是否提供了文件名if not filename:print("请提供HTML文件名")return# 创建HTML内容html_content f"…...

输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路

详细前端代码写于上一篇&#xff1a;输入搜索、分组展示选项、下拉选取&#xff0c;el-select 实现&#xff1a;即输入关键字检索&#xff0c;返回分组选项&#xff0c;选取跳转到相应内容页 —— VUE项目-全局模糊检索 【效果图】&#xff1a;分组展示选项 【去界面操作体验】…...

蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)

Day 3&#xff1a;岛屿数量、二叉树路径和&#xff08;区分DFS与回溯&#xff09; &#x1f4d6; 一、深度优先搜索&#xff08;DFS&#xff09;简介 深度优先搜索&#xff08;Depth-First Search&#xff0c;DFS&#xff09;是一种用于遍历或搜索树或图的算法。它会沿着树的分…...

【论文阅读】SAM-CP:将SAM与组合提示结合起来的多功能分割

导言 近年来&#xff0c;视觉基础模型的快速发展推动了多模态理解的进步&#xff0c;尤其是在图像分割任务中。例如&#xff0c;Segment Anything模型&#xff08;SAM&#xff09;在图像Mask分割上表现出色&#xff0c;但在语义及实例分割方面仍存在局限。本文提出的SAM-CP&am…...

JUC并发—9.并发安全集合四

大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5.LinkedBlockingQueue的具体实现原理 6.基于两个队列实现的集群同步机制 4.JUC的各种阻塞队列介绍 (1)基于数组的阻塞…...

爱普生 SG-8101CE 可编程晶振在笔记本电脑的应用

在笔记本电脑的精密架构中&#xff0c;每一个微小的元件都如同精密仪器中的齿轮&#xff0c;虽小却对整体性能起着关键作用。如今的笔记本电脑早已不再局限于简单的办公用途&#xff0c;其功能愈发丰富多样。从日常轻松的文字处理、网页浏览&#xff0c;到专业领域中对图形处理…...

k8s网络插件详解(flannel)

1、介绍 Flannel 是一个轻量级、易于配置的网络插件&#xff0c;旨在简化 Kubernetes 集群中 Pod 网络的管理。Flannel 的核心功能是提供一个虚拟的网络&#xff0c;允许每个 Pod 获取一个独立的 IP 地址&#xff0c;并实现不同节点间的 Pod 之间的通信 2、网络模式 vxlan&am…...

基于flask+vue框架的的医院预约挂号系统i1616(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,医生,科室信息,就诊信息,医院概况,挂号信息,诊断信息,取消挂号 开题报告内容 基于FlaskVue框架的医院预约挂号系统开题报告 一、研究背景与意义 随着医疗技术的不断进步和人们健康意识的日益增强&#xff0c;医院就诊量逐年增加。传统的现场…...

JUC并发—8.并发安全集合一

大纲 1.JDK 1.7的HashMap的死循环与数据丢失 2.ConcurrentHashMap的并发安全 3.ConcurrentHashMap的设计介绍 4.ConcurrentHashMap的put操作流程 5.ConcurrentHashMap的Node数组初始化 6.ConcurrentHashMap对Hash冲突的处理 7.ConcurrentHashMap的并发扩容机制 8.Concu…...

Linux 内核网络设备驱动编程:私有协议支持

一、struct net_device的通用性与私有协议的使用 struct net_device是Linux内核中用于描述网络设备的核心数据结构,它不仅限于TCP/IP协议,还可以用于支持各种类型的网络协议,包括私有协议。其原因如下: 协议无关性:struct net_device的设计是通用的,它本身并不依赖于任何…...

机器学习的数学基础(三)——概率与信息论

目录 1. 随机变量2. 概率分布2.1 离散型变量和概率质量函数2.2 连续型变量和概率密度函数 3. 边缘概率4. 条件概率5. 条件概率的链式法则6. 独立性和条件独立性7. 期望、方差和协方差7.1 期望7.2 方差7.3 协方差 8. 常用概率分布8.1 均匀分布 U ( a , b ) U(a, b) U(a,b)8.2 Be…...

使用Docker Desktop部署GitLab

1. 环境准备 确保Windows 10/11系统支持虚拟化技术&#xff08;需在BIOS中开启Intel VT-x/AMD-V&#xff09;内存建议≥8GB&#xff0c;存储空间≥100GB 2. 安装Docker Desktop 访问Docker官网下载安装包安装时勾选"Use WSL 2 instead of Hyper-V"&#xff08;推荐…...

推理模型时代:大语言模型如何从对话走向深度思考?

一、对话模型和推理模型的区别概述 对话模型是专门用于问答交互的语言模型,符合人类的聊天方式,返回的内容可能仅仅只是一个简短的答案,一般模型名称后面会带有「chat」字样。 推理模型是比较新的产物,没有明确的定义,一般是指输出过程中带有<think>和</think&…...

GESP2024年3月认证C++七级( 第三部分编程题(1)交流问题)

参考程序&#xff1a; #include <iostream> #include <vector> #include <unordered_map> using namespace std;// 深度优先搜索&#xff0c;给每个节点染色&#xff0c;交替染色以模拟两校同学的划分 void dfs(vector<vector<int>>& graph…...

DeepSeek:AI商业化的新引擎与未来蓝图

摘要 在人工智能迅猛发展的浪潮中&#xff0c;DeepSeek以其卓越的技术实力和高超的商业化能力崭露头角。作为一款现象级AI产品&#xff0c;它不仅在算法性能上位居行业前列&#xff0c;还通过灵活的定制解决方案渗透到金融、医疗、零售等多个领域。DeepSeek以创新的商业模式和场…...

2025年度福建省职业院校技能大赛中职组“网络建设与运维”赛项规程模块三

模块三&#xff1a;服务搭建与运维 任务描述&#xff1a; 随着信息技术的快速发展&#xff0c;集团计划把部分业务由原有的 X86 服 务器上迁移到ARM 架构服务器上&#xff0c;同时根据目前的部分业务需求进行 了部分调整和优化。 一、X86 架构计算机操作系统安装与管理 1&…...

Python----数据结构(队列,顺序队列,链式队列,双端队列)

一、队列 1.1、概念 队列(Queue)&#xff1a;也是一种基本的数据结构&#xff0c;在队列中的插入和删除都遵循先进先出&#xff08;First in First out&#xff0c;FIFO&#xff09;的原则。元素可以在任何时刻从队尾插入&#xff0c;但是只有在队列最前面 的元素才能被取出或…...

【自学笔记】Spring Boot框架技术基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Spring Boot框架技术基础知识点总览一、Spring Boot简介1.1 什么是Spring Boot&#xff1f;1.2 Spring Boot的主要特性 二、Spring Boot快速入门2.1 搭建Spring Boo…...

神经网络剪枝技术的重大突破:sGLP-IB与sTLP-IB

神经网络剪枝技术的重大突破:sGLP-IB与sTLP-IB 在人工智能飞速发展的今天,深度学习技术已经成为推动计算机视觉、自然语言处理等领域的核心力量。然而,随着模型规模的不断膨胀,如何在有限的计算资源和存储条件下高效部署这些复杂的神经网络模型,成为了研究者们亟待解决的…...

Django-Vue 学习-VUE

主组件中有多个Vue组件 是指在Vue.js框架中&#xff0c;主组件是一个父组件&#xff0c;它包含了多个子组件&#xff08;Vue组件&#xff09;。这种组件嵌套的方式可以用于构建复杂的前端应用程序&#xff0c;通过拆分功能和视图&#xff0c;使代码更加模块化、可复用和易于维…...

【Gin】2:快速上手Gin框架(模版、cookie、session)

本文目录 一、模版渲染二、自定义模版函数三、cookie四、Session五、cookie、session区别六、会话攻击 一、模版渲染 在 Gin 框架中&#xff0c;模板主要用于动态生成 HTML 页面&#xff0c;结合 Go 语言的模板引擎功能&#xff0c;实现数据与视图的分离。 模板渲染是一种动态…...

Linux修改主机名称

hostnamectl set-hostname 主机名称 exit 退出登录重新进入即可...

亲测Windows部署Ollama+WebUI可视化

一. Ollama下载 登录Ollama官网(Ollama)点击Download进行下载 如果下载很慢可用以下地址下载&#xff1a; https://github.com/ollama/ollama/releases/download/v0.5.7/OllamaSetup.exe 在DeepSeek官网上&#xff0c;你可以直接点击【model】 到达这个界面之后&#xff0c;…...

Java四大框架深度剖析:MyBatis、Spring、SpringMVC与SpringBoot

目录 前言&#xff1a; 一、MyBatis框架 1. 概述 2. 核心特性 3. 应用场景 4. 示例代码 二、Spring框架 1. 概述 2. 核心模块 3. 应用场景 4. 示例代码 三、SpringMVC框架 1. 概述 2. 核心特性 3. 应用场景 4. 示例代码 四、SpringBoot框架 1. 概述 2. 核心…...

ubuntu部署小笔记-采坑

ubuntu部署小笔记 搭建前端控制端后端前端nginx反向代理使用ubuntu部署nextjs项目问题一 如何访问端口号配置后台运行该进程pm2 问题二 包体过大生产环境下所需文件 问题三 部署在vercel时出现的问题需要魔法访问后端api时&#xff0c;必须使用https协议电脑端访问正常&#xf…...

23. AI-大语言模型-DeepSeek简介

文章目录 前言一、DeepSeek是什么1. 简介2. 产品版本1. 类型2. 版本3. 参数规模与模型能力 3. 特征4. 三种访问方式1. 网页端和APP2. DeepSeek API 二、DeepSeek可以做什么1. 应用场景2. 文本生成1. 文本创作2. 摘要与改写3. 结构化生成 3. 自然语言理解与分析1. 语义分析2. 文…...

基于SpringBoot的智慧家政服务平台系统设计与实现的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Java NIO与传统IO性能对比分析

Java NIO与传统IO性能对比分析 在Java中&#xff0c;I/O&#xff08;输入输出&#xff09;操作是开发中最常见的任务之一。传统的I/O方式基于阻塞模型&#xff0c;而Java NIO&#xff08;New I/O&#xff09;引入了非阻塞和基于通道&#xff08;Channel&#xff09;和缓冲区&a…...

基于YOLO11深度学习的果园苹果检测与计数系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

基于SpringBoot畅购行汽车购票系统

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

基于 Spring Boot + 微信小程序的短文写作竞赛管理系统设计与实现(源码+文档)

大家好&#xff0c;今天要和大家聊的是一款基于 Spring Boot 微信小程序的“短文写作竞赛管理系统”的设计与实现。项目源码以及部署相关事宜请联系我&#xff0c;文末附上联系方式。 项目简介 基于 Spring Boot 微信小程序的“短文写作竞赛管理系统”设计与实现的主要使用…...

pytest运行用例的常见方式及参数

标题pytest运行用例方式及参数 用例结构目录 “”" 在最外层目录下执行所有的用例 参数说明&#xff1a; -s:显示用例的打印信息 -v:显示用例执行的详细信息 –alluredir:指定allure报告的路径 –clean-alluredir:清除allure报告的路径 -n:指定并发的进程数 -x:出现一条用…...

Miniconda + VSCode 的Python环境搭建

目录&#xff1a; 安装 VScode 安装 miniconda 在VScode 使用conda虚拟环境 运行Python程序 1.安装 vscode 编辑器 官网链接&#xff1a;Visual Studio Code - Code Editing. Redefined 下载得到&#xff1a;&#xff0c;双击安装。 安装成功…...

图解MySQL【日志】——Redo Log

Redo Log&#xff08;重做日志&#xff09; 为什么需要 Redo Log&#xff1f; 1. 崩溃恢复 数据库崩溃时&#xff0c;系统通过 Redo Log 来恢复尚未写入磁盘的数据。Redo Log 记录了所有已提交事务的操作&#xff0c;系统在重启后会重做这些操作&#xff0c;以保证数据不会丢…...

Trae AI驱动开发实战:30分钟从0到1实现Django REST天气服务

目录 一、Trae 安装 1、Trae 介绍 2、Trae 安装 二、项目构建 1、项目背景与技术选型 2、开发环境准备 三、需求分析 1、功能模块设计 2、数据库设计 四、功能实现 1、用户系统开发 2、天气服务实现 3、测试用例编写 五、Trae 体验总结 随着人工智能技术的迅猛发…...

【Linux网络编程】IP协议格式,解包步骤

目录 解析步骤 1.版本字段&#xff08;大小&#xff1a;4比特位&#xff09; 2.首部长度&#xff08;大小&#xff1a;4比特位&#xff09;&#xff08;单位&#xff1a;4字节&#xff09; &#x1f35c;细节解释&#xff1a; 3.服务类型&#xff08;大小&#xff1a;8比特…...

中诺CHINO-E G076大容量录音电话产品使用注意事项

•本机需插上随机配置的电源适配器才能正常工作&#xff0c;切勿插入其它的适配器&#xff0c;以免损坏话机&#xff1b; •当本机出现异常时&#xff0c;请按“Δ/上查”键3秒&#xff0c;屏幕弹出确定恢复&#xff0c;按“设置”键恢复出厂设置&#xff1b; 注&#xff1a;…...

2025最新智能优化算法:改进型雪雁算法(Improved Snow Geese Algorithm, ISGA)求解23个经典函数测试集,MATLAB

一、改进型雪雁算法 雪雁算法&#xff08;Snow Geese Algorithm&#xff0c;SGA&#xff09;是2024年提出的一种新型元启发式算法&#xff0c;其灵感来源于雪雁的迁徙行为&#xff0c;特别是它们在迁徙过程中形成的独特“人字形”和“直线”飞行模式。该算法通过模拟雪雁的飞行…...