OpenTiny Vue 组件库实现主题配置和UX交互规范自定义

简介:基于 OpenTiny 组件库的 rendereless 无渲染组件架构 在 HAE 自研阶段,我们实现的数据双向绑定、面向对象的 JS 库、配置式开发的注册表等特性,随着前端技术的高速发展现在已经失去存在的意义,但是在 AUI 阶段探索的新思路新架构,经过大量的业务落地验证,再次推动前端领域的创新。TinyVue 继承了 HAE、AUI,OpenTiny 是一套企业级组件库解决方案,适配 PC 端 / 移动端等多端,涵盖 Vue2 / Vue3 / Angular 多技术栈,拥有主题配置系统 / 中后台模板 / CLI 命令行等效率提升工具,可帮助开发者高效开发 Web 应用。 阅读详情

本文由TinyVue组件库核心成员郑志超分享,向我们介绍了如何在OpenTiny Vue组件库中进行UX规范的定制修改。学会使用该方法后,开发者可以更精准地控制或修改用户体验规范的范围,提高开发效率,同时降低维护成本和代码复杂度。

什么是前端组件库主题规范自定义

前端组件库主题规范自定义是指在组件库中定义一套主题规范,包括颜色、字体、间距等样式属性,并提供一种自定义方式,使用户可以根据自己的需求修改主题规范,从而实现自定义主题的效果。

如何实现主题规范自定义

在实际项目中,往往需要根据不同的品牌、风格、场景等需求来定制不同的主题,而组件库的主题规范往往是固定的,无法满足这种需求。因此,提供主题规范自定义的功能,可以让用户根据自己的需求来定制主题,从而更好地满足项目需求。

那么,如何实现主题规范自定义呢?一般来说,可以通过以下几个步骤来实现:

1. 定义主题规范: 首先需要定义一套主题规范,包括颜色、字体、间距等样式属性,以及对应的变量名。

2. 提供自定义方式: 在组件库中提供一种自定义方式,让用户可以根据自己的需求来修改主题规范。一般来说,可以提供一个配置文件或者一个可视化的界面来进行主题规范的修改。

3. 应用主题规范: 在组件库中使用定义好的主题规范,通过变量名来引用对应的样式属性,从而实现主题规范的应用。

接下来让我们一起来看看如何在 OpenTiny Vue 组件库中实现主题配置和UX交互规范自定义吧~

实操演练

演示代码仓:

https://github.com/opentiny/cross-framework-component.git

第一步 自定义主题

