fly63前端网

www.fly63.com

首页文章资源工具教程 栏目
  • 关于我们
  • 网站投稿
  • 赞助一下
搜索

在线工具_工作生活好帮手

打造各种简单、易用、便捷的在线工具,网友无需注册和下载安装即可使用

点击查看

关闭

提交网站

snabbdom
分享
复制链接
新浪微博
QQ 好友

扫一扫分享

GitHub:https://github.com/snabbdom/snabbdom
网站描述:一个虚拟的DOM库专注于简化,模块化拥有强大的功能和性能

虚拟dom很棒。它允许我们将应用程序的视图表示为状态的函数。但是现有的解决方案太过膨胀,太慢,缺少功能,api偏向OOP和/或缺少我需要的功能。 


介绍

Snabbdom由一个非常简单,高性能和可扩展的内核组成,仅约200 SLOC。它提供了具有丰富功能的模块化体系结构,可以通过自定义模块进行扩展。为了使核心保持简单,所有非必要功能都委托给模块。

您可以将Snabbdom塑造成您想要的任何东西!选择,选择和定制所需的功能。或者,您可以只使用默认扩展名,并获得具有高性能,小尺寸和下面列出的所有功能的虚拟DOM库。


特征

核心功能

  • 大约200个SLOC –您可以轻松阅读整个核心,并完全了解它的工作原理。
  • 通过模块可扩展。
  • 每个vnode以及模块的全局可用的丰富钩子集可以钩入diff和patch过程的任何部分。
  • 出色的表现。Snabbdom是Virtual DOM Benchmark中最快的虚拟DOM库之一。
  • 具有等效于缩小/扫描功能的功能签名的修补功能。可以更轻松地与FRP库集成。

模块中的功能

  • h 用于轻松创建虚拟DOM节点的功能。
  • SVG 只能与h助手一起使用。
  • 用于执行复杂css动画的功能。
  • 强大的事件监听器功能。
  • Thunk进一步优化了差异和补丁过程。

第三方功能

  • 借助snabbdom-pragma来支持JSX 。
  • snabbdom-to-html提供的服务器端HTML输出。
  • 使用snabbdom-helpers进行紧凑的虚拟DOM创建。
  • 使用snabby支持模板字符串。
  • 具有虚拟外观的虚拟DOM断言


实例

var snabbdom = require('snabbdom');
var patch = snabbdom.init([ // Init patch function with chosen modules
  require('snabbdom/modules/class').default, // makes it easy to toggle classes
  require('snabbdom/modules/props').default, // for setting properties on DOM elements
  require('snabbdom/modules/style').default, // handles styling on elements with support for animations
  require('snabbdom/modules/eventlisteners').default, // attaches event listeners
]);
var h = require('snabbdom/h').default; // helper function for creating vnodes

var container = document.getElementById('container');

var vnode = h('div#container.two.classes', {on: {click: someFn}}, [
  h('span', {style: {fontWeight: 'bold'}}, 'This is bold'),
  ' and this is just normal text',
  h('a', {props: {href: '/foo'}}, 'I\'ll take you places!')
]);
// Patch into empty DOM element – this modifies the DOM as a side effect
patch(container, vnode);

var newVnode = h('div#container.two.classes', {on: {click: anotherEventHandler}}, [
  h('span', {style: {fontWeight: 'normal', fontStyle: 'italic'}}, 'This is now italic type'),
  ' and this is still just normal text',
  h('a', {props: {href: '/bar'}}, 'I\'ll take you places!')
]);
// Second `patch` invocation
patch(vnode, newVnode); // Snabbdom efficiently updates the old view to the new state

// to unmount from the DOM and clean up, simply pass null
patch(newVnode, null)


链接: https://fly63.com/nav/2798

more>>
相关栏目
react
Facebook开发的一款高效、灵活、声明式设计的JS库
官网GitHub
AngularJS
Google推出有条理,可维护,易编程的MVVM框架
官网GitHub
backbone
提供:模型、集合、视图,开发重量级的javascript应用的框架
官网GitHub
jquery
一个快速、简洁的JavaScript代码库
官网GitHub
zepto.js
一个轻量级的针对现代高级浏览器的JavaScript库
官网GitHub
Ember
JavaScript MVC框架,它用来创建复杂的Web应用程序,消除了样板
官网GitHub
nw.js
轻量级桌面应用开发的捷径
官网GitHub
socket.io
一个WebSocket库,包括了客户端的js和服务器端的nodejs
官网GitHub
nuxt.js
基于 Vue.js 的轻量级、服务端渲染 (SSR) 应用框架
官网GitHub
Next.js
实现react的服务端渲染的框架
官网GitHub
Electron
基于Chromium 和 Node.js, 使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用
官网GitHub
htmx
无需JavaScript的动态HTML
官网GitHub
Nerv
一款由京东凹凸实验室打造的类React前端框架
官网GitHub
lodash
一致性、模块化、高性能的 JavaScript 实用工具库
官网GitHub
ocLazyLoad
AngularJS 的延迟加载(惰性加载)模块和组件
点击进入GitHub
weui.js
WeUI 的轻量级 js 封装
点击进入GitHub

手机预览