bingojs2 - MV分离引擎


Apache
跨平台
JavaScript

软件简介

一、概述

  • 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及以上的浏览器

  • 核基于原生方法,不依赖任何框架