HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

每日互动(个推)CTO叶新江:AIGC时代,大模型推动数据要素商业化

ChatGPT在一夜之间火爆互联网,让AIGC受到世界范围内的高度关注。时至今日,AIGC热度持续高涨,各大互联网公司争相布局这一领域。日渐成熟的技术、显著的降本增效优势以及日益增长的市场需求等因素,已经推动AIGC成为互联网公司新一轮必争之地。
在近期举行的2023数据安全发展大会·数据智能安全与发展论坛上,每日互动(个推)CTO叶新江先生围绕AIGC时代下大模型给大数据企业带来的机遇与挑战进行了深入分享。

图:每日互动(个推)CTO叶新江在数据智能安全与发展论坛上分享AIGC话题

大模型将推动数据要素商业化
上世纪90年代开始,随着大规模集成电路、芯片技术的突破,个人电脑进入了千家万户。个人电脑能为大家所广泛使用,还有一个核心原因就是,操作系统的出现大大降低了人们操作电脑的难度。也有人将LLM基础下AIGC技术的突破看作是智能操作系统的迭代,认为其标志着多模态智能时代的来临。
犹如之前计算机、互联网的普及给整个人类社会带来巨大的生产和效率的提升,AIGC技术也将会改变人们工作、生活的范式,具有里程碑式的作用。它将整体提升人类的知识水平,而如何更好地使用各种“副驾驶”,将成为未来的竞争重心。实际上,在这样一个时代下,拓宽每个人的认知边界,“学问”(即“学习如何更好地问”)将成为更重要的能力。
对此,叶新江认为在VUCA时代,要突破生产效率,必须有新的能源或能量。而在数据要素市场,这个“能源+能量”就是“数据+智能”,即以数据要素结合人工智能为核心的多种技术的结合,从而能加速推动数据要素的商业化。
在数据智能领域,大模型可以以LLM作为核心思考能力,结合行业知识,来快速形成符合行业要求的解决方案,同时提升交互体验,提升智能化产品的开发效率。用户通过使用自然语言进行对话式交互,可以很方便地去加工和操作数据、理解和分解问题、构建和执行解决方案,智能化系统的使用门槛也因此大为降低。
叶新江做了一个生动的比喻,新出现的大模型相当于是一个全新的大脑,输出中枢能力,但它需要手和脚,才能和环境互动、反馈和优化,并完成各种具体的动作。每日互动从成立之初到现在,核心业务逻辑就是“DMP(Data-Machine-People)”,构成“数据积累-数据治理-数据应用”的业务闭环。每日互动以数据思维作为牵引,数据作为生产要素(D),通过大数据、云计算、机器学习等技术治理(M),以实际业务场景的应用为目标(P),实现和挖掘数据价值。通过每日互动打造的数据智能操作系统DiOS(Data Intelligence Operating System),可以把“大脑”的能力输给各行各业使用。

垂直领域更需要“可控大模型”
在AIGC技术中,大模型的训练离不开大规模数据的“投喂”。通过与行业知识结合,大模型能从海量的数据中提取出有价值的信息,为业务决策提供智能支持。然而在实际应用中,叶新江认为这不足以满足具体的业务场景需求,垂直行业更需要“可控大模型”。
叶新江分享,每日互动一直专注数据智能领域,通过充分挖掘数据要素价值来赋能产业。大模型目前缺乏对价值观的判断,每日互动推行的是可控大模型在垂直领域里的应用。比如,中国(温州)数安港为数据安全和应用搭建了一个“港湾”,在数安港的大数据联合计算平台上,多方数据得以进行安全的融合计算,在合规、受控的环境内完成可控的应用,支撑复杂的业务场景实现安全高效的智能应用,优质的垂直数据未来就能在这样的大模型上发挥更大的价值。
叶新江举了一个例子,交警部门非常重视如何把交通高危的事故,特别是事故伤亡率降下来,可控大模型就可以解决这个问题。每日互动和交警部门通过大数据联合计算,首先进行数据洞察,识别出高危人群的特征;然后通过识别出来的特征去建模,对人群进行评级,最后把80%的资源放在前20%的高危人群,进行重点宣教,从而把伤亡率真正降下来,对人民群众的生命和财产安全有很大的提升。

AIGC有序监管正在逐步推进
技术之热必须面对法律之冷。当我们寄希望于AIGC成为新的经济增长点的同时,不得不面对一些由此带来的法律问题:如何对海量的AIGC进行监管?如何平衡AIGC生产过程中的数据利用和个人权益保护?
对此,叶新江表示,“数据作为生产要素,是跟AI结合产生智能以后,才能够发挥其真正的价值。利用大模型需要充分挖掘数据模型的能力,在此意义上,数据安全是利用大模型时必须考虑的问题。数据安全包括保护数据受控使用方面的安全以及数据内容本身是否是真实的、安全的。”
叶新江提到,4月份国家网信办发布了首个国家AIGC监管文件《生成式人工智能服务管理办法(征求意见稿)》,它对AIGC的合法性及权利归属在法律层面做出了明确界定,能够极大程度上消除市场主体的顾虑,进一步推动数字化技术领域的长足发展。
数据和网络安全是我们国家的重要保障,对于AIGC技术的快速发展,目前很多国内外顶尖的专家其实也存在看法上的分歧。
叶新江认为,在看到技术先进性一面的同时,我们也需要关注其另外一面。对于数据智能行业来说,“为大多数人提供美好的服务”是一个可以遵循的价值取向,每日互动还是会积极地去深入了解大模型的能力,更好地使用它,为客户创造更多的价值。在积极拥抱新技术和新趋势的同时,每日互动也将积极和行业各方协作,在保障数据安全的前提下,推动行业的有序发展。

