学习笔记 | 微信小程序项目day06

今日学习内容

  • 商品详情页

商品详情页

1、定义类型

import type { GoodsItem } from './global'/** 商品信息 */
export type GoodsResult = {/** id */id: string/** 商品名称 */name: string/** 商品描述 */desc: string/** 当前价格 */price: number/** 原价 */oldPrice: number/** 商品详情: 包含详情属性 + 详情图片 */details: Details/** 主图图片集合[ 主图图片链接 ] */mainPictures: string[]/** 同类商品[ 商品信息 ] */similarProducts: GoodsItem[]/** sku集合[ sku信息 ] */skus: SkuItem[]/** 可选规格集合备注[ 可选规格信息 ] */specs: SpecItem[]/** 用户地址列表[ 地址信息 ] */userAddresses: AddressItem[]
}/** 商品详情: 包含详情属性 + 详情图片 */
export type Details = {/** 商品属性集合[ 属性信息 ] */properties: DetailsPropertyItem[]/** 商品详情图片集合[ 图片链接 ] */pictures: string[]
}/** 属性信息 */
export type DetailsPropertyItem = {/** 属性名称 */name: string/** 属性值 */value: string
}/** sku信息 */
export type SkuItem = {/** id */id: string/** 库存 */inventory: number/** 原价 */oldPrice: number/** sku图片 */picture: string/** 当前价格 */price: number/** sku编码 */skuCode: string/** 规格集合[ 规格信息 ] */specs: SkuSpecItem[]
}/** 规格信息 */
export type SkuSpecItem = {/** 规格名称 */name: string/** 可选值名称 */valueName: string
}/** 可选规格信息 */
export type SpecItem = {/** 规格名称 */name: string/** 可选值集合[ 可选值信息 ] */values: SpecValueItem[]
}/** 可选值信息 */
export type SpecValueItem = {/** 是否可售 */available: boolean/** 可选值备注 */desc: string/** 可选值名称 */name: string/** 可选值图片链接 */picture: string
}/** 地址信息 */
export type AddressItem = {/** 收货人姓名 */receiver: string/** 联系方式 */contact: string/** 省份编码 */provinceCode: string/** 城市编码 */cityCode: string/** 区/县编码 */countyCode: string/** 详细地址 */address: string/** 默认地址,1为是,0为否 */isDefault: number/** 收货地址 id */id: string/** 省市区 */fullLocation: string
}

2、定义接口

import type { GoodsResult } from '@/types/goods'
import { http } from '@/utils/http'export const getGoodsDetailApi = (id: string) => {return http<GoodsResult>({method: 'GET',url: '/goods',data: { id: id },})
}

3、组件代码

