颜值即正义!这几个库颠覆你对数据交互的想象

前言

作为一个对UI和动画敏感的切图仔,在日常开发之余,也会关注一些贼好看的图表库和插件。

接下来,我将给大家介绍几款web/python/vue/react里漂亮得不行的开源库/实现。

1. 手绘风图表库:roughViz.js

基于D3(v5), roughjs, 和handy

1.1 衡量方式

有三种衡量方式:

粗糙度:

线条种类:

线条粗细:

1.2 多种搭配

简答CDN:

<script src="https://unpkg.com/[email protected]"></script>
复制代码

npm:

npm install rough-viz
复制代码

react/vue:

npm install react-roughviz
npm install vue-roughviz
复制代码

甚至在Python中也可以:

pip install roughviz
复制代码

1.3 简单使用

首先定义两个div

<div id="vis0"></div>
<div id="vis1"></div>
复制代码

之后new两个实例:

new roughViz.BarH(
  {
    element: ‘#vis0‘,
    title: "Vehicles I‘ve Had",
    titleFontSize: ‘1.5rem‘,
    legend: false,
    margin: {top: 50, bottom: 100, left: 160, right: 0},
    data: {
      labels: [‘1992 Ford Aerostar Van‘, ‘2013 Kia Rio‘, ‘1980 Honda CB 125s‘, ‘1992 Toyota Tercel‘],
      values: [8, 4, 6, 2]
    },
    xLabel: ‘Time Owned (Years)‘,
    strokeWidth: 2,
    fillStyle: ‘zigzag-line‘,
    highlight: ‘gold‘,
  }
);

  new roughViz.BarH(
    {
      element: ‘#vis1‘,
      titleFontSize: ‘1.5rem‘,
      data: ‘https://raw.githubusercontent.com/jwilber/random_data/master/owTanks.csv‘
      color: ‘tan‘,
      labels: ‘name‘,
      values: ‘health‘,
      title: "Overwatch Tank Health",
      roughness: 4,
    }
  );
复制代码

整个的配置非常简洁,其中:

  • data: 数据源,支持简单对象或csv格式的文件
  • roughness: 线条粗糙混乱层级。如果调成10,就会变成这样:

线上体验demo: blockbuilder.org/jwilber/419…

具体用法请参照官方文档:github.com/jwilber/rou…

2. 抖音字体爆炸特效:react-three-fiber

Webreact-native都可用的高性能Threejs for react库。

可以在React外部驱动渲染循环,而不会产生额外开销。

最新版本采用了Hooks的写法,不像以往强行兼容的Threejs,写起来更加友好。

不止抖音字体爆炸特效,它能实现什么,源于你的技术和想象力。

以下一部分特效:

如果有人学会了...大佬带带?

抖音爆炸特效的实现:

其中用到一个库:react-spring,这是react最优秀的动画库,没有之一。

官方文档:github.com/react-sprin…

字体爆炸:codesandbox.io/s/y3j31r13z…

3. 播放器里的颜值担当:Mini Music Player - VueJS

国外友人写的一个Vue.js音乐播放器,好看的不得了。

其中的交互和逻辑,也是非常精炼。

源码:codepen.io/JavaScriptJ…

4. UI都夸好的卡片验证库:interactive-paycard

这个11月Vue新库一发布,就狂揽3k+star,过于优秀。

完整库名vue-interactive-paycard

React版的作者表示也即将发布了。

源码:github.com/muhammederd…

5. 真*动态可视化数据:SandDance

微软出品,必属精品

SandDance是使用Vega进行图表布局,使用Deck.gl进行WebGL渲染。

能在如此密集的数据量上保持动画流畅和美观的,也就微软爸爸能做到了。

我先跪了,你们随意。

此外,该库还有多种使用方式:

  1. Power BI软件内使用:

    • PowerBI是微软发布的一款数据可视化软件,可以在较短时间内生成各种报表。
  2. VSCode插件形式:
  3. 网页版和React:

官网:sanddance.js.org/

体验:sanddance.js.org/app/

6. 实现一个自己的AR: AR.js+Three.js+Autodesk 3D

这是个很有意思的实现,大致流程是:

  1. 手机开启浏览器
  2. AR.js程序开始
  3. ARToolKit识别到图片标记
  4. A-Frame.js开始调用Three.js渲染3D模型
  5. 在画面上显示

6.1 实现步骤

1. 查找模型

首先我们先到 https://sketchfab.com下载自己喜欢的3D模型

2. 下载3D模型