继续阅读 »

ChatGPT在一夜之间火爆互联网,让AIGC受到世界范围内的高度关注。时至今日,AIGC热度持续高涨,各大互联网公司争相布局这一领域。日渐成熟的技术、显著的降本增效优势以及日益增长的市场需求等因素,已经推动AIGC成为互联网公司新一轮必争之地。
在近期举行的2023数据安全发展大会·数据智能安全与发展论坛上,每日互动(个推)CTO叶新江先生围绕AIGC时代下大模型给大数据企业带来的机遇与挑战进行了深入分享。

图:每日互动(个推)CTO叶新江在数据智能安全与发展论坛上分享AIGC话题

大模型将推动数据要素商业化
上世纪90年代开始,随着大规模集成电路、芯片技术的突破,个人电脑进入了千家万户。个人电脑能为大家所广泛使用,还有一个核心原因就是,操作系统的出现大大降低了人们操作电脑的难度。也有人将LLM基础下AIGC技术的突破看作是智能操作系统的迭代,认为其标志着多模态智能时代的来临。
犹如之前计算机、互联网的普及给整个人类社会带来巨大的生产和效率的提升,AIGC技术也将会改变人们工作、生活的范式,具有里程碑式的作用。它将整体提升人类的知识水平,而如何更好地使用各种“副驾驶”,将成为未来的竞争重心。实际上,在这样一个时代下,拓宽每个人的认知边界,“学问”(即“学习如何更好地问”)将成为更重要的能力。
对此,叶新江认为在VUCA时代,要突破生产效率,必须有新的能源或能量。而在数据要素市场,这个“能源+能量”就是“数据+智能”,即以数据要素结合人工智能为核心的多种技术的结合,从而能加速推动数据要素的商业化。
在数据智能领域,大模型可以以LLM作为核心思考能力,结合行业知识,来快速形成符合行业要求的解决方案,同时提升交互体验,提升智能化产品的开发效率。用户通过使用自然语言进行对话式交互,可以很方便地去加工和操作数据、理解和分解问题、构建和执行解决方案,智能化系统的使用门槛也因此大为降低。
叶新江做了一个生动的比喻,新出现的大模型相当于是一个全新的大脑,输出中枢能力,但它需要手和脚,才能和环境互动、反馈和优化,并完成各种具体的动作。每日互动从成立之初到现在,核心业务逻辑就是“DMP(Data-Machine-People)”,构成“数据积累-数据治理-数据应用”的业务闭环。每日互动以数据思维作为牵引,数据作为生产要素(D),通过大数据、云计算、机器学习等技术治理(M),以实际业务场景的应用为目标(P),实现和挖掘数据价值。通过每日互动打造的数据智能操作系统DiOS(Data Intelligence Operating System),可以把“大脑”的能力输给各行各业使用。

垂直领域更需要“可控大模型”
在AIGC技术中,大模型的训练离不开大规模数据的“投喂”。通过与行业知识结合,大模型能从海量的数据中提取出有价值的信息,为业务决策提供智能支持。然而在实际应用中,叶新江认为这不足以满足具体的业务场景需求,垂直行业更需要“可控大模型”。
叶新江分享,每日互动一直专注数据智能领域,通过充分挖掘数据要素价值来赋能产业。大模型目前缺乏对价值观的判断,每日互动推行的是可控大模型在垂直领域里的应用。比如,中国(温州)数安港为数据安全和应用搭建了一个“港湾”,在数安港的大数据联合计算平台上,多方数据得以进行安全的融合计算,在合规、受控的环境内完成可控的应用,支撑复杂的业务场景实现安全高效的智能应用,优质的垂直数据未来就能在这样的大模型上发挥更大的价值。
叶新江举了一个例子,交警部门非常重视如何把交通高危的事故,特别是事故伤亡率降下来,可控大模型就可以解决这个问题。每日互动和交警部门通过大数据联合计算,首先进行数据洞察,识别出高危人群的特征;然后通过识别出来的特征去建模,对人群进行评级,最后把80%的资源放在前20%的高危人群,进行重点宣教,从而把伤亡率真正降下来,对人民群众的生命和财产安全有很大的提升。