<script setup lang="ts">
import { onLoad } from '@dcloudio/uni-app'import { getGoodsDetailApi } from '@/services/goods'
import { ref } from 'vue'
import type { GoodsResult } from '@/types/goods'
import ServicePannel from './components/ServicePannel.vue'
import AddressPanel from './components/AddressPanel.vue'
import GoodsSkeleton from './components/GoodsSkeleton.vue'const goodsInfo = ref<GoodsResult>()//获取商品详情
const getGoodsInfo = async () => {const res = await getGoodsDetailApi(query.id)goodsInfo.value = res.result
}//启动骨架屏
const isLoading = ref(false)onLoad(() => {isLoading.value = truegetGoodsInfo()isLoading.value = false
})// uniapp 获取页面参数
const query = defineProps<{id: string
}>()// 获取屏幕边界到安全区域距离
const { safeAreaInsets } = uni.getSystemInfoSync()//高亮的指示点
const activeIndex = ref(0)//当swiper下标发生变化时出发
const onChange: UniHelper.SwiperOnChange = (ev) => {// console.log(ev.detail?.current)activeIndex.value = ev.detail!.current
}const onPreviewImage = (url: string) => {uni.previewImage({urls: goodsInfo.value!.mainPictures,current: url,})
}const popup = ref<{open: (type?: UniHelper.UniPopupType) => voidclose: () => void
}>()const isAddress = ref<0 | 1>(0)
const openPopup = (isAddr: 0 | 1) => {isAddress.value = isAddrpopup.value?.open()
}
</script><template><GoodsSkeleton v-if="isLoading" /><scroll-view scroll-y class="viewport" v-else><!-- 基本信息 --><view class="goods"><!-- 商品主图 --><view class="preview"><swiper circular @change="onChange"><swiper-item@click="onPreviewImage(item)"v-for="item in goodsInfo?.mainPictures":key="item"><image mode="aspectFill" :src="item" /></swiper-item></swiper><view class="indicator"><text class="current">{{ activeIndex + 1 }}</text><text class="split">/</text><text class="total">{{ goodsInfo?.mainPictures.length }}</text></view></view><!-- 商品简介 --><view class="meta"><view class="price"><text class="symbol">¥</text><text class="number">{{ goodsInfo?.price }}</text></view><view class="name ellipsis">{{ goodsInfo?.name }} </view><view class="desc"> {{ goodsInfo?.desc }} </view></view><!-- 操作面板 --><view class="action"><view class="item arrow"><text class="label">选择</text><text class="text ellipsis"> 请选择商品规格 </text></view><view class="item arrow" @tap="openPopup(1)"><text class="label">送至</text><text class="text ellipsis"> 请选择收获地址 </text></view><view class="item arrow" @tap="openPopup(0)"><text class="label">服务</text><text class="text ellipsis"> 无忧退 快速退款 免费包邮 </text></view></view></view><uni-popup ref="popup" type="bottom" background-color="#fff"><ServicePannel v-show="isAddress === 0" @close="popup?.close" /><AddressPanel v-show="isAddress === 1" @close="popup?.close" /></uni-popup><!-- 商品详情 --><view class="detail panel"><view class="title"><text>详情</text></view><view class="content"><view class="properties"><!-- 属性详情 --><view class="item" v-for="item in goodsInfo?.details.properties" :key="item.name"><text class="label">{{ item.name }}</text><text class="value">{{ item.value }}</text></view></view><!-- 图片详情 --><image:key="item"v-for="item in goodsInfo?.details.pictures"mode="widthFix":src="item"></image></view></view><!-- 同类推荐 --><view class="similar panel"><view class="title"><text>同类推荐</text></view><view class="content"><navigatorv-for="item in goodsInfo?.similarProducts":key="item.id"class="goods"hover-class="none":url="`/pages/goods/goods?id=${item.id}`"><image class="image" mode="aspectFill" :src="item.picture"></image><view class="name ellipsis">{{ item.name }}</view><view class="price"><text class="symbol">¥</text><text class="number">{{ item.price }} </text></view></navigator></view></view></scroll-view><!-- 用户操作 --><view class="toolbar" :style="{ paddingBottom: safeAreaInsets?.bottom + 'px' }"><view class="icons"><button class="icons-button"><text class="icon-heart"></text>收藏</button><button class="icons-button" open-type="contact"><text class="icon-handset"></text>客服</button><navigator class="icons-button" url="/pages/cart/cart" open-type="switchTab"><text class="icon-cart"></text>购物车</navigator></view><view class="buttons"><view class="addcart"> 加入购物车 </view><view class="buynow"> 立即购买 </view></view></view>
</template><style lang="scss">
page {height: 100%;overflow: hidden;display: flex;flex-direction: column;
}.viewport {background-color: #f4f4f4;
}.panel {margin-top: 20rpx;background-color: #fff;.title {display: flex;justify-content: space-between;align-items: center;height: 90rpx;line-height: 1;padding: 30rpx 60rpx 30rpx 6rpx;position: relative;text {padding-left: 10rpx;font-size: 28rpx;color: #333;font-weight: 600;border-left: 4rpx solid #27ba9b;}navigator {font-size: 24rpx;color: #666;}}
}.arrow {&::after {position: absolute;top: 50%;right: 30rpx;content: '\e6c2';color: #ccc;font-family: 'erabbit' !important;font-size: 32rpx;transform: translateY(-50%);}
}/* 商品信息 */
.goods {background-color: #fff;.preview {height: 750rpx;position: relative;.image {width: 750rpx;height: 750rpx;}.indicator {height: 40rpx;padding: 0 24rpx;line-height: 40rpx;border-radius: 30rpx;color: #fff;font-family: Arial, Helvetica, sans-serif;background-color: rgba(0, 0, 0, 0.3);position: absolute;bottom: 30rpx;right: 30rpx;.current {font-size: 26rpx;}.split {font-size: 24rpx;margin: 0 1rpx 0 2rpx;}.total {font-size: 24rpx;}}}.meta {position: relative;border-bottom: 1rpx solid #eaeaea;.price {height: 130rpx;padding: 25rpx 30rpx 0;color: #fff;font-size: 34rpx;box-sizing: border-box;background-color: #35c8a9;}.number {font-size: 56rpx;}.brand {width: 160rpx;height: 80rpx;overflow: hidden;position: absolute;top: 26rpx;right: 30rpx;}.name {max-height: 88rpx;line-height: 1.4;margin: 20rpx;font-size: 32rpx;color: #333;}.desc {line-height: 1;padding: 0 20rpx 30rpx;font-size: 24rpx;color: #cf4444;}}.action {padding-left: 20rpx;.item {height: 90rpx;padding-right: 60rpx;border-bottom: 1rpx solid #eaeaea;font-size: 26rpx;color: #333;position: relative;display: flex;align-items: center;&:last-child {border-bottom: 0 none;}}.label {width: 60rpx;color: #898b94;margin: 0 16rpx 0 10rpx;}.text {flex: 1;-webkit-line-clamp: 1;}}
}/* 商品详情 */
.detail {padding-left: 20rpx;.content {margin-left: -20rpx;.image {width: 100%;}}.properties {padding: 0 20rpx;margin-bottom: 30rpx;.item {display: flex;line-height: 2;padding: 10rpx;font-size: 26rpx;color: #333;border-bottom: 1rpx dashed #ccc;}.label {width: 200rpx;}.value {flex: 1;}}
}/* 同类推荐 */
.similar {.content {padding: 0 20rpx 200rpx;background-color: #f4f4f4;display: flex;flex-wrap: wrap;.goods {width: 340rpx;padding: 24rpx 20rpx 20rpx;margin: 20rpx 7rpx;border-radius: 10rpx;background-color: #fff;}.image {width: 300rpx;height: 260rpx;}.name {height: 80rpx;margin: 10rpx 0;font-size: 26rpx;color: #262626;}.price {line-height: 1;font-size: 20rpx;color: #cf4444;}.number {font-size: 26rpx;margin-left: 2rpx;}}navigator {&:nth-child(even) {margin-right: 0;}}
}/* 底部工具栏 */
.toolbar {position: fixed;left: 0;right: 0;bottom: 0;z-index: 1;background-color: #fff;height: 100rpx;padding: 0 20rpx var(--window-bottom);border-top: 1rpx solid #eaeaea;display: flex;justify-content: space-between;align-items: center;box-sizing: content-box;.buttons {display: flex;& > view {width: 220rpx;text-align: center;line-height: 72rpx;font-size: 26rpx;color: #fff;border-radius: 72rpx;}.addcart {background-color: #ffa868;}.buynow,.payment {background-color: #27ba9b;margin-left: 20rpx;}}.icons {padding-right: 10rpx;display: flex;align-items: center;flex: 1;.icons-button {flex: 1;text-align: center;line-height: 1.4;padding: 0;margin: 0;border-radius: 0;font-size: 20rpx;color: #333;background-color: #fff;&::after {border: none;}}text {display: block;font-size: 34rpx;}}
}
</style>

骨架屏

<template name="skeleton"><view class="sk-container"><scroll-view :scroll-y="true" class="viewport viewport" :enable-back-to-top="true"><view class="goods goods"><view class="preview preview"><swiper :circular="true" :current="0" :autoplay="false"><swiper-itemstyle="position: absolute;width: 100%;height: 100%;transform: translate(0%, 0px) translateZ(0px);"><image mode="aspectFill" class="sk-image"></image></swiper-item></swiper><view class="indicator indicator"><text class="current sk-transparent sk-opacity">1</text><text class="split sk-transparent sk-opacity">/</text><text class="total sk-transparent sk-opacity">5</text></view></view><view class="meta meta"><view class="price price"><text class="symbol sk-transparent sk-opacity">¥</text><text class="number sk-transparent sk-text-14-2857-813 sk-text">168.00</text></view><view class="name ellipsis sk-transparent sk-text-14-2857-290 sk-text">梅乃宿梅酒720毫升</view><view class="desc sk-transparent sk-text-0-0000-205 sk-text">小藏手工酿造,百年名酒app</view></view><view class="action action"><view class="item arrow sk-pseudo sk-pseudo-circle"><text class="label sk-transparent sk-text-14-2857-92 sk-text">选择</text><text class="text ellipsis sk-transparent sk-text-14-2857-598 sk-text">请选择商品规格</text></view><view class="item arrow sk-pseudo sk-pseudo-circle"><text class="label sk-transparent sk-text-14-2857-857 sk-text">送至</text><text class="text ellipsis sk-transparent sk-text-14-2857-937 sk-text">请选择收获地址</text></view><view class="item arrow sk-pseudo sk-pseudo-circle"><text class="label sk-transparent sk-text-14-2857-847 sk-text">服务</text><text class="text ellipsis sk-transparent sk-text-14-2857-959 sk-text">无忧退 快速退款 免费包邮</text></view></view></view><view is="node-modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup" class="r r"></view><view class="detail detail panel panel"><view class="title title"><text class="sk-transparent sk-text-0-0000-548 sk-text">详情</text></view><view class="content content"><view class="properties properties"><view class="item item"><text class="label sk-transparent sk-text-25-0000-324 sk-text">品名</text><text class="value sk-transparent sk-text-25-0000-661 sk-text">梅乃宿梅酒</text></view></view></view></view></scroll-view><view class="toolbar toolbar" style="padding-bottom: 34px"><view class="icons icons"><button class="icons-button sk-transparent sk-button sk-pseudo sk-pseudo-circle"><text class="icon-heart sk-pseudo sk-pseudo-circle"></text>收藏</button><buttonclass="icons-button sk-transparent sk-button sk-pseudo sk-pseudo-circle"open-type="contact"><text class="icon-handset sk-pseudo sk-pseudo-circle"></text>客服</button><navigator class="icons-button sk-transparent" open-type="switchTab"><text class="icon-cart sk-pseudo sk-pseudo-circle"></text>购物车</navigator></view><view class="buttons buttons"><viewclass="addcart sk-transparent sk-text-32-9268-309 sk-text"style="background-position-x: 50%">加入购物车</view><viewclass="buynow sk-transparent sk-text-32-9268-304 sk-text"style="background-position-x: 50%">立即购买</view></view></view></view>
</template><style setup>
.sk-transparent {color: transparent !important;
}.sk-opacity {opacity: 0 !important;
}.sk-text-14-2857-813 {background-image: linear-gradient(transparent 14.2857%,#eeeeee 0%,#eeeeee 85.7143%,transparent 0%) !important;background-size: 100% 78.1395rpx;position: relative !important;
}.sk-text {background-origin: content-box !important;background-clip: content-box !important;background-color: transparent !important;color: transparent !important;background-repeat: repeat-y !important;
}.sk-text-14-2857-290 {background-image: linear-gradient(transparent 14.2857%,#eeeeee 0%,#eeeeee 85.7143%,transparent 0%) !important;background-size: 100% 43.9535rpx;position: relative !important;
}.sk-text-0-0000-205 {background-image: linear-gradient(transparent 0%,#eeeeee 0%,#eeeeee 100%,transparent 0%) !important;background-size: 100% 22.6744rpx;position: relative !important;
}.sk-text-14-2857-92 {background-image: linear-gradient(transparent 14.2857%,#eeeeee 0%,#eeeeee 85.7143%,transparent 0%) !important;background-size: 100% 34.186rpx;position: relative !important;
}.sk-text-14-2857-598 {background-image: linear-gradient(transparent 14.2857%,#eeeeee 0%,#eeeeee 85.7143%,transparent 0%) !important;background-size: 100% 34.186rpx;position: relative !important;
}.sk-text-14-2857-857 {background-image: linear-gradient(transparent 14.2857%,#eeeeee 0%,#eeeeee 85.7143%,transparent 0%) !important;background-size: 100% 34.186rpx;position: relative !important;
}.sk-text-14-2857-937 {background-image: linear-gradient(transparent 14.2857%,#eeeeee 0%,#eeeeee 85.7143%,transparent 0%) !important;background-size: 100% 34.186rpx;position: relative !important;
}.sk-text-14-2857-847 {background-image: linear-gradient(transparent 14.2857%,#eeeeee 0%,#eeeeee 85.7143%,transparent 0%) !important;background-size: 100% 34.186rpx;position: relative !important;
}.sk-text-14-2857-959 {background-image: linear-gradient(transparent 14.2857%,#eeeeee 0%,#eeeeee 85.7143%,transparent 0%) !important;background-size: 100% 34.186rpx;position: relative !important;
}.sk-text-0-0000-548 {background-image: linear-gradient(transparent 0%,#eeeeee 0%,#eeeeee 100%,transparent 0%) !important;background-size: 100% 27.907rpx;position: relative !important;
}.sk-text-25-0000-324 {background-image: linear-gradient(transparent 25%,#eeeeee 0%,#eeeeee 75%,transparent 0%) !important;background-size: 100% 48.8372rpx;position: relative !important;
}.sk-text-25-0000-661 {background-image: linear-gradient(transparent 25%,#eeeeee 0%,#eeeeee 75%,transparent 0%) !important;background-size: 100% 48.8372rpx;position: relative !important;
}.sk-text-32-9268-309 {background-image: linear-gradient(transparent 32.9268%,#eeeeee 0%,#eeeeee 67.0732%,transparent 0%) !important;background-size: 100% 71.5116rpx;position: relative !important;
}.sk-text-32-9268-304 {background-image: linear-gradient(transparent 32.9268%,#eeeeee 0%,#eeeeee 67.0732%,transparent 0%) !important;background-size: 100% 71.5116rpx;position: relative !important;
}.sk-button {color: #efefef !important;background: #efefef !important;border: none !important;box-shadow: none !important;
}.sk-image {background: #efefef !important;
}.sk-pseudo::before,
.sk-pseudo::after {background: #efefef !important;background-image: none !important;color: transparent !important;border-color: transparent !important;
}.sk-pseudo-rect::before,
.sk-pseudo-rect::after {border-radius: 0 !important;
}.sk-pseudo-circle::before,
.sk-pseudo-circle::after {border-radius: 50% !important;
}.sk-container {position: absolute;left: 0;top: 0;width: 100%;height: 100%;overflow: hidden;background-color: transparent;
}
</style>

服务面板

// ServicePanel.vue
<script setup lang="ts">
//const emit = defineEmits<{(even: 'close'): void
}>()
</script><template><view class="service-panel"><!-- 关闭按钮 --><text class="close icon-close" @tap="emit('close')"></text><!-- 标题 --><view class="title">服务说明</view><!-- 内容 --><view class="content"><view class="item"><view class="dt">无忧退货</view><view class="dd">自收到商品之日起30天内,可在线申请无忧退货服务(食品等特殊商品除外)</view></view><view class="item"><view class="dt">快速退款</view><view class="dd">收到退货包裹并确认无误后,将在48小时内办理退款,退款将原路返回,不同银行处理时间不同,预计1-5个工作日到账</view></view><view class="item"><view class="dt">满88元免邮费</view><view class="dd">单笔订单金额(不含运费)满88元可免邮费,不满88元, 单笔订单收取10元邮费</view></view></view></view>
</template><style lang="scss">
.service-panel {padding: 0 30rpx;border-radius: 10rpx 10rpx 0 0;position: relative;background-color: #fff;
}.title {line-height: 1;padding: 40rpx 0;text-align: center;font-size: 32rpx;font-weight: normal;border-bottom: 1rpx solid #ddd;color: #444;
}.close {position: absolute;right: 24rpx;top: 24rpx;
}.content {padding: 20rpx 20rpx 100rpx 20rpx;.item {margin-top: 20rpx;}.dt {margin-bottom: 10rpx;font-size: 28rpx;color: #333;font-weight: 500;position: relative;&::before {content: '';width: 10rpx;height: 10rpx;border-radius: 50%;background-color: #eaeaea;transform: translateY(-50%);position: absolute;top: 50%;left: -20rpx;}}.dd {line-height: 1.6;font-size: 26rpx;color: #999;}
}
</style>

地址面板

// AddressPanel.vue
<script setup lang="ts">
import { onLoad } from '@dcloudio/uni-app'
import { ref } from 'vue'const emit = defineEmits<{(even: 'close'): void
}>()//高亮的选项
const activeIndex = ref(0)onLoad(() => {})
</script><template><view class="address-panel"><!-- 关闭按钮 --><text class="close icon-close" @tap="emit('close')"></text><!-- 标题 --><view class="title">配送至</view><!-- 内容 --><view class="content"><view class="item" v-for="addr in 3" :key="addr"><view class="user">李明 13824686868</view><view class="address">北京市顺义区后沙峪地区安平北街6号院</view><text class="icon icon-checked"></text></view></view><view class="footer"><view class="button primary"> 新建地址 </view><view v-if="false" class="button primary">确定</view></view></view>
</template><style lang="scss">
.address-panel {padding: 0 30rpx;border-radius: 10rpx 10rpx 0 0;position: relative;background-color: #fff;
}.title {line-height: 1;padding: 40rpx 0;text-align: center;font-size: 32rpx;font-weight: normal;border-bottom: 1rpx solid #ddd;color: #444;
}.close {position: absolute;right: 24rpx;top: 24rpx;
}.content {min-height: 300rpx;max-height: 540rpx;overflow: auto;padding: 20rpx;.item {padding: 30rpx 50rpx 30rpx 60rpx;background-size: 40rpx;background-repeat: no-repeat;background-position: 0 center;background-image: url(https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/images/locate.png);position: relative;}.icon {color: #999;font-size: 40rpx;transform: translateY(-50%);position: absolute;top: 50%;right: 0;}.icon-checked {color: #27ba9b;}.icon-ring {color: #444;}.user {font-size: 28rpx;color: #444;font-weight: 500;}.address {font-size: 26rpx;color: #666;}
}.footer {display: flex;justify-content: space-between;padding: 20rpx 0 40rpx;font-size: 28rpx;color: #444;.button {flex: 1;height: 72rpx;text-align: center;line-height: 72rpx;margin: 0 20rpx;color: #fff;border-radius: 72rpx;}.primary {color: #fff;background-color: #27ba9b;}.secondary {background-color: #ffa868;}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频素材库哪家好?我给大家来分享

视频素材库哪家好&#xff1f;这是很多短视频创作者都会遇到的问题。别着急&#xff0c;今天我就来给大家介绍几个视频素材库哪家好的推荐&#xff0c;让你的视频创作更加轻松有趣&#xff01; 视频素材库哪家好的首选当然是蛙学网啦&#xff01;这里有大量的高质量视频素材&am…

学成在线_视频处理_视频转码不成功

问题 当我们用xxljob进行视频处理中的转码操作时会发现视频转码不成功。即程序会进入下图所示的if语句内。 问题原因 在进行视频转码时程序会调用Mp4VideoUtil类下的 generateMp4方法&#xff0c;而result接收的正是该方法的返回值。那么什么时候generateMp4方法的返回值会…

基于转录组计算的肿瘤纯度与病理肿瘤纯度一致性差异

实体瘤组织由肿瘤和非肿瘤细胞组成&#xff0c;如基质细胞和免疫细胞。这些非肿瘤细胞构成肿瘤微环境&#xff08;TME&#xff09;的重要组成部分&#xff0c;可降低肿瘤纯度&#xff0c;并在癌变、恶性肿瘤进展、治疗耐药性和预后评估中发挥重要作用。 肿瘤间质比的预后影响 …

【数据结构】直接插入排序

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解插入排序&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 基本思想二. 插入排序详解&#xff08;以升序为例&#xff09;三. 对比冒泡排序 一. 基本…

Mysql数据库的SQL语言详解

目录 一、数据库的基础操作 1、数据库的基本查看和切换 1.1 查看数据库信息 1.2 切换数据库 1.3 查看数据库中的表信息 1.4 查看数据库或数据库中表的结构&#xff08;字段&#xff09; 1.5 数据类型 1.5.1 整数型 1.5.2 浮点型(float和double) 1.5.3 定点数 1.5.4…

Rust无法流行起来

Rust 据说是最安全的编程语言. 今天简单学习了一下,感觉并不是那么的容易接受. 根据我的经验, 凡是复杂的东西, 必然很难推广. 从设计上来说确实是挺安全的, 考虑的很多 . 但是我感觉Rust 编译器强制让程序员注意变量作用域的范围. 引入了很多奇奇怪怪的限制. 增加了思考的维度…

134. 加油站(力扣LeetCode)

文章目录 134. 加油站暴力枚举&#xff08;超时&#xff09;代码一代码二&#xff08;优化&#xff09; 贪心算法方法一方法二 134. 加油站 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加…

Vue箭头函数还原为匿名函数示例

screenResult.serviceType serviceTypeOptions.filter((item) > item.code serviceType.value)[0].value;下面是将箭头函数还原为普通函数的过程&#xff1a; screenResult.serviceType serviceTypeOptions.filter(function(item) {return item.code serviceType.value…

ng发布静态资源 发布项目 发布数据

描述&#xff1a;把一个项目或者数据发布出来&#xff0c;通过http的形式访问&#xff0c;比如发布一个js文件&#xff0c;用http://localhost:6060/data/jquery/jquery.min.js访问。 步骤&#xff1a;配置nginx.conf文件&#xff0c;nginx.conf位于conf目录下&#xff0c;在se…

ROS机器人虚拟仿真挑战赛本地电脑环境配置测试

预备基础 此案例需要完成&#xff1a; ROS机器人虚拟仿真挑战赛本地电脑环境配置记录-CSDN博客 ROS机器人虚拟仿真挑战赛本地电脑环境配置个人问题汇总-CSDN博客 命令测试 在不同的终端窗口分别输入&#xff1a; 标签1&#xff1a; roslaunch tianracer_gazebo demo_tian…

分享|大数据信用风险测评多久做一次比较好?

大数据信用风险测评多久做一次比较好?对于个人大数据信用风险测评&#xff0c;一般来说&#xff0c;多久做一次并没有固定的时间间隔。这取决于许多因素&#xff0c;包括个人信用状况、数据更新频率、个人需求等等。 首先&#xff0c;个人的信用状况是决定测评频率的一个重要因…

成都百洲文化传媒有限公司电商新浪潮的领航者

在当今电商行业风起云涌的时代&#xff0c;成都百洲文化传媒有限公司以其独特的视角和专业的服务&#xff0c;成为了众多商家争相合作的伙伴。今天&#xff0c;就让我们一起走进百洲文化的世界&#xff0c;探索其背后的成功密码。 一、百洲文化的崛起之路 成都百洲文化传媒有限…

各类主流电商API商品采集接口的权限控制和功能权限控制

主流电商平台的API接口类型 参数说明 通用参数说明 url说明 /平台/API类型/ 平台&#xff1a;淘宝&#xff0c;京东等&#xff0c; API类型:[item_search,item_get,item_search_shop等]version:API版本key:调用key,测试key:test_api_keysecret:调用secret,测试secret:(不用填写…

Unity定时播放音乐

一、需求 需要定时在早上8:50&#xff0c;中午12:00&#xff0c;下午13:10定时播放音乐 二、实现步骤 依次在unity创建背景图、主文字提示、时间文字提示、音量控制器及音量文字提示、退出按钮、播放按钮&#xff0c;暂停按钮 在Canvas下创建一个Script脚本&#xff1a;获取…

【光标精灵】让您享受鼠标皮肤多样化快捷更换

鼠标作为我们日常使用频率最高的“小伙伴”&#xff0c;扮演着至关重要的角色。尤其是在女生群体中&#xff0c;对于打造一个个性化、可爱的电脑桌面和软件界面的需求日益增长。然而&#xff0c;尽管电脑默认提供了一些可更换的光标图案&#xff0c;但仍显得有些单调和呆板。想…

acwing算法提高之搜索--剪枝

目录 1 介绍2 训练 1 介绍 本专题用来记录使用dfs剪枝技巧求解的题目。 剪枝有以下思路&#xff1a; 优化搜索顺序。可行性剪枝。最优性剪枝。唯一性剪枝&#xff0c;也叫去除冗余。记忆化搜索&#xff0c;也叫dp。 2 训练 题目1&#xff1a;165小猫爬山 C代码如下&#…

基于SpringBoot 实现指标监控及日志管理

添加Actuator功能 Spring Boot Actuator可以帮助程序员监控和管理SpringBoot应用&#xff0c;比如健康检查、内存使用情况统计、线程使用情况统计等。我们在SpringBoot项目中添加Actuator功能&#xff0c;即可使用Actuator监控 项目&#xff0c;用法如下&#xff1a; 在被监…

从Spring进化为SpringBoot

目录 零.SpringBootApplication 一.起步依赖 二.自动配置 三.自动配置的原理 1.装配常见方案 【1】方案1&#xff1a;ComponentScan 组件扫描 【2】方案2&#xff1a;Import 导入 【3】使用第三方依赖提供的 EnableXxxxx注解 2.自动装配原理 3.实现starter 四.内置T…

olap分析型数据库

一、 1、clickhouse 特点&#xff1a; 分析型数据库 列式数据管理 高压缩率 不适用场景&#xff1a; 不适合联机事务处理 不支持更新删除单条记录 多表连接查询效率低 为什么这么快&#xff1a; 分区健、主键预排序、索引 压缩&#xff0c;减少I/O 向量化&#xff…

虚拟直播赋能文旅,蓝海创意云亮相文旅虚拟现实应用推广交流活动

3月21日&#xff0c;由文化和旅游部产业发展司主办&#xff0c;中国信息通信研究院、北京市石景山区文化和旅游局、中国动漫集团有限公司承办的文化和旅游虚拟现实应用推广交流活动在首钢一高炉SoReal科幻乐园33 Meta Club举办。蓝海创意云应邀参与此次活动&#xff0c;携vLive…