San 是一个 MVVM 的组件框架。它体积小巧(12K),兼容性好(IE6),性能卓越,是一个可靠、可依赖的实现响应式用户界面的解决方案。
San 具有以下特性
San 通过声明式的类 HTML 视图模板,在支持所有原生 HTML 的语法特性外,还支持了数据到视图的绑定指令、业务开发中最常使用的分支、循环指令等,在保持良好的易用性基础上,由框架完成基于字符串的模板解析,并构建出视图层的节点关系树,通过高性能的视图引擎快速生成 UI 视图。San 中定义的数据会被封装,使得当数据发生有效变更时通知 San 组件,San 组件依赖模板编译阶段生成的节点关系树,确定需要变更的最小视图,进而完成视图的异步更新,保证了视图更新的高效性。
组件是 San 的基本单位,是独立的数据、逻辑、视图的封装单元。从页面角度看,组件是 HTML 元素的扩展;从功能模式角度看,组件是一个 ViewModel。San 组件提供了完整的生命周期,与 WebComponent 的生命周期相符合,组件间是可嵌套的树形关系,完整的支持了组件层级、组件间的通信,方便组件间的数据流转。San 的组件机制,可以有效支撑业务开发上的组件化需求。
San 支持组件反解,以此提供服务端渲染能力,可以解决纯前端渲染导致的响应用户交互时延长、SEO 问题。除此之外,San 还提供了一些周边开源产品,与 San 配合使用,可以帮助开发者快速搭建可维护的大型 SPA 应用。
现在,我们从一些简单的例子,开始了解 San。这些例子可以从这里找到。
Hello
var MyApp = san.defineComponent({ template: '<p>Hello {{name}}!</p>', initData: function () { return { name: 'San' }; } }); var myApp = new MyApp(); myApp.attach(document.body);
可以看到,通常情况实用 San 会经过这么几步:
我们先定义了一个 San 的组件,在定义时指定了组件的 内容模板 与 初始数据 。
初始化组件对象
让组件在相应的地方渲染
额外提示
:在 JavaScript 中书写 HTML 片段对维护来说是不友好的,我们可以通过 WebPack、AMD plugin、异步请求等方式管理。这里为了例子的简单就写在一起了。
SAN,是storage area network的简称,翻译过来就是存储区域网络。 顾名思义,SAN首先是一个网络,其次它是关于存储的,区域则是指服务器和存储资源之间链接。 实际上,SAN就是服务器和存储资源之间的专用网络,广义上包含实现这一网络连通的协议,狭义上可以就认为是服务器和存储资源之间的这部分可拓展的拓扑网络。 现在常见的SAN有两种,分别是FC SAN和IP SAN。那他们又是什么东
SAN 和 NAS 适合的应用不同。SAN 是传统的 DAS 技术的发展延续,是适合大量的数据块访问方式的网络存储技术,即信息主要是以块方式存储及管理的应用。SAN 技术的核心是 SAN 交换机,SAN 交换机是存储系统和主机系统之间的桥梁。 ............................................. 尽管 SAN 交换机上也配置 CPU 和 CACHE,也可以具有
SAN : STORAGE AREA NETWORK 存储区域网络 NAS : NETWORK ATTACHED STORAGE 网络附加存储 NAS不一定是盘阵,一台普通的主机就可以做出NAS,只要它自己有磁盘和文件系统,而且对外提供访问其文件系统的接口(如NFS,CIFS等),它就是一台NAS。常用的windows文件共享服务器就是利用CIFS作为调用接口协议的NAS设备。一般来说NAS其实就
有两种类型的框,信息框和小框。两个框均用于显示统计摘要。 信息框 <div class="info-box"> <span class="info-box-icon bg-info"><i class="far fa-envelope"></i></span> <div class="info-box-content"> <span class="info-box-text"
文本框可以让用户输入文本。它们可以是单行的,带或不带滚动条,也可以是多行的,并且带有一个图标。点击文本框后显示光标,并自动显示键盘。除了输入,文本框可以进行其他任务操作,如文本选择(剪切,复制,粘贴)以及数据的自动查找功能。详情见 模式 > 选择 文本选择的设计。 文本框可以有不同的输入类型。输入类型决定文本框内允许输入什么样的字符,有的可能会提示虚拟键盘并调整其布局来显示最常用的字符。常见的类型
Dialogs (提示框)用于提示用户作一些决定,或者是完成某个任务时需要的一些其它额外的信息。 Dialog可以是用一种 取消/确定 的简单应答模式,也可以是自定义布局的复杂模式,比如说一些文本设置或者是文本输入 。 用途 Dialog 最典型的应用场景是提示用户去做一个些被安排好的决定 ,而这些决定可能是当前任务的一部分或者是前至条件。 Dialog 可以用于告知用户具体的问题以便他们作用重要
Spl标准库 API版本控制 Session 容器服务 日志 系统常量 ShareMemory RPC&SOA
问题内容: 在JSF MVC框架中,谁是模型,视图和控制器? 问题答案: 这取决于观点(双关语意)。 在总体架构图中,您自己的JSF代码是V: M-业务域/服务层(例如EJB / JPA / DAO) V-您的JSF代码 C -FacesServlet 在开发人员图中,体系结构V可以如下划分: M-实体 V -Facelets / JSP页面 C-托管bean 在较小的客户图中,开发人员V可以如下
问题内容: 在JSF MVC框架中,谁是模型,视图和控制器? 问题答案: 这取决于观点(双关语意)。 在总体架构图中,你自己的JSF代码是V: M-Business domain/Service layer (e.g. EJB/JPA/DAO) V - Your JSF code C - FacesServlet 在开发人员图中,体系结构V可以如下划分: M - Entity V - Facele
描述 Struts 体系结构?对应各个部分的开发工作主要包括哪些? Struts开源架构很好的实现了MVC模式,MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。在Struts2的模型 - 视图 - 控制器模式,实现以下五个核心部件: Actions Interceptors Value Stac
MyBatis 与 Hibernate的区别 (1)hibernate是全自动,而mybatis是半自动 hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。 (2)hibernate数据库移植性远大于mybatis hiber