AIGC有序监管正在逐步推进
技术之热必须面对法律之冷。当我们寄希望于AIGC成为新的经济增长点的同时,不得不面对一些由此带来的法律问题:如何对海量的AIGC进行监管?如何平衡AIGC生产过程中的数据利用和个人权益保护?
对此,叶新江表示,“数据作为生产要素,是跟AI结合产生智能以后,才能够发挥其真正的价值。利用大模型需要充分挖掘数据模型的能力,在此意义上,数据安全是利用大模型时必须考虑的问题。数据安全包括保护数据受控使用方面的安全以及数据内容本身是否是真实的、安全的。”
叶新江提到,4月份国家网信办发布了首个国家AIGC监管文件《生成式人工智能服务管理办法(征求意见稿)》,它对AIGC的合法性及权利归属在法律层面做出了明确界定,能够极大程度上消除市场主体的顾虑,进一步推动数字化技术领域的长足发展。
数据和网络安全是我们国家的重要保障,对于AIGC技术的快速发展,目前很多国内外顶尖的专家其实也存在看法上的分歧。
叶新江认为,在看到技术先进性一面的同时,我们也需要关注其另外一面。对于数据智能行业来说,“为大多数人提供美好的服务”是一个可以遵循的价值取向,每日互动还是会积极地去深入了解大模型的能力,更好地使用它,为客户创造更多的价值。在积极拥抱新技术和新趋势的同时,每日互动也将积极和行业各方协作,在保障数据安全的前提下,推动行业的有序发展。

收起阅读 »

支持多平台小程序的持续集成工具 uni-mini-ci

钉钉小程序 支付宝小程序 微信小程序 uni_app

前言

在通常情况下,我们在将小程序部署到不同的小程序平台时需要按照平台分别创建构建的job,而更传统的发布方式需要开发者手动操作,费时费力,容易出错,而我们开发的uni-mini-ci就是为了解决这些痛点,它可以一次配置发布到多端,自动打包上传,大大提高了开发效率,减少了出错的可能性,也解决了开发者需要分别对接各平台小程序CI工具的问题。

介绍

uni-mini-ci是一款支持微信、钉钉、支付宝、企业微信等小程序平台的持续集成工具。它的最大特点是一次配置发布到多端,让开发者可以轻松地将应用程序发布到多个小程序平台上。

使用uni-mini-ci,开发者只需要在配置文件中指定需要发布的小程序平台,然后在命令行中执行发布命令即可。uni-mini-ci会自动将应用程序打包并上传到指定的小程序平台上,无需手动操作。

总之,如果您需要将应用程序发布到多个小程序平台上,uni-mini-ci是一个非常不错的选择。它简单易用,功能强大,可以大大提高开发效率。如果您还没有尝试过,不妨试一试。

安装

yarn add uni-mini-ci -D

配置

配置信息见插件

插件地址

支持多平台小程序的持续集成工具 uni-mini-ci

文章地址

支持多平台小程序的uni-app持续集成工具

继续阅读 »

前言

在通常情况下,我们在将小程序部署到不同的小程序平台时需要按照平台分别创建构建的job,而更传统的发布方式需要开发者手动操作,费时费力,容易出错,而我们开发的uni-mini-ci就是为了解决这些痛点,它可以一次配置发布到多端,自动打包上传,大大提高了开发效率,减少了出错的可能性,也解决了开发者需要分别对接各平台小程序CI工具的问题。

介绍

uni-mini-ci是一款支持微信、钉钉、支付宝、企业微信等小程序平台的持续集成工具。它的最大特点是一次配置发布到多端,让开发者可以轻松地将应用程序发布到多个小程序平台上。

使用uni-mini-ci,开发者只需要在配置文件中指定需要发布的小程序平台,然后在命令行中执行发布命令即可。uni-mini-ci会自动将应用程序打包并上传到指定的小程序平台上,无需手动操作。

总之,如果您需要将应用程序发布到多个小程序平台上,uni-mini-ci是一个非常不错的选择。它简单易用,功能强大,可以大大提高开发效率。如果您还没有尝试过,不妨试一试。

安装

yarn add uni-mini-ci -D

配置

配置信息见插件

插件地址

支持多平台小程序的持续集成工具 uni-mini-ci

文章地址

支持多平台小程序的uni-app持续集成工具

收起阅读 »

vscode编辑器内uniapp代码块一键生成

打开vscode设置,选择用户代码片段,选择搜索框中的vue.json,将附件中的代码导入,保存。新建uniapp的vue页面,输入uniapp,即可一键生成代码结构。

打开vscode设置,选择用户代码片段,选择搜索框中的vue.json,将附件中的代码导入,保存。新建uniapp的vue页面,输入uniapp,即可一键生成代码结构。

每日互动联合绍兴高速交警、温州高速交警和浙江高信发布“高速障碍物预警系统”

5月18日,以“瓯江论数 数安中国”为主题的2023数据安全发展大会在温州圆满举办。其中,每日互动聚焦“安全是前提,发展是主题”,承办了本次大会5个分论坛之一的“数据智能安全与发展论坛”。在此论坛上,每日互动和绍兴高速交警、温州高速交警和浙江高信技术股份有限公司(“浙江高信”)联合发布了高速障碍物预警系统,基于数据智能,以低成本、高效率、智慧化的方式,护航高速交通的畅通与安全。

