bingojs2MV分离引擎
一、概述
bingoJS 2版本只专心做MV分离引擎,提供MV分离所需的模板、JS、加载和服务提供机制;
可以认为所有东西由指令组装而成,由于指令化比组件化控制的粒度要小,所以可以很简单模拟出面向组件化或面向功能业务来开发。
简单:可当一个artTemplate之类模板来使用
强大:使用view和controller+route系统,可以支持强大的前端系统
二、特性
1、新的模板语法
更为强大和易用,如果有用过腾讯artTemplate之类模板,基本会用了;可以简单理解为类似的模板语法基础上增加了绑定特性:
2、完全虚拟化
完全虚拟化与dom操作隔离
3、layout(布局)
layout就是将编译结果回写到dom树的时机, 它会在适合的时机回写(异步),可以让浏览器渲染顺畅很多,并占用CPU明显少很多( demo )
4、全新的观察方式
使用setter和getter方式,重新实现观察方式,并可以在复杂的表达式里做到只绑定相关的变量,几乎可以不使用update之类的方法与view手动同步数据
5、Promise(承诺)
遵从Promise A+规范
全程使用Promise控制异步编译
在定义指令或合适的地方返回Promise控制编译效率
6、自由组装的指令(command)
以自由组装为理念, 更为强大易用,使用指令可以组装任何想要的场景:
7、view 与 controller
为了简化学习成本, 可以简单理解为所有业务(如一个列表管理页面)或定义一个指令,都对应一个模板(view)和一份JS(controller,处理view显示逻辑)
8、更明确的App
一个app可以认为一个项目或一个产品工程,作用在于更明确的管理项目和方便日后项目的合并与拆分;
9、自动识别动态加载service
10、更强大和精准的route
route管理以下配置:
资源资源存放位置
模块名称,如定义app.controller('user/list'...,这里的模块名称“user/list”
加载方式,如, 可以配置成ajax,url,websocket等方式加载资源
总的来说,route是管理工程的资源结构、规划模块和加载方式
11、其它
兼容IE9及以上的浏览器
核基于原生方法,不依赖任何框架