
小天管理 发表的所有内容
-
[前端开发] 在 Vue3 中如何实现四种全局状态数据的统一管理?
四种全局状态数据 在实际开发当中,会遇到四种全局状态数据:异步数据(一般来自服务端)、同步数据。同步数据又分为三种:localstorage、cookie、内存。在传统的 Vue3 当中,分别采用不同的机制来处理这些状态数据,而在 Zova 中只需要采用统一的Model机制 状态数据 传统的 Vue3 Zova 异步数据 Pinia Model localstorage Pinia + Localstorage Model cookie Pinia + Cookie Model 内存 Pinia Model 采用 Model 机制统一管理这些全局状态数据,就可以提供一些通用的系统能力,比如,内存优化、持久化和SSR 支持等等,从而规范数据使用方式,简化代码结构,提升代码的可维护性 特性 1. 支持异步数据和同步数据 Zova Model 的基座是TanStack Query。TanStack Query 提供了强大的数据获取、缓存和更新能力。如果你没有使用过类似 TanStack Query 的数据管理机制,那么强烈建议了解一下,相信你一定会受到思想的洗礼 但是,TanStack Query 的核心是对异步数据(一般来自服务端)进行管理。Zova Model 在 TanStack Query 的基础上做了扩展,因此也支持同步数据的管理。换而言之,以下所述所有特性和能力同时适用于异步数据和同步数据 特性 2. 自动缓存 对获取的异步数据进行本地缓存,避免重复获取。对于同步数据,会自动针对 localstorage 或者 cookie 进行读写操作 特性 3. 自动更新 提供数据过期策略,在合适的时机自动更新 特性 4. 减少重复请求 在程序的多个地方同时访问数据,将只调用一次服务端 api 。如果是同步数据,也只针对 localstorage 或者 cookie 调用一次操作 特性 5. 内存优化 通过 Zova Model 管理的数据,虽然是全局范围的状态,但是并不总是占用内存,而是提供了内存释放与回收的机制。具体而言,就是在创建 Vue 组件实例时根据业务的需要创建缓存数据,当 Vue 组件实例卸载时释放对缓存数据的引用,到达约定的过期时间如果仍然没有其他 Vue 组件引用,就会触发回收机制(GC),完成对内存的释放,从而节约内存占用。这对于大型项目,用户需要长时间进行界面交互的场景,具有显著的好处 特性 6. 持久化 本地缓存可以持久化,当页面刷新时可以自动恢复,避免服务端调用。如果是异步数据,就会自动持久化到 IndexDB 中,从而满足大数据量的存储需要。如果是同步数据,就会自动持久化到 localstorage 或者 cookie 内存优化与持久化配合发挥作用,对于大型项目效果更佳明显。比如,第一次从服务端获取的数据,会生成本地缓存,并自动持久化。当页面不再使用并且过期时,会自动销毁本地缓存,从而释放内存。当再次访问该数据时,会自动从持久化中恢复本地缓存数据,而不是再次从服务端获取数据 特性 7. SSR 支持 不同类型的状态数据,在 SSR 模式下也会有不同的实现机制。Zova Model 把这些状态数据的差异进行抹平,并且采用统一的机制进行水合,从而让 SSR 的实现更加自然、直观,显著降低了心智负担 特性 8. 自动命名空间隔离 Zova 通过 Model Bean 来管理数据。而 Bean 本身有唯一的标识,可以作为数据的命名空间,从而自动保证了 Bean 内部状态数据命名的唯一性,避免数据冲突 参见:Bean 标识 如何创建一个 Model Bean Zova 提供了 VS Code 插件,通过右键菜单可以非常便利的创建一个 Model Bean 右键菜单 - [模块路径]: Zova Create/Bean: Model 依据提示输入 model bean 的名称,比如todo,VSCode 插件会自动添加 model bean 的代码骨架 比如,在 demo-todo 模块中创建一个 Model Bean todo demo-todo/src/bean/model.todo.ts import { Model } from 'zova'; import { BeanModelBase } from 'zova-module-a-model'; @Model() export class ModelTodo extends BeanModelBase {} 使用 @Model 装饰器 继承自基类 BeanModelBase 异步数据 TanStack Query 的核心是对服务端数据进行管理。为简化起见,这里仅展示 select 方法的定义与使用: 完整代码示例,请参见:demo-todo 如何定义 @Model() export class ModelTodo { select() { return this.$useQueryExisting({ queryKey: ['select'], queryFn: async () => { return this.scope.service.todo.select(); }, }); } } 调用$useQueryExisting 创建 Query 对象 为何不使用$useQuery方法?因为异步数据一般是在需要时才进行异步加载。因此我们需要确保在多次调用select方法时始终返回同一个 Query 对象,所以必须使用$useQueryExisting方法 传入 queryKey ,确保本地缓存的唯一性 传入 queryFn ,在合适的时机调用此函数获取服务端数据 service.todo.select:参见Api 服务 如何使用 demo-todo/src/page/todo/controller.ts import { ModelTodo } from '../../bean/model.todo.js'; export class ControllerPageTodo { @Use() $$modelTodo: ModelTodo; } 注入 Model Bean 实例:$$modelTodo demo-todo/src/page/todo/render.tsx export class RenderTodo { render() { const todos = this.$$modelTodo.select(); return ( <div> <div>isLoading: {todos.isLoading}</div> <div> {todos.data?.map(item => { return <div>{item.title}</div>; })} </div> </div> ); } } 调用 select 方法获取 Query 对象 render 方法会多次执行,重复调用 select 方法返回的是同一个 Query 对象 直接使用 Query 对象中的状态和数据 参见:TanStack Query: Queries 如何支持 SSR 在 SSR 模式下,我们需要这样使用异步数据:在服务端加载状态数据,然后通过 render 方法渲染成 html 字符串。状态数据和 html 字符串会同时发送到客户端,客户端在进行水合时仍然使用此相同的状态数据,从而保持状态的一致性 要实现以上逻辑,在 Zova Model 中只需要执行一个步骤: demo-todo/src/page/todo/controller.ts import { ModelTodo } from '../../bean/model.todo.js'; export class ControllerPageTodo { @Use() $$modelTodo: ModelTodo; protected async __init__() { const queryTodos = this.$$modelTodo.select(); await queryTodos.suspense(); if (queryTodos.error) throw queryTodos.error; } } 只需要在__init__方法中调用suspense等待异步数据加载完成 同步数据: localstorage 由于服务端不支持window.localStorage,因此 localstorage 状态数据不参与 SSR 的水合过程 下面演示把用户信息存入 localstorage ,当页面刷新时也会保持状态 如何定义 export class ModelUser extends BeanModelBase { user?: ServiceUserEntity; protected async __init__() { this.user = this.$useQueryLocal({ queryKey: ['user'], }); } } 与异步数据定义不同,同步数据直接在初始化方法__init__中定义 调用$useQueryLocal 创建 Query 对象 传入 queryKey ,确保本地缓存的唯一性 如何使用 直接像常规变量一样读取和设置数据 const user = this.user; this.user = newUser; 同步数据: cookie 在服务端会自动使用Request Header中的 Cookies ,在客户端会自动使用document.cookie,因此会自动保证 SSR 水合过程中 cookie 状态数据的一致性 下面演示把用户 Token 存入 cookie ,当页面刷新时也会保持状态。这样,在 SSR 模式下,客户端和服务端都可以使用相同的jwt token访问后端 API 服务 如何定义 export class ModelUser extends BeanModelBase { token?: string; protected async __init__() { this.token = this.$useQueryCookie({ queryKey: ['token'], }); } } 与异步数据定义不同,同步数据直接在初始化方法__init__中定义 调用$useQueryCookie 创建 Query 对象 传入 queryKey ,确保本地缓存的唯一性 如何使用 直接像常规变量一样读取和设置数据 const token = this.token; this.token = newToken; 同步数据: 内存 在 SSR 模式下,服务端定义的全局状态数据会同步到客户端,并自动完成水合 下面演示基于内存的全局状态数据 如何定义 zova-ui-quasar/src/suite-vendor/a-quasar/modules/quasar-adapter/src/bean/model.theme.ts export class ModelTheme extends BeanModelBase { cBrand: string; protected async __init__() { this.cBrand = this.$useQueryMem({ queryKey: ['cBrand'], }); } } 与异步数据定义不同,同步数据直接在初始化方法__init__中定义 调用$useQueryMem 创建 Query 对象 传入 queryKey ,确保本地缓存的唯一性 如何使用 直接像常规变量一样读取和设置数据 const cBrand = this.cBrand; this.cBrand = newValue; 结语 Zova 是一款支持 IOC 容器的 Vue3 框架,在代码风格上结合了 Vue/React/Angular 的优点,同时规避他们的缺点,让我们的开发体验更加优雅,减轻心智负担。Zova 已经内置了大量实用、有趣的功能特性,Model 机制仅仅是其中一个 Zova 框架已经开源,欢迎关注,参与共建:https://github.com/cabloy/zova。可添加我的微信,入群交流:yangjian2025
-
[程序员] 有没有推荐的基于 Element-Plus 的好用的二封 table 组件?
主要用于后台管理系统的快速实现 CRUD ,想要一个封装了 Table+Form+Dialog 组和在一起的组件。传入配置直接使用。有什么值得推荐的吗?
- [问与答] 求推荐一个小厨宝
-
[VPS] 国内(大陆地区)有无价格便宜一点的这种 VPS(详见主题内容)
套路云,良心云,还是别的什么云,都无所谓,基本上是作为家宽的内网穿透(虽然现在有 natter 打洞,但是担心不太稳定,V6 在外面没有稳定的连接环境)。手头倒是有一台良心云香港轻量,就传家宝 24 块那个,完美符合下面需求,唯一担心的事这玩意是过墙的,有点顾忌 需求是: 双栈最好,单 v4 也行,不能是单 V6 速度最好是 20Mbps 或以上,可以限制月流量,100G 都足够了 不要求 80/443 ,不要求过备案,不要求太高磁盘 IO 等因素 有单独 IP 最好,NAT 也行 或者最近一些国内各大云厂商有没有学生优惠什么的?我受够了手头那台 3Mbps 套路云学生机了 蟹蟹
-
[问与答] 目前研二,想换导师还来得及吗?
我最初是被录取到学校的分校区了,当时给一个大导师发邮件,大导师说他名额满了,就让我挂在本部的一个小导师名下,在分校区还是大导师带我。我们是小导师第一届自己带的学生,他之前都是跟大导师一个课题组,帮大导师带带学生,去年刚有了独自带学生的资格。我研一在分校区度过,因为那时候要上课,跟小导师也几乎没有交流。 但是研二开学前夕,小导师说要我们来本部学习一年,他带我们写毕业论文。来着一个半月了,每天都是帮他做项目,一点技术含量也没有,纯粹浪费时间,而且每个月只发五百块钱工资。小导师在本部有两个学生,我平时和他们一起做项目,一起的还有分校区的另一个同学,总共四个人。四个人一起干活,但是发工资的时候却区别对待,本部的两个学生不仅发工资比我们多,而且发的次数也比我们分校区的多。小导师还天天对我们吆五喝六的,言谈举止间都能看出他对本部两个学生的更偏心,我们跟他也才呆了一个多月,我也理解他,但感觉偏心也太明显了吧。最让我难受的是小导师不让去实习,而大导师反道不管,因为小导师今年刚成预聘副教授,他得做项目来晋升。跟小导师吃饭间听他对找工作的看法,不知道他是真不知道现在的就业情况,还是装傻让我们安心给他干活,他一致认为实习对找工作没用处,好好干项目对找工作才重要。我另外三个同门对他的话深信不疑,任劳任怨的干活。 大导师和小导师两个人的方向不同,大导师学生的研究方向并不是都和大导师的研究方向相同,他手下的一部分学生的毕业论文也是要小导师带。我现在想的是如果我要换导师,就不能在大导师这个组里了,要不然我的研究方向最后还是归小导师带。 各位老哥,谁有这方面的经验啊,给弟弟支个招吧
- [Apple] macOS15 摸鱼功能
-
[服务器] 有没有与 itdog.cn 类似服务的 CLI 版本?
服务器 IP 几乎几天就会被 GFW 屏蔽,很是让人恼怒。 有没有一种服务,可以主动 CLI 检测某个 IP 是否被 GFW 屏蔽呢?想通过此工具主动检测,如果发现被屏蔽就自动运行换 IP 脚本并同步到 DNS 。
-
[程序员] 后悔学双拼了
后悔使用双拼 先叠个甲,练习时长一年多,可能是我使用的方式有问题吧。 理由如下: 会非常吃手感,我状态好的时候打字确实比全拼快,但是状态差的时候,打字会比全拼慢很多很多(这一点可能是我自己的感触) 遇到一些不经常打的字,我会思考这个字怎么打 学习成本,我似乎是经历了很长时间才打得比较快,而且这个比较快相对于我之前的全拼速度而言算是慢很多的 打人名的时候不能用缩写,这一点我没找好办法,目前用微信输入法的常用语解决 全拼直接淡忘,在别人的机器上打字有点尴尬
-
[问与答] 无解的婆媳关系,还没结婚就开始了
今年 29 了,女朋友小我一岁,已经在一起五六年了 都是农村普通家庭,我女朋友有个弟弟,因为小的时候他姥姥带,应该是比较叛逆,从小学就开始逃课,然后小学没毕业就不上学了,今年二十了 不认识字. 这些算是前提吧 我女朋友之前一直没有见过我爸妈,但是我爸妈一直都不太愿意我们两个的事情,主要就是因为她弟弟 觉得现在两个人自己生活都压力大,她弟弟以后是个累赘. 还有就是我爸妈有点嫌弃我女朋友个子低,没见过面但是知道.心里一直不愿意,总是会偶尔在我面前提这件事情 这次国庆节回去我女朋友去了我家见了我爸妈,然后我妈见了之后就不同意我俩这件事情,嫌她不仅低还很瘦小,显得像是个小孩, 她 155 40KG,我 185,站在一起就很明显. 我妈就看不上我女朋友,说着说着就哭很生气. 在家劝了好久 也吵过好几次. 国庆节就提前走了, 这两天我姐跟我打电话说我妈现在天天在家气的不行,血压本来就高,现在就是想让我分了 之前家里就不愿意,但是觉得是我自己的决定 就说服自己尽量不干预,也算是默认了,但是这次见了面,算是彻底反悔了,坚决不同意这件事情 我女朋友也对我很好,已经在一起好几年了,还没开始婆媳关系,现在已经两个人都不待见对方了,两边都在劝,是在是不知道该怎么办了 跟女朋友这边讲:以后回老家我一个人回,她不回.以后他们不见面. 然后我女朋友要求 结婚彩礼三金这些钱必须由我爸妈出,不然本来我们两个计划用来买房的钱,如果他们不出就得自己出了. 这我实在是没办法张嘴, 本来他们就不愿意,这还让他们出彩礼和婚礼的钱 ......
-
[投资] 房贷能降 95BP,算是给了点小安慰,普调到 LPR-30BP 了
从 4.5 降到 3.55 ,之前是 LPR+30=4.5 ,还没到重定价日,下个月刚刚好一起降了
-
[分享创造] 一款提升工作效率的亚马逊商品信息抓取插件推荐
大家好!👋 最近在做亚马逊联盟营销的小伙伴们,应该都有一个共同的烦恼,那就是如何快速抓取大量商品信息,并且高效地导出推广链接用于 SEO 或者社媒推广。为了简化这个过程,我想给大家推荐一款刚发布不久的插件 —— Amazon Product Scraper ,这是我身边一个做独立站的朋友开发的,已经在实战中帮我们省了不少时间。 https://chromewebstore.google.com/detail/amazon-product-scraper/ogfogfdkacdklhgpmgbmapeljcbibial?authuser=0&hl=en 这款插件能解决什么问题? 我们在做亚马逊联盟时,通常需要通过关键词搜索大量商品信息,然后一一点击商品页面,获取标题、价格、商品详情、图片链接,再手动生成推广链接。这种重复操作不仅耗时,而且非常枯燥,特别是当你需要抓取上万条商品数据的时候,手动操作几乎不可行。 这款插件解决的正是这个痛点。它可以根据输入的关键词自动抓取亚马逊商品信息,包括: • 商品标题 • 价格 • 商品详情 • 图片 URL • 商品链接 最棒的是,它还支持批量导出这些数据到 Excel 友好的 CSV 文件,并且允许你提前输入亚马逊联盟的推广 ID ,在导出商品链接时自动生成你的专属推广链接。 插件的功能特点: 1. 关键词搜索:通过输入关键词,快速筛选相关商品。 2. 自动抓取数据:一键获取商品标题、价格、图片和详情,无需手动点击商品页面。 3. 推广链接生成:支持预先定义你的 Amazon Affiliate ID ,导出时自动添加到商品链接中,方便追踪佣金。 4. 数据导出:支持将抓取的数据导出为 CSV 文件,方便进行后续处理或分析。 使用场景举例 假设你有一个网站需要针对 1000 个关键词创建页面,每个页面需要 30-50 个商品推荐。那你就需要抓取 3-5 万条商品信息。手动完成这项工作不仅耗时,还容易出错。而这款插件可以让你快速自动化这个流程,几乎是拯救了无数时间。 有兴趣的朋友可以去 Chrome Web Store 下载试试。如果大家有更好的建议,或者使用过程中的问题,欢迎在评论区讨论!🙏
-
[git] git 合并文件的冲突理解
请教一下 git 冲突的原理 我的操作 github 上建了一个分支 在修改好文件后,当前目录 init 了一个仓库 gitub push 之后,报出存在冲突,提示要远程的分支已经有文件( readme 做了很多尝试,包括合并了冲突到 git pull 至 update branch 无果 最后 git push -f 同事说标准化操作必须是,要本地建文件或者空文件先 clone 或者 pull 这是 git 固定的工作流,还是说是有 SHA-1 的对应关系在里面。总感觉光这点跟 SVN 的差别不大
-
[问与答] 套壳 tts 浏览器
想给半文盲的老人做个套壳浏览器,tts 语音播放时能有高亮的进度, 谁知道有哪家的 API 有进度/对应字符的相关 API 吗? 有哪家的 API 可以手动微调多音字的?
-
[程序员] 吐槽 Python 的 *args, **kwargs
接手一个数据拷贝的任务,在老代码里看到大量 def xxx_fn(*args, **kwargs) 真的血压升高。 这两兄弟里面“什么都有,又什么都没有“,反正全靠猜。 没有注释,就算有注释,随时时间迁移也未必准确。 从最外层到最内层,每一层都有可能往 kwargs 里塞参数或者 pop 参数。 这样的代码心智负担大,理解起来效率低。 这种写法一点也不酷,真的要慎重是用。另外要吐槽,python 社区还有大量这种库(包括官方自带的库),不过幸好质量好一点库都有参数注释,而且(应该是)有持续维护。 我也在思考,为什么各类语言要有那么多酷炫无比的特性?我认为,这些特性大部分是为基础库服务的。上层逻辑代码乱用这种特性,只会给自己找麻烦。 一下省略 “*args, **kwargs“ 个字
-
[生活] 当下这个时间点,大家有没有什么提升生活品质的东西可以购买?
比如最近有什么产品价格非常好,什么东西你刚买觉得非常值得,甚至有后悔买晚了的感觉
-
[程序员] yandex 家庭模式过滤 18+内容,怎么关掉?
如题,现在不让换成 No filter 提示 Changing this setting isn't possible for your account
-
[问与答] 有开极越 01 的兄弟嘛?
要买新车了,最近在看车看到极越这个牌子,想问问这车开下来感觉咋样?预算在 35w 左右,大家也可以推荐一下
-
[阅读] 抽空搭建了一个简单的小说书评网站,包括后宫、穿越等题材
由于本人以前空闲时间会看看小说,经常想先看看小说的书评以及男女主角介绍,或者其他人的评论,所以搭建了这个简单的书评网站,里面的内容都是个人整理,主要来源是 B 站、百度贴吧、百度百科、百度知道、还有一些小说论坛中的书评,大家可以进行添加或者评论,互相交流, 小说网站: https://novelsnotes.com/
-
[分享发现] 国内运营商实体手机号变 esim 的方法
突然想到一个可以把国内移动运营商实体手机号变成 esim 的办法,由于没有测试条件,所以不保证可用,有条件的大佬可以试试。 办法就是:使用 encmobile 的 esim 卡号,然后开通“中美双号”服务。
-
[宽带症候群] 实测电信公网 IPv4 和 AWS 日本 IPv6 线路二选一
电信宽带,今天发现原来的公网 IPv4 掉了,打电话给客服,说可以改回来。 下午改回公网 IPv4 之后,发现 IPv6 访问 AWS 的延时从 55 涨到了 160 ,人都麻了。客服回访,然后告诉我会记录这个问题再上报一下。 没想到公网 IPv4 还能影响 IPv6 的延时。要是真的只能二选一,我真有点纠结保大保小了…… 虽然但是,还是要给电信客服好评。另外手机电信卡访问 AWS 日本的延时一直很低,非常好评。
-
[分享创造] [分享] 独立开发者的新尝试:免费在线图片分割工具
嗨, V2EX 社区的朋友们, 大家好,我是一名独立开发者,半年多来一直在尝试做海外网站。虽然已经开发了 6 、7 个项目,但老实说,一直没有得到理想的反馈。经过思考,我决定短期将精力集中在这个项目上 —— 这就是我今天想要跟大家分享的"图片分割器"( https://imagesplitter.vip/zh)。 这是一个在线工具,主要用于创建 Instagram 拼图效果,但其实用途远不止于此。开发这个工具的初衷,是希望能为内容创作者和设计师们提供一个简单 yet 强大的图片处理解决方案。 主要特点包括: 多种分割模式(行/列/自定义) 实时预览 灵活的下载选项( ZIP 打包或单独下载) 拖放上传 保持原图分辨率的高质量输出 响应式设计,适配各种设备 无需注册,直接使用 使用流程非常简单:上传图片、选择分割模式、预览效果、下载分割后的图片。除了社交媒体内容创作,它还可用于网页设计、创意拼贴项目和大尺寸图片打印等场景。 技术上,我使用了 React 和 TypeScript 开发,采用 HTML5 Canvas 处理图片,用 JSZip 实现打包下载功能。我还加入了简单的分析功能,希望能持续了解用户需求,不断改进产品。 这个工具完全免费,没有任何隐藏收费,也不需要注册。我始终相信,好的工具应该让每个人都能方便地使用。 作为一个还在摸索阶段的独立开发者,我深知这个工具可能还有很多不足之处。所以,我真诚地希望能得到各位的使用反馈和建议。无论是功能上的意见,还是使用中遇到的问题,我都会认真听取,努力改进。 感谢大家花时间了解我的项目。希望"图片分割器"能为你的工作带来一些便利,也期待能得到社区的支持和建议。让我们一起把创意变为现实!
- [问与答] 怎么写出产品级代码
-
[分享创造] 发布两个月 1.5w 下载 ,我是怎么做的
借题分享一下我做的 Windows 应用:Kite 待办 目前还未开始盈利,还在打磨阶段。 下面分享一下我经验: 你做的软件,要能让自己满意,能相对于市面上其它的软件有一部分的优势,不求各方面胜出,只求在一两个点上顺手好用。 当你的软件主体开发完成之后,还需要完成:安装包的构建、持续集成的配置、自动更新的验证、落地页的开发、意见收集渠道的搭建等一系列额外工作,准备好这些后,即可考虑公开发布。 一切准备就绪后,在各大平台上发布文章。重点关注访问量、评论,哪个平台多就侧重在哪个平台,直到搜索引擎收录,算是一个阶段。平台的列表参考:1000UserGuide 如果软件足够吸引人,会有一些公众号博主,主动给你写推文。当然你也可以付费推广。可以看到上图访问量突然增多,也就是有大博主给我写了一篇推文,让我充分认识到推广比开发更重要,所以不能闷着搞开发。 如果你也是一个独立开发者,手上有开发中或者成熟的项目,可以来交流分享一些技术或者经验。
-
[问与答] AI 制作电商图,有哪些好工具?试用了几个,觉得服务商的审美实在太糟糕
需求: 以服装平铺图作为素材,AI 生成模特上身图(模拟商拍图),用于电商平台展示在商品头图/详情页。 目前试用了美图的 AI 商拍、LinkFox 、灵图 AI ,各有各的缺点 美图: 整体观感效果最好,没有 AI 的油腻感,不存在穿模,但模特只能以有限的几个姿势/表情呈现,SKU 稍微多点就会露出破绽。 LinkFox: 效果较差,上身图对商品素材几乎没有任何光影处理,很惊讶这种程度竟然能出街商业化。并且模特素材的审美实在一言难尽。 灵图: 油画感明显,不太能拿去电商平台用。可能是为了突出立体感,生成的试穿图加了太多太多褶皱,对服装材质有过于负面的表现。 这三家的 AI 商拍( AI 试穿)功能,可选的 AI 模特的脸建模都太怪、太假了,男女老少全员都像从逆水寒手游里走出来的,完全没办法在电商场景下商用。感觉国内的 AI 服务商们在技术力之外,首先需要修正的是审美。 话说回来,不考虑本地自建,大家有满足场景、易用且效果好的 AI 服务推荐吗?
-
[程序员] 有没有可以分别加载:视频流,音频流 和 弹幕流的播放器;或则 是 分别加载 音视频 和 弹幕也行;
看比赛,我想看 A 直播间的高清画面; 看 B 直播间的弹幕; 有这样的工具 和 网站吗?