图:数据智能安全与发展论坛现场发布“高速障碍物预警系统”

党的二十大报告指出,要加快建设交通强国。发展数字交通,成为促进综合交通高质量发展的重要推动力。在此背景下,每日互动和浙江高信基于各自的行业及技术优势,携手开展在智慧高速领域的数据智能实践,共同打造推出了“高速障碍物预警系统”,推动智慧高速场景建设。

每日互动是专业的数据智能服务商,聚焦数据智能赛道十余年,构建了“数据积累-数据治理-数据应用”的服务生态闭环,为商业主体和政府部门提供丰富的数据智能产品、服务与解决方案。其中,在公共服务领域,公司具有丰富的实践经验,积累了对人、车、道路、时间、空间等多要素数据进行关联计算和分析洞察的能力,已在城市治理、智慧交通等领域给政府相关部门提供了有力的大数据支撑。

浙江高信是浙江省交通投资集团有限公司(以下简称“交通集团”)下属科技型子公司,是交通集团交通信息产业的主体平台。二十年来主要围绕智慧交通、智慧城市、数字政企、智能轨道和航空航运等业务领域,依托数字化规划咨询、数字基础设施建设和数据资源增值服务三大核心竞争力,专业提供多场景、多业务、全周期、全生态、数字化的一站式服务。

此次双方合作打造的高速障碍物预警系统主要用于保障高速交通的畅通与安全。从提高市民出行安全来看,系统将高速异常事件预警模型与大数据技术相结合,能实时感知高速道路上的车速变化,及时发现异常事件并快速预警,实现“预警”跑在“报警”前,减少二次事故风险。而从道路的营运、管理部门的角度看,传统的视频监控、人工巡检等预警方式,在光线不好或者道路出现透明液体等特定抛洒物的情况下,往往检测效果不佳,容易出现漏检或误检的情况。相比而言,此次发布的“高速障碍物预警系统”则是基于车流特征去提供更加精准、更为及时的预警信息,能够大大提高运营和管理的效率。

现场,浙江高信CTO陆启荣提及该系统时,用“小而全面,少而及时”八个字来形容。“从产品实施的角度来讲,成本非常‘小’;高速门架的铺设又是最‘全面’的;同时,ETC门架是专门独立设置的,所以数据被干扰较‘少’;最后,ETC数据采集的‘及时’度非常高,比传统视频监测、人工巡检要更高。”陆启荣说到。

除此之外,每日互动CTO叶新江在现场还分享了每日互动数据智能在交通安全领域的最新应用。“每日互动目前正在探索交通高危人群的洞察,协助交警部门针对性地开展宣传教育工作,提高交通出行的安全性。”叶新江说到。

目前,高速障碍物预警系统已在绍兴、温州落地试点,成效显著。未来,每日互动和浙江高信将继续携手,共同推动高速障碍物预警系统在各城市的落地应用,促进智慧高速场景的普及;同时,双方也将进一步深化产品的持续迭代,加速高速公路信息化、降低高速公路事故率、提高高速通行通畅度,为行业深度赋能。

继续阅读 »

5月18日,以“瓯江论数 数安中国”为主题的2023数据安全发展大会在温州圆满举办。其中,每日互动聚焦“安全是前提,发展是主题”,承办了本次大会5个分论坛之一的“数据智能安全与发展论坛”。在此论坛上,每日互动和绍兴高速交警、温州高速交警和浙江高信技术股份有限公司(“浙江高信”)联合发布了高速障碍物预警系统,基于数据智能,以低成本、高效率、智慧化的方式,护航高速交通的畅通与安全。

图:数据智能安全与发展论坛现场发布“高速障碍物预警系统”

党的二十大报告指出,要加快建设交通强国。发展数字交通,成为促进综合交通高质量发展的重要推动力。在此背景下,每日互动和浙江高信基于各自的行业及技术优势,携手开展在智慧高速领域的数据智能实践,共同打造推出了“高速障碍物预警系统”,推动智慧高速场景建设。

每日互动是专业的数据智能服务商,聚焦数据智能赛道十余年,构建了“数据积累-数据治理-数据应用”的服务生态闭环,为商业主体和政府部门提供丰富的数据智能产品、服务与解决方案。其中,在公共服务领域,公司具有丰富的实践经验,积累了对人、车、道路、时间、空间等多要素数据进行关联计算和分析洞察的能力,已在城市治理、智慧交通等领域给政府相关部门提供了有力的大数据支撑。

浙江高信是浙江省交通投资集团有限公司(以下简称“交通集团”)下属科技型子公司,是交通集团交通信息产业的主体平台。二十年来主要围绕智慧交通、智慧城市、数字政企、智能轨道和航空航运等业务领域,依托数字化规划咨询、数字基础设施建设和数据资源增值服务三大核心竞争力,专业提供多场景、多业务、全周期、全生态、数字化的一站式服务。

