[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-78097":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},78097,"perspective","perspective-dev\u002Fperspective","perspective-dev","A data visualization and analytics component, especially well-suited for large and\u002For streaming datasets.","http:\u002F\u002Fperspective-dev.github.io\u002F",null,"C++",10952,1326,125,106,0,16,17,338,48,44.37,"Apache License 2.0",false,"master",true,[27,28,29,30,31,32,33,34],"analytics","bi","data-visualization","javascript","jupyter","python","real-time","webassembly","2026-06-12 02:03:46","\u003Cbr \u002F>\n\n\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\">\n\u003Cpicture>\n\u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgithub.com\u002Fperspective-dev\u002Fperspective\u002Fraw\u002Fmaster\u002Fdocs\u002Fstatic\u002Fsvg\u002Fperspective-logo-dark.svg?raw=true\">\n\u003Cimg width=\"260\" src=\"https:\u002F\u002Fgithub.com\u002Fperspective-dev\u002Fperspective\u002Fraw\u002Fmaster\u002Fdocs\u002Fstatic\u002Fsvg\u002Fperspective-logo-light.svg?raw=true\" \u002F>\n\u003C\u002Fpicture>\n\u003C\u002Fa>\n\u003Cbr\u002F>\u003Cbr\u002F>\n\n[![Build Status](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fperspective-dev\u002Fperspective\u002Fbuild.yaml?event=push&style=for-the-badge)](https:\u002F\u002Fgithub.com\u002Fperspective-dev\u002Fperspective\u002Factions\u002Fworkflows\u002Fbuild.yaml)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@perspective-dev\u002Fclient.svg?style=for-the-badge)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@perspective-dev\u002Fclient)\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fperspective-python.svg?style=for-the-badge)](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fperspective-python)\n[![crates.io](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fperspective?style=for-the-badge)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fperspective)\n\n\u003Cbr\u002F>\n\nPerspective is an interactive analytics and data visualization component for\nlarge and streaming datasets. Build user-configurable reports, dashboards,\nnotebooks, and applications with a high-performance query engine compiled to\nWebAssembly, Python, and Rust.\n\n## Features\n\n- A framework-agnostic user interface packaged as a\n  [Custom Element](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FWeb_Components\u002FUsing_custom_elements),\n  which connects to a Data Model in-browser (via WebAssembly) or remotely (via\n  WebSocket, with integration in Python, Node.js and Rust). Includes a data\n  grid, 10+ chart types line, bar, area, scatter, heatmap, treemap, sunburst,\n  candlestick, and more.\n\n- A Data Model API for pluggable engines, enabling Perspective's UI to query\n  external data sources like [DuckDB](https:\u002F\u002Fduckdb.org\u002F) while translating\n  view configurations into native queries.\n\n- A fast, memory-efficient streaming Data Model built-in, written in C++ and\n  compiled for [WebAssembly](https:\u002F\u002Fwebassembly.org\u002F),\n  [Python](https:\u002F\u002Fwww.python.org\u002F), and [Rust](https:\u002F\u002Fwww.rust-lang.org\u002F).\n  Supports read\u002Fwrite\u002Fstreaming for [Apache Arrow](https:\u002F\u002Farrow.apache.org\u002F),\n  with a columnar expression language based on\n  [ExprTK](https:\u002F\u002Fgithub.com\u002FArashPartow\u002Fexprtk).\n\n- A [JupyterLab](https:\u002F\u002Fjupyter.org\u002F) widget and Python client library for\n  interactive data analysis in notebooks.\n\n## Documentation\n\n- [Project Site](https:\u002F\u002Fperspective-dev.github.io\u002F)\n- [User Guide](https:\u002F\u002Fperspective-dev.github.io\u002Fguide\u002F)\n- JavaScript API\n    - [`@perspective-dev\u002Fclient` Browser](https:\u002F\u002Fperspective-dev.github.io\u002Fbrowser\u002Fmodules\u002Fsrc_ts_perspective.browser.ts.html)\n    - [`@perspective-dev\u002Fclient` Node.js](https:\u002F\u002Fperspective-dev.github.io\u002Fnode\u002Fmodules\u002Fsrc_ts_perspective.node.ts.html)\n    - [`@perspective-dev\u002Fclient` Clickhouse Virtual Server](https:\u002F\u002Fperspective-dev.github.io\u002Fbrowser\u002Fmodules\u002Fdist_esm_virtual_servers_clickhouse.js.html)\n    - [`@perspective-dev\u002Fclient` DuckDB Virtual Server](https:\u002F\u002Fperspective-dev.github.io\u002Fbrowser\u002Fmodules\u002Fdist_esm_virtual_servers_duckdb.js.html)\n    - [`@perspective-dev\u002Fviewer` Web Component](https:\u002F\u002Fperspective-dev.github.io\u002Fviewer\u002Fmodules\u002Fperspective-viewer.html)\n- Python API\n    - [`perspective`](https:\u002F\u002Fperspective-dev.github.io\u002Fpython\u002Findex.html)\n    - [`perspective.widget`](https:\u002F\u002Fperspective-dev.github.io\u002Fpython\u002Fperspective\u002Fwidget.html)\n    - [`perspective.handlers.aiohttp`](https:\u002F\u002Fperspective-dev.github.io\u002Fpython\u002Fperspective\u002Fhandlers\u002Faiohttp.html)\n    - [`perspective.handlers.starlette`](https:\u002F\u002Fperspective-dev.github.io\u002Fpython\u002Fperspective\u002Fhandlers\u002Fstarlett.html)\n    - [`perspective.handlers.tornado`](https:\u002F\u002Fperspective-dev.github.io\u002Fpython\u002Fperspective\u002Fhandlers\u002Ftornado.html)\n    - [`perspective.virtual_servers.clickhouse`](https:\u002F\u002Fperspective-dev.github.io\u002Fpython\u002Fperspective\u002Fvirtual_servers\u002Fclickhouse.html)\n    - [`perspective.virtual_servers.duckdb`](https:\u002F\u002Fperspective-dev.github.io\u002Fpython\u002Fperspective\u002Fvirtual_servers\u002Fduckdb.html)\n- Rust API\n    - [`perspective`](https:\u002F\u002Fdocs.rs\u002Fperspective\u002Flatest\u002Fperspective\u002F)\n    - [`perspective-client`](https:\u002F\u002Fdocs.rs\u002Fperspective-client\u002Flatest\u002Fperspective_client\u002F)\n    - [`perspective-server`](https:\u002F\u002Fdocs.rs\u002Fperspective-server\u002Flatest\u002Fperspective_server\u002F)\n    - [`perspective-python`](https:\u002F\u002Fdocs.rs\u002Fperspective-python\u002Flatest\u002Fperspective_python\u002F)\n    - [`perspective-js`](https:\u002F\u002Fdocs.rs\u002Fperspective-js\u002Flatest\u002Fperspective_js\u002F)\n    - [`perspective-viewer`](https:\u002F\u002Fdocs.rs\u002Fperspective-viewer\u002Flatest\u002Fperspective_viewer\u002F)\n\n## Examples\n\n\u003C!-- Examples -->\n\u003Ctable>\u003Ctbody>\u003Ctr>\u003Ctd>editable\u003C\u002Ftd>\u003Ctd>file\u003C\u002Ftd>\u003Ctd>duckdb\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=editable\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Feditable\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=file\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Ffile\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=duckdb\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fduckdb\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>fractal\u003C\u002Ftd>\u003Ctd>market\u003C\u002Ftd>\u003Ctd>raycasting\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=fractal\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Ffractal\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=market\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fmarket\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=raycasting\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fraycasting\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>evictions\u003C\u002Ftd>\u003Ctd>nypd\u003C\u002Ftd>\u003Ctd>streaming\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=evictions\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fevictions\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=nypd\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fnypd\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=streaming\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fstreaming\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>covid\u003C\u002Ftd>\u003Ctd>webcam\u003C\u002Ftd>\u003Ctd>movies\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=covid\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fcovid\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=webcam\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fwebcam\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=movies\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fmovies\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>superstore\u003C\u002Ftd>\u003Ctd>olympics\u003C\u002Ftd>\u003Ctd>dataset\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=superstore\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fsuperstore\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=olympics\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Folympics\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd>\u003Ca href=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblock?example=dataset\">\u003Cimg height=\"125\" src=\"https:\u002F\u002Fperspective-dev.github.io\u002Fblocks\u002Fdataset\u002Fpreview.png?\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003C!-- Examples -->\n\n## Media\n\n\u003Ctable>\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftimkpaine\">\u003Ccode>@timkpaine\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftimbess\">\u003Ccode>@timbess\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsc1f\">\u003Ccode>@sc1f\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=v5Y5ftlGNhU\">\u003Cimg width=\"240\" src=\"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002Fv5Y5ftlGNhU\u002F0.jpg\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=lDpIu4dnp78\">\u003Cimg width=\"240\" src=\"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002FlDpIu4dnp78\u002F0.jpg\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=IO-HJsGdleE\">\u003Cimg width=\"240\"  src=\"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002FIO-HJsGdleE\u002F0.jpg\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftexodus\">\u003Ccode>@texodus\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftexodus\">\u003Ccode>@texodus\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=no0qChjvdgQ\">\u003Cimg width=\"240\" src=\"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002Fno0qChjvdgQ\u002F0.jpg\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=0ut-ynvBpGI\">\u003Cimg width=\"240\" src=\"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002F0ut-ynvBpGI\u002F0.jpg\" \u002F>\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003Cbr\u002F>\u003Cbr\u002F>\n\n---\n\n\u003Cbr\u002F>\n\u003Cpicture>\n\u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgithub.com\u002Fopenjs-foundation\u002Fartwork\u002Fraw\u002Fmaster\u002Fopenjs_foundation\u002Fopenjs_foundation-logo-horizontal-white.svg?raw=true\">\n\u003Cimg width=\"200\" src=\"https:\u002F\u002Fgithub.com\u002Fopenjs-foundation\u002Fartwork\u002Fraw\u002Fmaster\u002Fopenjs_foundation\u002Fopenjs_foundation-logo-horizontal-black.svg?raw=true\">\n\u003C\u002Fpicture>\n\u003Cbr\u002F>\n\u003Cbr\u002F>\n\u003Cbr\u002F>\n\nThe Perspective project is a member of the\n[The OpenJS Foundation](https:\u002F\u002Fopenjsf.org\u002F).\n\nCopyright [OpenJS Foundation](https:\u002F\u002Fopenjsf.org) and Perspective contributors.\nAll rights reserved. The [OpenJS Foundation](https:\u002F\u002Fopenjsf.org) has registered\ntrademarks and uses trademarks. For a list of trademarks of the\n[OpenJS Foundation](https:\u002F\u002Fopenjsf.org), please see our\n[Trademark Policy](https:\u002F\u002Ftrademark-policy.openjsf.org\u002F) and\n[Trademark List](https:\u002F\u002Ftrademark-list.openjsf.org\u002F). Trademarks and logos not\nindicated on the\n[list of OpenJS Foundation trademarks](https:\u002F\u002Ftrademark-list.openjsf.org) are\ntrademarks™ or registered® trademarks of their respective holders. Use of them\ndoes not imply any affiliation with or endorsement by them.\n\n[The OpenJS Foundation](https:\u002F\u002Fopenjsf.org\u002F) |\n[Terms of Use](https:\u002F\u002Fterms-of-use.openjsf.org\u002F) |\n[Privacy Policy](https:\u002F\u002Fprivacy-policy.openjsf.org\u002F) |\n[Bylaws](https:\u002F\u002Fbylaws.openjsf.org\u002F) |\n[Code of Conduct](https:\u002F\u002Fcode-of-conduct.openjsf.org) |\n[Trademark Policy](https:\u002F\u002Ftrademark-policy.openjsf.org\u002F) |\n[Trademark List](https:\u002F\u002Ftrademark-list.openjsf.org\u002F) |\n[Cookie Policy](https:\u002F\u002Fwww.linuxfoundation.org\u002Fcookies\u002F)\n","Perspective 是一个专为大规模和流式数据集设计的数据可视化与分析组件。它提供了一个高性能的查询引擎，支持WebAssembly、Python和Rust，并能够构建用户可配置的报告、仪表板、笔记本及应用程序。核心功能包括框架无关的用户界面（以自定义元素形式封装）、多种图表类型（如线图、条形图、热力图等）以及快速且内存高效的流式数据模型。此外，Perspective 还提供了对Apache Arrow的支持，允许读取、写入和流处理，并集成了DuckDB等外部数据源。该工具非常适合需要实时数据分析和可视化的场景，例如金融交易监控、物联网设备数据展示等。",2,"2026-06-11 03:56:28","top_language"]