下载glTF格式(A框架提供glTFOBJ两个格式官网建议使用glTF

3. 创建index.html并把这些代码都贴上


<script src="https://aframe.io/releases/0.9.0/aframe.min.js"></script>
<script src="https://rawgit.com/jeromeetienne/ar.js/master/aframe/build/aframe-ar.js"></script>
<script>THREEx.ArToolkitContext.baseURL = ‘https://rawgit.com/jeromeetienne/ar.js/master/three.js/‘</script>

<body style=‘margin : 0px; overflow: hidden;‘>
    <a-scene embedded arjs=‘sourceType: webcam; debugUIEnabled: false;‘>
        <a-marker type=‘pattern‘ url=‘res/pattern-marker.patt‘>
            <a-entity position=‘-3 2 0‘ text="width: 5; value:I am Psyduck. We are pokemon. We love you"></a-entity>
            <a-entity position=‘0 0 0‘ gltf-model="url(res/scene.gltf)"></a-entity>
        </a-marker>
    </a-scene>
</body>
复制代码
  • 第1?3行:把js套件都约会进来
  • 第6行:使用A-framehtml标签添加一个a-scene摄像头并把AR.js崁入
  • 第7行:标记Marker如果标记的Marker出现在摄像头里就会执行下方的事情
  • 第8行:新增你想要跟对方说的话
  • 第9行:新增3D模型

4. 部署你的应用。

5. 制作一个可供识别的二维码

6. 制作一张实体卡片

7. 扫一扫

原文:AR用AR.js做一個讓另對方 喔喔喔喔! 的小卡片吧!

请欣赏一个价值2199刀的模型

还有超赞的《这个杀手不太冷》女孩模型

这也太好看了吧。

想体验AR.js的可以放大下面这图,然后用相机扫一扫。

4. 后记&引用

原本想凑齐十个再发的,但找了好久,都没什么开源库能入我法眼。

恳请大家,推荐几款骚得不行的开源库,我来补充补充,谢谢喇。

作者:前端劝退师
链接:https://juejin.im/post/5de53fa15188256ed6123a1d
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/cangqinglang/p/11996966.html

时间: 2024-08-03 08:11:54

颜值即正义!这几个库颠覆你对数据交互的想象的相关文章

用Mysqldump实现全库备份+binlog的数据还原

随着业务量的增长,数据库也是成倍增长,原来一直使用的全库备份不再适合现在的数据库了,动辄就备份10G-20G,太占用磁盘空间,所以就考虑用更简洁更快速更节省磁盘空间的备份方法,这就想到了使用binlog日志来进行备份和恢复,下面是具体实施的方法: 环境介绍: 操作系统:Centos 7.2 数据库:Mysql 5.6 一.安装Mysql和改配置文件 安装就不具体介绍了,网上教程很多,配置文件需要添加以下选项: vim /etc/my.cnf log_bin = mysql-binlog    #

DICOM:DICOM三大开源库对比分析之“数据加载”

背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,"只要Sante DICOM Editor打不开的数据,基本可以判定此DICOM文件格式错误(准确率达99.9999%^_^)".在感叹Sante DICOM Editor神器牛掰的同时,想了解一下其底层是如何实现的.通过日常使用以及阅读软件帮助手册推断其底层依赖库很可能是dcmtk,就如同本人使用dcmtk.fo-dicom.dcm4che3等

coreseek 自定义词库(四)数据过滤

条件过滤在列表中是常用的功能,使用mysql数据库和sphinx进行搜索需要安装sphinx引擎 mysql命令行中, show engine sphinx states; 可以查看是否有  sphinxex引擎,如果没有则需要安装,否则无法使用这样的语句: select * from documents where group_id = 2 and query='@title 测试;mode=extended'; 安装sphinx引擎大家可以参考: http://blog.zhuyin.org

Oracle 跨库 查询 复制表数据

在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库. 第一步.配置A服务器端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为: $ORACLE_HOME/network/admin/tnsnames.ora 需要在该文件中增加对B库的配置项,格式如下 ZBCDB3

DDL-数据库操作、 DML数据操作

DDL之数据库操作:database 创建数据库 格式: create database 数据库名; create database 数据库名 character set 字符集; #创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8 create database webdb_1; #创建数据库 并指定数据库中数据的编码 create database webdb_2 character set utf8; 查看数据库 查看数据库MySQL服务器中的所有的数据库: sh

Struts2的标签库(四)——数据标签

Struts2的标签库(四) --数据标签 1.action标签 该标签用于在jsp页面直接调用一个Action,通过指定executeResult参数,还可以将Action的处理结果包含到此页面中来.此标签的属性如下: var属性:可选属性,一旦定义了该属性,该Action将被放入Stack Context的栈顶. name属性:必选属性,通过该属性指定此标签调用哪个Action. namespace属性:可选属性,通过该属性指定调用Action所在的namespace. executeRes

EXP/IMP 导出生产库表的指定数据到测试库一例

一般来讲,EXP/IMP是上一代导出导入程序,EXPDP/IMPDP是新一代的导出导入程序.对于大数据量的导出导入首选EXPDP/IMPDP,可以用到并行度,对表空间等操作上也更加的灵活.对于小数据量的迁移,可以使用exp/imp,操作更简单. 需求: exp 导出  A库(11.2.0.3)zjy用户的分区表t_jingyu_part部分数据,数据表空间 dbs_d_jingyu,索引表空间dbs_i_jingyu. imp 导入  B库(11.2.0.4)test用户下,test用户的默认表

Oracle 跨库 查询 复制表数据 分布式查询

方法一: 在眼下绝大部分数据库有分布式查询的须要.以下简单的介绍怎样在oracle中配置实现跨库訪问. 比方如今有2个数据库服务器,安装了2个数据库.数据库server A和B.如今来实如今A库中訪问B的数据库. 第一步.配置Aserver端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为: $ORACLE_HOME/network/admin/tnsnames.ora 加入例如以下行,当中DBLINK为连接名(

C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 防止脱库、防止篡改数据

一些无关紧要的数据.被脱库了什么的, 也没啥的,但是有些比较重要的数据被脱库了,虽然可能没严重的损失,但是会很丢人一样的,被爆出脱库了什么的,总是会比较难为情的,说实话也是蛮丢人的,能多防范就多防范,有漏洞缺点就尽快补救. 为了防止没必要的麻烦发生,我们可以用现成的加密函数.把需要传递的参数进行加密处理.这样一些破坏分子抓包什么的,也不容易抓出来,也不容易整体数据被脱库了.下面抓图是参考方法,还需要兼容内部的调用,内部调用越简单越好,封装越厉害调用越麻烦,出了问题不容易排查. 当有客户端需要保存