此次双方合作打造的高速障碍物预警系统主要用于保障高速交通的畅通与安全。从提高市民出行安全来看,系统将高速异常事件预警模型与大数据技术相结合,能实时感知高速道路上的车速变化,及时发现异常事件并快速预警,实现“预警”跑在“报警”前,减少二次事故风险。而从道路的营运、管理部门的角度看,传统的视频监控、人工巡检等预警方式,在光线不好或者道路出现透明液体等特定抛洒物的情况下,往往检测效果不佳,容易出现漏检或误检的情况。相比而言,此次发布的“高速障碍物预警系统”则是基于车流特征去提供更加精准、更为及时的预警信息,能够大大提高运营和管理的效率。

现场,浙江高信CTO陆启荣提及该系统时,用“小而全面,少而及时”八个字来形容。“从产品实施的角度来讲,成本非常‘小’;高速门架的铺设又是最‘全面’的;同时,ETC门架是专门独立设置的,所以数据被干扰较‘少’;最后,ETC数据采集的‘及时’度非常高,比传统视频监测、人工巡检要更高。”陆启荣说到。

除此之外,每日互动CTO叶新江在现场还分享了每日互动数据智能在交通安全领域的最新应用。“每日互动目前正在探索交通高危人群的洞察,协助交警部门针对性地开展宣传教育工作,提高交通出行的安全性。”叶新江说到。

目前,高速障碍物预警系统已在绍兴、温州落地试点,成效显著。未来,每日互动和浙江高信将继续携手,共同推动高速障碍物预警系统在各城市的落地应用,促进智慧高速场景的普及;同时,双方也将进一步深化产品的持续迭代,加速高速公路信息化、降低高速公路事故率、提高高速通行通畅度,为行业深度赋能。

收起阅读 »

前端工程化之代码提交规范

uni_app

前言

前端工程化是一个很宽泛的概念,大致上可以分为四个方面,也就是:模块化组件化规范化自动化。这里不对其他概念进行展开,只大概阐述一下规范化的概念,看完这篇文章如果大家对这些工程化的概念感兴趣可以点赞留言,大家一起讨论,后续我也会更新相应的文章。

代码提交规范实践:FantMiniPlus组件库

具体的实践可以参考我们的组件库。

规范化 规范化有哪些意义呢?

  • 规范的代码可以促进团队合作
  • 规范的代码可以降低维护成本
  • 规范的代码有助于 code review(长得都不一样,我还怎么review)
  • 养成代码规范的习惯,有助于程序员自身的成长

那么规范化又可以在哪些地方体现呢?

  • 代码格式规范,如引入eslint和prettier等。
  • 统一项目结构,在大多数情况下使用相同的项目目录结构,否则不知几人称帝几人称王咯。
  • 制定前后端联调沟通的规范,比如我们现在常用的后端生成ts模型给到前端,这一点已经是极大的提升了前端开发的工作效率,当然这一点并没有明显地提升后端开发人员的工作效率,所以有些后端开发人员还不了解或者不愿意了解这个生成ts模型的插件。
  • 文件命名规范,这一点不用多说,你是AaaBbb,我是aaaBbb,他是aaa-bbb,这还怎么玩。
  • 样式管理规范:目前流行的样式管理有 BEM、Sass、Less、Stylus、CSS Modules 等方式。
  • git flow 工作流:分支命名规范、代码合并规范,代码提交规范等。
  • ...等等

文章完整地址前端代码提交规范

uni-app的社区不支持发一些emoji,所以完整文章在掘金

继续阅读 »

前言

前端工程化是一个很宽泛的概念,大致上可以分为四个方面,也就是:模块化组件化规范化自动化。这里不对其他概念进行展开,只大概阐述一下规范化的概念,看完这篇文章如果大家对这些工程化的概念感兴趣可以点赞留言,大家一起讨论,后续我也会更新相应的文章。

代码提交规范实践:FantMiniPlus组件库

具体的实践可以参考我们的组件库。

规范化 规范化有哪些意义呢?

  • 规范的代码可以促进团队合作
  • 规范的代码可以降低维护成本
  • 规范的代码有助于 code review(长得都不一样,我还怎么review)
  • 养成代码规范的习惯,有助于程序员自身的成长

那么规范化又可以在哪些地方体现呢?

  • 代码格式规范,如引入eslint和prettier等。
  • 统一项目结构,在大多数情况下使用相同的项目目录结构,否则不知几人称帝几人称王咯。
  • 制定前后端联调沟通的规范,比如我们现在常用的后端生成ts模型给到前端,这一点已经是极大的提升了前端开发的工作效率,当然这一点并没有明显地提升后端开发人员的工作效率,所以有些后端开发人员还不了解或者不愿意了解这个生成ts模型的插件。
  • 文件命名规范,这一点不用多说,你是AaaBbb,我是aaaBbb,他是aaa-bbb,这还怎么玩。
  • 样式管理规范:目前流行的样式管理有 BEM、Sass、Less、Stylus、CSS Modules 等方式。
  • git flow 工作流:分支命名规范、代码合并规范,代码提交规范等。
  • ...等等