首先,通过主题配置系统定义所需的主题规范,并按流程发布主题包。可以在现网环境地址(https://www.opentiny.design/designtheme/home**)
完成这一步骤。


1、发布主题

配置完主题后点击发布,将用户的配置转换成代码。一键式主题发布以及版本管理,让管理更简单;安装后即可使用,让开发者更专注。

图片

2、安装使用主题

发布成功后,需要在vue3子工程中引入该依赖。如下图所示:

图片

3、然后重新在项目根目录下载依赖

pnpm i
4、在项目中使用

在vue3子工程的main.js文件中导入主题样式文件

import '@opentiny/vue-zzc-theme/index.css'

5、启动工程查看

运行命令如下命令启动vue3自工程:

pnpm dev:vue3
展示效果如下:

图片

图片

二、自定义交互规范

1、自定义组件交互规范

首先需要提供一份自定义的规范配置,这里自定义了button组件的点击事件行为,可以看到renderless函数返回的方法或者属性会覆盖原本组件的方法或者属性;

其次renderless函数的参数会将组件内部的状态包括:props、hoos、api、utils、extendOptions 传递出来,方便使用或者设置组件的内部状态或者调用组件的其他方法。

{
      /**
       *
       * @param {object} props 传递给组件的属性
       * @param {object} hooks vue或者composition-api的hooks
       * @param {object} utils OpenTiny封装的工具对象
       * @param {object} api 组件的状态state和方法的集合
       * @param {object} extendOptions 额外参数
       */
      renderless: (props, hooks, { emit }, api, { framework }) => {
        return {
          // 自定义覆盖button组件的点击事件行为
          handleClick(event) {
            console.log(
              console.log(`${framework}框架代码已触发!!!!!!!!!`)
            )
            alert('自定义交互逻辑')
            emit('click', event)
          }
        }
      }
    }

2、通过ConfigProvider组件向内部所有组件传递自定义规范(可以实现局部组件的交互规范修改)

具体代码在vue3子工程的App.vue文件,如下图所示:

图片

效果如下:

图片

总结

总体来说,通过实现主题规范自定义,可以达到以下几个效果:

1. 提高组件库的可定制性: 用户可以根据自己的需求来定制主题,从而更好地满足项目需求。

2. 提高组件库的可复用性: 通过定义一套主题规范,可以使组件库中的样式属性更加统一,从而提高组件库的可复用性。

3. 提高组件库的可维护性: 通过定义一套主题规范,可以使组件库中的样式属性更加清晰明了,从而提高组件库的可维护性。

当然TinyVue组件库不仅实现了UX主题规范自定义,同时是通过覆盖单个函数的方式,这样更加有利于提高用户体验规范的定制化程度,满足特定的业务需求和用户需求,同时提高开发效率和用户满意度,同时提高代码的可维护性。从而提高前端开发的效率和质量。

以上就是郑志超同学的分享,如果你也有更多前端技术想与我们交流,欢迎投稿。除此之外,也欢迎你参与到 OpenTiny 开源中来👏,一起共建项目,研讨前端技术。

关于 OpenTiny

OpenTiny 是一套企业级组件库解决方案,适配 PC 端 / 移动端等多端,涵盖 Vue2 / Vue3 / Angular 多技术栈,拥有主题配置系统 / 中后台模板 / CLI 命令行等效率提升工具,可帮助开发者高效开发 Web 应用。

核心亮点:

  1. 跨端跨框架:使用 Renderless 无渲染组件设计架构,实现了一套代码同时支持 Vue2 / Vue3,PC / Mobile 端,并支持函数级别的逻辑定制和全模板替换,灵活性好、二次开发能力强。
  2. 组件丰富:PC 端有80+组件,移动端有30+组件,包含高频组件 Table、Tree、Select 等,内置虚拟滚动,保证大数据场景下的流畅体验,除了业界常见组件之外,我们还提供了一些独有的特色组件,如:Split 面板分割器、IpAddress IP地址输入框、Calendar 日历、Crop 图片裁切等
  3. 配置式组件:组件支持模板式和配置式两种使用方式,适合低代码平台,目前团队已经将 OpenTiny 集成到内部的低代码平台,针对低码平台做了大量优化
  4. 周边生态齐全:提供了基于 Angular + TypeScript 的 TinyNG 组件库,提供包含 10+ 实用功能、20+ 典型页面的 TinyPro 中后台模板,提供覆盖前端开发全流程的 TinyCLI 工程化工具,提供强大的在线主题配置平台 TinyTheme

联系我们:

更多视频内容也可以关注OpenTiny社区,B站/抖音/小红书/视频号。

倍福Beckhoff运动控制功能块实战解析:从MC_ReadActualPosition到MC_GearInVelo 本文深入解析倍福(Beckhoff)TwinCAT运动控制功能块,从基础的MC_ReadActualPosition、MC_Power等轴状态读取与使能操作,到MC_MoveAbsolute、MC_MoveRelative等单轴定位指令,并重点剖析了用于动态速度同步的核心功能块MC_GearInVelo在飞锯等场景的应用。文章结合实战经验,详细介绍了齿轮耦合、电子凸轮(MC_CamIn)等高级同步功能的参数配置、调试技巧及常见问题,旨在帮助工程师快速掌握倍福运动控制工具箱,实现复杂的同步工艺。 阅读详情

相关推荐

NACA0012的O型网格求解

本篇文章采用偏微分方程数值解法生成NACA0012翼型O型网格,并采用速度势方程求解绕NACA0012翼型迎角为0度时的低速不可压无粘流场。 文章目录一、求解网格1.翼型2.远场3.网格4.迭代5.求解二、求解流场1.偏微分方程2.迭代求解流场三、求解参数1.偏微分方程2.迭代求解四、导出数据 一、求解网格 1.翼型 本次求解网格和流场等采用的是NACA0012(修形)对称翼型,在NACA四位翼型中,第一位数字代表的是弯度,第二位数字代表的是弯度位置,后两位数字代表的是厚度,由于本次翼型的前两位数字都为0,

m0_50746433的博客 6677

直播回顾|带你体验很实用的OpenTiny

本期直播主题是《解决开发者“兼容”难题,OpenTiny技术探索与应用解读》,华为云开源DTSE技术布道师曾令卡在本期直播中与开发者一起详细交流了OpenTiny组件库解决方案的核心优势和设计理念。并通过具体的实操给大家演示OpenTiny如何通过一行命令搭建中后台管理系统,同时也给大家演示了定制化的主题配置系统。

OpenTiny的博客 972

小样本物体检测

Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector 关键:提出了一个小样本数据集:数据集 步骤: 提取support img为一过滤特征 使用support img的特征来过滤query img,最后将过滤后的特征输入RPN网络中 RPN网络层的输出,会进行多头判断,使用全局信息检测,使用局部信息检测,一对多检测 Attention-Based Region Proposal Network Increme

qq_21157073的博客 5266

OpenTiny 前端组件库正式开源啦!面向未来,为开发者而生

华为开发者大会2023(HDC.Cloud 2023)于7月7日-9日在东莞拉开帷幕,本届大会以“每一个开发者都了不起”为主题。OpenTiny作为前端企业级组件库解决方案,在本次大会上正式进行发布。

OpenTiny的博客 5415

深入解析docx4j:从Word到PDF的高保真转换实战

本文深入解析了如何使用纯Java开源库docx4j实现Word到PDF的高保真转换。针对中文环境,重点讲解了字体映射原理、Linux服务器字体部署方案,并提供了完整的代码示例和配置方法。同时,文章涵盖了表格、图片处理、性能优化及生产环境部署指南,帮助Java开发者构建稳定、可控的文档转换服务。

weixin_29237635的博客 674

ML307A模组通过MQTT协议接入OneNET平台的AT指令全解析

本文详细解析了ML307A模组通过MQTT协议接入OneNET平台的完整AT指令流程。从平台侧的产品创建、设备添加,到核心难点连接密钥的计算方法,再到模组侧的基础网络附着、MQTT连接配置、数据收发及调试排错,提供了手把手的实战指南,帮助开发者快速实现物联网设备上云。

weixin_29240711的博客 494

什么?你还不会 OpenTiny 跨框架组件库适配微前端?

本文通过实战操作梳理,带你手把手实现 TinyVue 跨框架组件库适配微前端~欢迎关注,点赞,评论~

OpenTiny的博客 1384

智能车竞赛走马观碑组:如何高效识别目标板并优化绕行策略(附实战代码)

本文深入探讨了智能车竞赛走马观碑组中,如何构建从图像识别到路径决策的全栈优化方案。针对目标板识别与绕行策略的核心难点,文章详细解析了基于MobileNetV2的高效识别流水线、结合预瞄点与纯追踪算法的平滑路径规划,以及横向与纵向协同控制策略,并提供了实战代码与调试指南,旨在全面提升小车的比赛表现。

o5p6q的博客 884

什么是OpenTiny?

在具体实践中,开发者可以基于 OpenTiny 快速构建企业级的前端项目,例如模仿华为云的官方界面,使用 TinyEngine 低代码引擎进行页面布局、表单组件、按钮组件等开发,并通过主题配置系统快速调整页面样式。:一个丰富的组件库,支持 Vue2、Vue3,适配 PC 和移动端,拥有 100 多个组件和 6 套主题,支持国际化,适用于多种开发环境和项目需求。:一个灵活的低代码开发平台,支持在线实时构建和二次开发,允许开发者快速定制低代码平台,适用于资源编排、服务端渲染、模型驱动等多种场景。

软件行业技术文化交流。 1528

如何用IDEA查看jar包中代码

我们在使用Java进行开放时经常会需要下载些第三方的jar包进行相应的开发。有时候相关jar包的使用文档不足,满足不了我们的特定开发使用要求,这就需要我们查看jar包内的相关代码逻辑,本文将基于IDEA工具介绍如何查看相关jar包的代码逻辑

mystonelxj的博客 2281

基于YOLOv8的包装商品智能检测系统完整指南—含论文、代码

《基于YOLOv8的包装商品智能检测系统》摘要: 本文提出了一套完整的零售商品自动检测解决方案,利用YOLOv8深度学习框架实现高精度、高效率的商品识别。系统针对SKU110K大规模商品数据集(含11,762张高密度货架图像)进行优化,包含数据预处理、模型训练、推理检测和可视化界面全流程。详细介绍了从CSV标注到YOLO格式的转换方法、环境配置指南及技术架构设计。该系统可应用于智能零售、物流仓储等多个场景,有效解决人工盘点效率低、误差大的痛点。实验表明,该系统具备毫秒级检测速度和批量处理能力,为商业数字化转

FJN110的博客 209

vue用户交互实现

但是要注意,按键修饰符的命名规则与event对象中的key命名规则是不同的,event使用的是大写字母驼峰法,例如PageUp、Shift等,但是实际上,在使用按键修饰符的时候需要转化为中划线驼峰法,如page-up、shift。以上代码中,watch监听着input内的属性变换,如果输入值为空的时候便会在页面中出现not number的字样,实际上这有点类似于条件判定,但是这个watch是设置在属性里面的,可以根据不同的应用场景选择不一样的判定方式。(4)监听事件中可以使用的常用修饰符。

2301_79193628的博客 1256

MATLAB代码实现了一个柱塞泵配流盘过流面积的计算和可视化功能

该MATLAB代码实现了一个柱塞泵配流盘过流面积的计算和可视化功能。输出曲线可直接用于验证设计的合理性(如是否存在过流面积突变或不足)。的不同范围,选择对应的几何模型计算过流面积。通过分段逻辑计算柱塞腔在不同旋转角度(过流面积在特定条件下会被限制(如。),确保结果符合物理实际。条件分支,根据旋转角度。

huanghm88的专栏 582

OpenTiny/TinyVue SaaS主题:企业级SaaS界面设计规范

在当今数字化时代,企业级SaaS(Software as a Service)应用已成为企业运营的核心工具。然而,许多开发团队在构建SaaS产品时面临着一个共同的挑战:如何在保证功能完整性的同时,提供一致、专业且高效的用户体验? 传统的UI开发模式往往导致: - 设计不一致,品牌形象混乱 - 开发效率低下,重复造轮子 - 维护成本高昂,难以扩展 - 用户体验参差不齐 OpenTiny/Tiny...

gitblog_00883的博客 1157

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OpenTiny 制作智慧窗格:我用 21 个组件打造了一个“会思考“的鸿蒙应用

摘要:OpenTiny智慧窗格项目 本文介绍了一个基于OpenTiny Vue组件库开发的"智慧窗格"项目,其核心创新在于实现了UI界面的自适应能力。该项目灵感来源于HarmonyOS的智慧多窗功能,能够根据窗口尺寸自动切换布局(全屏/分屏/悬浮窗三种模式)。技术选型上,OpenTiny组件库因其Renderless架构、21个组件的完美配合以及出色的打包体积而胜出。项目采用Vite6.x快速构建,通过三层适配策略(窗口检测、响应式布局、动态样式)实现智能UI。开发过程中特别注重AI友好

wdracky的专栏 8350

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDC 精彩回顾|7 月 8 日 OpenTiny 重磅发布

华为云云岭团队前端专家莫春辉作为本次开源项目正式发布的演讲嘉宾,给大家讲解了OpenTiny作为一个企业级组件库解决方案如何给用户解决痛点和困境。以下为项目讲解材料:通过介绍OpenTiny全景图,深入分析开发者面临的市场痛点,给到用户相应的解决方案。针对企业 toB 业务场景,提供跨端、跨框架、跨版本的组件库和开箱即用的管理系统模板,以及覆盖前端开发全流程的 CLI 工具。

OpenTiny的博客 489

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

从对话到执行:OpenTiny NEXT 如何重塑前端智能化开发范式

*MCP(Model Context Protocol,模型上下文协议)**是由Anthropic推出的开放协议,旨在标准化大语言模型与外部数据源、工具之间的交互方式。简单来说,MCP让AI模型能够像调用API一样,安全、结构化地访问文件系统、数据库、版本控制等外部资源。对于前端开发而言,MCP的意义在于打破AI与工程实践的隔阂传统AI辅助开发基于MCP的智能化开发AI只能基于对话上下文推理AI可直接读取项目结构、依赖关系、配置文件生成的代码需要手动集成AI可自动创建文件、安装依赖、执行脚本。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 5274

# [特殊字符] TinyRobot实战:AI对话组件库应用落地全解析

## 1. 什么是 TinyRobot? TinyRobot 是 **OpenTiny 生态**下的 Vue 3 前端交互框架,专为企业级 AI 应用设计: - 定位:快速搭建 AI 助手、智能客服、多轮对话系统 - 技术栈:基于 OpenTiny Design 设计体系,兼容 Vue 3 - 核心价值:提供开箱即用的对话 UI、流式渲染、会话管理能力,避免重复造轮子

[Blog][Domain] programb.blog.youkuaiyun.com 311

TinyVue 移动端适配攻略:一套代码搞定 PC 和 Mobile

TinyVue 作为 OpenTiny 社区的企业级 UI 组件库,支持 Vue.js 2 和 Vue.js 3,同时适配 PC 和移动端,让开发者能够用一套代码轻松应对不同终端的需求。本文将为你详细介绍 TinyVue 的移动端适配方案,助你快速掌握跨端开发技巧。 ## 📱 为什么选择 TinyVue 进行移动端适配? 在当今多终端时代,开发者常常面临需要为 PC 和移动端分别开发界面的困

gitblog_00884的博客 1088

生成式 UI 藏大招!看似露营案例,实则电商集成 GenUI SDK 干货

要将 MCP 工具能力接入 AI 导购助手,需通过自定义 fetch 方法,处理大模型的工具调用请求、多轮交互及结果流式返回逻辑,确保工具调用过程流畅、符合电商业务场景。在目录下新建文件,编写自定义 fetch 逻辑。核心功能:自定义 fetch 方法,处理大模型工具调用、多轮交互及流式返回,对接 MCP 工具与 AI 助手baseURL?index?: numberid?

OpenTiny的博客 506

活动回顾|OpenTiny 参与线下大会:共创开源未来,助力低代码技术创新

OpenTiny 参与线下大会核心亮点概览

OpenTiny的博客 572

开源之夏报名倒计时2天!还有9个前端任务有余位,快来申请吧~

本赛题旨在实现TinyEngine设计器对TypeScript的支持,包括出码、Schema、输入代码等,提高开发效率和代码质量。

OpenTiny的博客 778

TinyPro 1.2.0 正式发布:增加综合搜索,解决数据筛选难题,后端单测覆盖率再提升!

本文由体验技术团队Kagol原创。TinyPro 是一个基于 TinyVue 打造的前后端分离的后台管理系统,支持在线配置菜单、路由、国际化,支持页签模式、多级菜单,支持丰富的模板类型,支持多种构建工具,功能强大、开箱即用。我们非常高兴地宣布,2025年4月10日,TinyPro 发布了 v1.2.0 🎉。^6.1.0^3.5.10^3.21.0本次版本共有3位贡献者参与开发,其中 discreted66 是新朋友👏你可以更新进行体验!

OpenTiny的博客 992

搭建 OpenTiny 组件库的 Playground 指导手册

本文通过实操教程,教你如何从0到1搭建OpenTiny项目中TinyVue组件库的playground,

OpenTiny的博客 901

速看!盘点这一年 OpenTiny 都在做什么?

叮,这里有一份 OpenTiny 的年终总结等你查收,本文主要介绍了OpenTiny 2023年的那些事~

OpenTiny的博客 1344

听说过OpenTiny开源项目吗?什么场景都能用

是华为云出品的开源项目,号称是跨端跨框架的一站式解决方案,让我来一探究竟!OpenTiny目前开放了开发相关的,以及衍生生态产品。目前主流的前端框架比如ElementUI、antDesign都对Vue版本进行了区分,比如ElementUI适用于Vue2,ElementPlus适用于Vue3;ant-design-vue 1.x适用于Vue2,ant-design-vue 2.x以上适用于Vue3;

weixin_38593969的博客 853
上一篇: 一个Angular组件间通信的新解决方案
下一篇: OpenTiny Vue 3.10.0 版本发布:组件 Demo 支持 Composition 写法,新增4个新组件
OpenTiny社区
博客等级 码龄4年 1540粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值