文章完整地址前端代码提交规范

uni-app的社区不支持发一些emoji,所以完整文章在掘金

收起阅读 »

需要uniapp k线图的请私,支持安卓/苹果/h5。

不是webview,采用renderjs实现。完美兼容app

不是webview,采用renderjs实现。完美兼容app

uni.uploadFile上传本地图片,没有图片后缀名的问题

uniapp

通过本地路径,上传图片到后台,会没有图片的后缀名

  uni.uploadFile({  
    url: 'api地址',  
       filePath:'/static/test.png',  
    name: 'file',  
    formData: {},  
    success: (res) => {  
        console.log(res.data);  
    }  
  });

改为以下代码,思路是把本地图片转成blob,再把blob转成file对象,同时添加文件名带后缀:

    var xhr = new XMLHttpRequest()  
    xhr.open('GET',img)  
    xhr.responseType = "blob";  
    xhr.onload = () => {  
      // 获取返回结果  
        var blob = xhr.response;  
        var file = new File([blob], 'test.jpg')  

  uni.uploadFile({  
    url: 'api地址',   
        file, // 改为file上传  
    name: 'file',  
    formData: {},  
    success: (res) => {  
        console.log(res.data);  
    }  
  });  
    }  

    xhr.send()
继续阅读 »

通过本地路径,上传图片到后台,会没有图片的后缀名

  uni.uploadFile({  
    url: 'api地址',  
       filePath:'/static/test.png',  
    name: 'file',  
    formData: {},  
    success: (res) => {  
        console.log(res.data);  
    }  
  });

改为以下代码,思路是把本地图片转成blob,再把blob转成file对象,同时添加文件名带后缀:

    var xhr = new XMLHttpRequest()  
    xhr.open('GET',img)  
    xhr.responseType = "blob";  
    xhr.onload = () => {  
      // 获取返回结果  
        var blob = xhr.response;  
        var file = new File([blob], 'test.jpg')  

  uni.uploadFile({  
    url: 'api地址',   
        file, // 改为file上传  
    name: 'file',  
    formData: {},  
    success: (res) => {  
        console.log(res.data);  
    }  
  });  
    }  

    xhr.send()
收起阅读 »

uv-ui插件已经迈向成功的第一步,破釜沉舟,利剑出击!

uniapp插件 uniapp
  1. uv-ui在5月10号发布以来,得到了广大uniapp开发者的好评,已经迈向成功的第一步。
  2. 最开始,在uview2.0的基础上全部修改兼容vue3,并且独立上线命名为uv-ui,支持独立导入使用。并且上线新组件 瀑布流 uv-waterfall。
  3. 再后来,在努力修改下,修复了部分兼容性问题,并且开始脱离在main.js中引入依赖,全部组件都可以不引入依赖,导入即可使用。
  4. 前几天,排查了其他平台的兼容性,发现百度小程序、抖音小程序等还有一些BUG,在挑灯夜战中,修复了99%的问题,并且上线新组件 颜色选择器 uv-pick-color。
  5. 目前,整体比较明显的BUG已经全部修复完,根据开发者的反馈,觉得有问题的都是不会使用,或者文档没说清楚的,这些在后续都会完善,对开发者更友好。
  6. 将来,dcloud插件市场目前的运营模式,让我们做开源的有些动力了,所以uv-ui的开发会持续下去,再接再厉!欢迎广大开发者使用uv-ui,有问题我们会尽最大努力去处理。欢迎大家加入uv-ui的QQ交流群:549833913。

uv-ui插件列表:https://ext.dcloud.net.cn/plugin?id=12287
uv-ui插件文档:https://www.uvui.cn/components/quickstart.html
uv-ui插件H5演示:https://h5.uvui.cn

继续阅读 »
  1. uv-ui在5月10号发布以来,得到了广大uniapp开发者的好评,已经迈向成功的第一步。
  2. 最开始,在uview2.0的基础上全部修改兼容vue3,并且独立上线命名为uv-ui,支持独立导入使用。并且上线新组件 瀑布流 uv-waterfall。
  3. 再后来,在努力修改下,修复了部分兼容性问题,并且开始脱离在main.js中引入依赖,全部组件都可以不引入依赖,导入即可使用。
  4. 前几天,排查了其他平台的兼容性,发现百度小程序、抖音小程序等还有一些BUG,在挑灯夜战中,修复了99%的问题,并且上线新组件 颜色选择器 uv-pick-color。
  5. 目前,整体比较明显的BUG已经全部修复完,根据开发者的反馈,觉得有问题的都是不会使用,或者文档没说清楚的,这些在后续都会完善,对开发者更友好。
  6. 将来,dcloud插件市场目前的运营模式,让我们做开源的有些动力了,所以uv-ui的开发会持续下去,再接再厉!欢迎广大开发者使用uv-ui,有问题我们会尽最大努力去处理。欢迎大家加入uv-ui的QQ交流群:549833913。

uv-ui插件列表:https://ext.dcloud.net.cn/plugin?id=12287
uv-ui插件文档:https://www.uvui.cn/components/quickstart.html
uv-ui插件H5演示:https://h5.uvui.cn

收起阅读 »

这种总得说明下怎么处理吧

这种总得说明下怎么处理吧

unserialize('O:8:"stdClass":2:{s:7:"errCode";s:22:"uni-id-illegal-request";s:6:"errMsg";s:15:"Illegal request";}')

继续阅读 »

这种总得说明下怎么处理吧

unserialize('O:8:"stdClass":2:{s:7:"errCode";s:22:"uni-id-illegal-request";s:6:"errMsg";s:15:"Illegal request";}')

收起阅读 »

uni-webview-js在vite的SSR(或SSG)下的使用解决方案

webview通信 WebView调试 Webview uniapp uni_app

由于uni-webview-js是基于window对象的,所以在SSR下无法使用, vite-plugin-uniwebviewjs-ssr 插件提供了一个uni方法,该方法会在SSR下返回一个空对象,以避免报错。

安装

npm i vite-plugin-uniwebviewjs-ssr 
yarn add vite-plugin-uniwebviewjs-ssr

配置

首先在vite.config.js中引入插件,这一步是为了获取vite是否处于SSR模式

// vite.config.js  
import { defineConfig } from 'vite'  
import { uniWebviewJS } from 'vite-plugin-uniwebviewjs-ssr'  

export default defineConfig({  
  plugins: [  
    uniWebviewJS()  
  ]  
})

引入

手动引入

在您工程内任意想使用的地方引入uni方法即可

import { uni } from 'vite-plugin-uniwebviewjs-ssr'

自动引入

安装unplugin-auto-import插件,并在vite.config.js中配置

// vite.config.js  
import { defineConfig } from 'vite'  
import { uniWebviewJS } from 'vite-plugin-uniwebviewjs-ssr'  
import AutoImport from 'unplugin-auto-import/vite'  

export default defineConfig({  
  plugins: [  
    uniWebviewJS(),  
    AutoImport({  
      imports: [  
        {  
          'vite-plugin-uniwebviewjs-ssr': [  
            ['uni', 'uni']  
          ]  
        }  
      ]  
    })  
  ]  
})

这样你就可以在任意地方直接使用uni方法了,无需手动引入

使用

uni.getEnv((res) => {  
  console.log(res)  
})

更多方法请参考uni-webview-js文档中的相关信息,最后感谢uni-app团队的开发者们和您的使用,希望您能给本项目一个star,谢谢!

继续阅读 »

由于uni-webview-js是基于window对象的,所以在SSR下无法使用, vite-plugin-uniwebviewjs-ssr 插件提供了一个uni方法,该方法会在SSR下返回一个空对象,以避免报错。

安装

npm i vite-plugin-uniwebviewjs-ssr 
yarn add vite-plugin-uniwebviewjs-ssr

配置

首先在vite.config.js中引入插件,这一步是为了获取vite是否处于SSR模式

// vite.config.js  
import { defineConfig } from 'vite'  
import { uniWebviewJS } from 'vite-plugin-uniwebviewjs-ssr'  

export default defineConfig({  
  plugins: [  
    uniWebviewJS()  
  ]  
})

引入

手动引入

在您工程内任意想使用的地方引入uni方法即可

import { uni } from 'vite-plugin-uniwebviewjs-ssr'

自动引入

安装unplugin-auto-import插件,并在vite.config.js中配置

// vite.config.js  
import { defineConfig } from 'vite'  
import { uniWebviewJS } from 'vite-plugin-uniwebviewjs-ssr'  
import AutoImport from 'unplugin-auto-import/vite'  

export default defineConfig({  
  plugins: [  
    uniWebviewJS(),  
    AutoImport({  
      imports: [  
        {  
          'vite-plugin-uniwebviewjs-ssr': [  
            ['uni', 'uni']  
          ]  
        }  
      ]  
    })  
  ]  
})

这样你就可以在任意地方直接使用uni方法了,无需手动引入

使用

uni.getEnv((res) => {  
  console.log(res)  
})

更多方法请参考uni-webview-js文档中的相关信息,最后感谢uni-app团队的开发者们和您的使用,希望您能给本项目一个star,谢谢!

收起阅读 »

uni.request 中的 abort 使用技巧 在.vue 文件中使用报错 Cannot read property 'promise' of undefined

在 vue 文件中如 把每一次请求对象存在 data 中 就会引发此BUG,特别是vue3 的uni-app 项目 因为 vue3 的响应是用了 ES6的 Proxy,此时 我们想取出对应的重复请求,拿到对应的请求为 Proxy 当要阻断请求时调用abort() 方法就会报错,解决报错也非常简单,把请求返回 不存在data中就能够解决此问题,此问题在编译成微信小程序必然会出现

常见不会出现此问题 (一般都会封装请求,从而绕开了此问题)

<template>  
    <view class="content">  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord',{type:2})">  
            发送HTTP</button>  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord',{type:1})">  
            发送HTTP</button>  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord1',{type:1})">  
            发送HTTP2</button>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                httpurl: []  
            }  
        },  
        methods: {  
            sendhttp(url, data = {}) {  

                const is = this.httpurl.find(u => u.url === url && u.data === JSON.stringify(data))  
                const indexId = this.httpurl.findIndex(u => u.url === url && u.data === JSON.stringify(data))  

                if (is) {  

                    //#ifdef H5  
                    is.requestTask.abort();  
                    //#endif  

                    //#ifdef MP-WEIXIN  
                    is.requestTask  
                    //#endif  
                }  

                const requestTask = uni.request({  
                    url,  
                    data,  
                    complete() {  
                        console.log('响应了');  
                    }  
                })  

                this.httpurl.push({  
                    url,  
                    data: JSON.stringify(data),  
                    requestTask  
                })  
            }  
        }  
    }  
</script>

修改后

<template>  
    <view class="content">  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord',{type:2})">  
            发送HTTP</button>  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord',{type:1})">  
            发送HTTP</button>  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord1',{type:1})">  
            发送HTTP2</button>  
    </view>  
</template>  

<script>  
    const httpurl = {}  
    export default {  
        data() {  
            return {  
                title: 'Hello',  
            }  
        },  

        methods: {  
            sendhttp(url, data = {}) {  

                for (let s in httpurl) {  
                    // console.log(this.httpurl[s].url);  
                    if (httpurl[s].url === url) {  
                        httpurl[s].requestTask.abort()  
                        delete httpurl[s]  
                    }  
                }  
                const requestTask = uni.request({  
                    url,  
                    data,  
                    complete() {  
                        console.log('响应了');  
                    }  
                })  

                const uniqueId = requestTask.uniqueId || new Date().getTime()  
                httpurl[uniqueId] = {  
                    requestTask,  
                    url,  
                    data: JSON.stringify(data)  
                }  
            }  
        }  
    }  
</script>
继续阅读 »

在 vue 文件中如 把每一次请求对象存在 data 中 就会引发此BUG,特别是vue3 的uni-app 项目 因为 vue3 的响应是用了 ES6的 Proxy,此时 我们想取出对应的重复请求,拿到对应的请求为 Proxy 当要阻断请求时调用abort() 方法就会报错,解决报错也非常简单,把请求返回 不存在data中就能够解决此问题,此问题在编译成微信小程序必然会出现

常见不会出现此问题 (一般都会封装请求,从而绕开了此问题)

<template>  
    <view class="content">  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord',{type:2})">  
            发送HTTP</button>  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord',{type:1})">  
            发送HTTP</button>  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord1',{type:1})">  
            发送HTTP2</button>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                httpurl: []  
            }  
        },  
        methods: {  
            sendhttp(url, data = {}) {  

                const is = this.httpurl.find(u => u.url === url && u.data === JSON.stringify(data))  
                const indexId = this.httpurl.findIndex(u => u.url === url && u.data === JSON.stringify(data))  

                if (is) {  

                    //#ifdef H5  
                    is.requestTask.abort();  
                    //#endif  

                    //#ifdef MP-WEIXIN  
                    is.requestTask  
                    //#endif  
                }  

                const requestTask = uni.request({  
                    url,  
                    data,  
                    complete() {  
                        console.log('响应了');  
                    }  
                })  

                this.httpurl.push({  
                    url,  
                    data: JSON.stringify(data),  
                    requestTask  
                })  
            }  
        }  
    }  
</script>

修改后

<template>  
    <view class="content">  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord',{type:2})">  
            发送HTTP</button>  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord',{type:1})">  
            发送HTTP</button>  
        <button @click="sendhttp('http://192.168.88.65:3339/integralRecord/DelIntegralRecord1',{type:1})">  
            发送HTTP2</button>  
    </view>  
</template>  

<script>  
    const httpurl = {}  
    export default {  
        data() {  
            return {  
                title: 'Hello',  
            }  
        },  

        methods: {  
            sendhttp(url, data = {}) {  

                for (let s in httpurl) {  
                    // console.log(this.httpurl[s].url);  
                    if (httpurl[s].url === url) {  
                        httpurl[s].requestTask.abort()  
                        delete httpurl[s]  
                    }  
                }  
                const requestTask = uni.request({  
                    url,  
                    data,  
                    complete() {  
                        console.log('响应了');  
                    }  
                })  

                const uniqueId = requestTask.uniqueId || new Date().getTime()  
                httpurl[uniqueId] = {  
                    requestTask,  
                    url,  
                    data: JSON.stringify(data)  
                }  
            }  
        }  
    }  
</script>
收起阅读 »

edge浏览器的ADGUARD广告屏蔽插件把“导出插件”按钮给隐藏了?

插件需求

今天想导出插件,发现导出按钮没有了,倒腾了半天发现是广告插件屏蔽了按钮~~

今天想导出插件,发现导出按钮没有了,倒腾了半天发现是广告插件屏蔽了按钮~~