SmartJS 系列规划分享和背景介绍
发布了smartjs后,有朋友问:“没看懂究竟是干嘛的”。唉,打击了,每次我都想高唱其实你不懂我的心。
今天把相关的东西都整理了一遍,给大家介绍一下。里面绝大多数都已经实现过,有些则是有新的思路重做或者是加强。哈哈,应该也算不上重新造轮子,
smartjs产生的背景
这几年一直在以前端顾问的身份外包给国内某大型h公司做企业级的框架,然后提供给h公司内部项目使用。前后经历过三个这样项目,都是担任前端架构师,其中一个是移动web类,是支援过去的,没有深入,搭了个架子子就被拉回原来项目。只可惜该公司没有开源的文化,所以很多东西都无法分享出来。
同时,我自己的smartui2.0的内容也筹备的差不多了,所以顺势就在框架上面引入了不少smartui2.0思想和实现。而因为项目的忙碌,我自己的smartui2.0却进度缓慢。
今年,以前做的框架在h公司使用率非常搞,得到很多好评,同时很有意思的东西也搞的差不多了,然后…………,就没有然后了。h公司结构调整,框架与另外一个合体,又要重新搞出一个高大上的cloud app engine.
借此机会,我刚好把一些新的思路和以往做的东西都梳理了一遍,这就有了smartjs。
什么是SmartJS
是一个js库,提供了一些前端开发支持,做的事情与jquery,zepto这些基础库不重合,而是补充. 主要提供了一些(aop,promise,oop,lifecycle)编程方式的辅助和一些数据的管理控制,提倡以松耦合,注入,插件式开发。目前版本基于Jquery,后续会提供独立版本。
Smart系列是指的基于Smartjs而实现的前端产品,有mvvm框架,web ide等等
Smart规划
smart 思想
搭架子,封装一些特有的东西。引入有用的第三方库。
所有系列都是一套体系。但同时每块也都保持独立。每块也都是模块化的。
aop,promise,oop始终贯穿。
模型驱动,从建模 - ui - service - db
(…………还有些高大上的词不记得了,就不咧了)
Smart 核心库
就是目前发布的smartjs的内容。完成了aop,oop,dataManager的初版;util则是部分;
- util :工具库,常用工具
- aop : aop编程支持库
- oop : oop编程支持库
- dataManager : 基于策略的数据管理对象;简单来说就是管理数据冲那里来,到哪里去;如何来,怎么去;
- dataManager-object :object结构的数据管理
- dataManager-table :table结果的数据管理
- dataManager-tree :tree结构的数据管理
- exception : 异常处理
- dataUtil :数据工具库,数据的转换和格式化
- validator :验证器
- i18n : 国际化
smart-mvvm
基于模型驱动的mvvm引擎。以前是mvc现在实现为mvvm;
smart - ui
ui库的封装策略是建立一个widget工厂,使用feature应用公共特性,使用plugin做扩展。因为ui的控件会比较多,前面都会以引入一些第三方的控件为主,然后统一出入口。
- widget-factory : widget工厂,管理widget的注册,初始化,feature的应用,plugin的扩展
- widget-plugin : 插件管理器;smartui内置widget开发的都是以插件形式开发;
- ui-feature : ui特性,封装一些ui共有的特性;widget和dom元素都可以应用这些特性;
- ui-compileEngine : ui的编译引擎;定义规则扫描dom,做自动初始化(widget)
- layoutBuilder : 布局生成器
- uiUtil : ui的工具库
smart - assist
辅助开发的工具库,定位错误,日志注入,调试管理等;
- logger : 使用aop的方式,将各个模块的日志进行注入;在编码过程中,必不可少的会产生大量的日志信息,而发布后,用户是不需要这些信息的,因此既增加了js的大小,绝大多数又没有用处;那么smartjs的做法是将正常库中的一部分日志提取出来(并不是所有的日志,不是所有的位置都可以注入),单独定义一个为改模块服务的日志js,当需要查看日志的时候,在加载日志js,注入日志;同时logger可以通过模块,日志类型来控制输出;
- debugger : 调试管理;各位攻城师有没有碰到过,有时想调试的时候,跟踪起来很费劲,尤其是第三方,而且是压缩之后的js,是不是有种飞的感觉。debugger也是跟logger类似的策略,使用直接和注入的方式进行预设断点。在开启模块的debug模式后,进入调试。
- assist-panel:在页面上面提供浮动的panel来设置debugger和和查看logger。上面logger和debugger只有使用了assist-panel才使用才会更加方便。另外还会针对其他模块提供一些通用接口来注册到panel上面使用,比如:结合mvvm会有模型和视图的一些信息查询和控制;datamanager的数据信息和流向等等。
smart-desinger
一个Web IDE;
- modal-desinger :模型设计器;
- ui-desinger :web ide的基础引擎,提供通过拖拽,配置来生成页面;
- behaivor-desinger:行为编辑器,通过拖拽来配置行为和动作,也可以看成是图形化的code编辑器。
- theme-designer : 主题设计器
smartAS
这个不属于smartjs的内容,是我一个同事(陈大师)力作。一个后台的开源项目。是通过前端图像配置来生成服务的引擎。到时会与smart的designer结合,提供完成的设计器功能。
——————————————————————————————————————————————————————————————————————————————————————————
就介绍到这,还有一些细节和其他的模块不是特别重要就没列在里面。一不小心又画了个又圆又大的饼,不知道很年何月才能得偿所望。现在白天基本抽不出时间来弄,全部都是业余时间。按这个节奏是计划是在十一之前把smartjs核心库完成和初版smart-mvvm。
另外文章的排版很烂,没时间详细整理,请各位见谅。
SmartJS 系列规划分享和背景介绍的更多相关文章
- UI行业发展预测 & 系列规划的调整
又双叒叕拖更了,上一篇还是1月22号更新的,这都3月9号了…… 前面几期把职业规划.能力分析.几个分析用的设计理论都写完了,当然实际工作中用到的方法论不止上面这些,后续会接着学习: 如果你的目标是一线 ...
- dubbo系列一、dubbo背景介绍、微服务拆分
一.背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 二.传统应用到分布式应用的演进过程 ...
- OO电梯系列优化分享
目录 前言 HW5 HW6 第二次作业uml协作图 HW7 第三次作业uml协作图 前言 本单元作业在优化方面确实有一些想法值得分享,故单开一篇博客分享一下三次作业的优化以及架构. 三次作业的共同之处 ...
- [译]Dynamics AX 2012 R2 BI系列-规划分析的注意事项
https://msdn.microsoft.com/en-us/library/gg731898.aspx 在开始实施AX的分析特性前,有很多事情要考虑.本文描述了你必须考虑的事情,和在 ...
- python基础系列教程,数学基础系列教程,数据分析系列教程,神经网络系列教程,深度学习系列视频教程分享交流
大家好,我是一个技术爱好者,目前对大数据人工智能很是痴迷,虽然学历只有高中,目前正在大踏步的向着人工智能狂奔,如果你也想学习,那就来吧 我的学习进度python基础(Numpy,pandas,matp ...
- 监控Tomcat解决方案(监控应用服务器系列文章分享)
使用JMX接口开发监控程序 ◆ 全部代码需要从零开始,代码量较大 ◆ 支持各不同版本比较麻烦,每个版本可能有差异 ◆ 可支配性强 ◆ 最重要的一个缺点是,配置比较麻烦 Tomcat激活JMX远 ...
- Bootstrap3.0入门学习系列规划[持续更新]
详情请看http://aehyok.com/Blog/Detail/5.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:http ...
- Bootstrap3.0入门学习系列
Bootstrap3.0入门学习系列规划[持续更新] 前言 首先在此多谢博友们在前几篇博文当中给与的支持和鼓励,以及在回复中提出的问题.意见和看法. 在此先声明一下,之前在下小菜所有的随笔文章中, ...
- Bootstrap-学习系列
前言 首先在此多谢博友们在前几篇博文当中给与的支持和鼓励,以及在回复中提出的问题.意见和看法. 在此先声明一下,之前在下小菜所有的随笔文章中,只有前两篇关于Bootstrap的文章发表在了博客园的首页 ...
随机推荐
- MySQL分库分表总结参考
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数 ...
- NSIS总结1——以管理权限运行
在Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 到第一个Section之间插入一行代码 RequestExecutionLevel admin ...
- 使用MFC提供的Http类下载和上传文件
1.下载文件 Download(const CString& strFileURLInServer, //待下载文件的URL const CString & strFileLocalF ...
- 【转】Swift开源项目精选
https://github.com/ipader/SwiftGuide/blob/master/Featured.md 目录 “轮子” 工具类 存储类 网络类 图片类 界面类 框架类 “车子” 示例 ...
- linux web服务器必需的库文件
往往安装完linux之后,本文用的centos6.4,再编译安装其它服务器软件时,总是提示缺少各种库文件,在这里我总结了一下 平时web服务器经常需要的一些库,如下: yum -y install m ...
- 内存的分配VS回收&构造函数VS析构函数
之前有一个问题一直困扰着我,就是一个变量出了作用域,我以为这个变量的内存就被回收了,其实不是这样的,昨天问了一个高手,才豁然开朗,自己在看相关代码的反汇编代码,才知道原来真是这样就.这个问题,我想简单 ...
- Scala 深入浅出实战经典 第78讲:Type与Class实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- ASP.NET MVC中的模型装配 封装方法 非常好用
下面说一下 我们知道在asp.net mvc中 视图可以绑定一个实体模型 然后我们三层架构中也有一个model模型 但是这两个很多时候却是不一样的对象来的 就拿微软的官方mvc例子来说明 微软的视图实 ...
- ATT 解锁手机
最近豪们都在忙着买买买950 本土鳖左瞅瞅右看看实在钱包不够豪 正好看到美帝640打折39刀 (http://www.microsoftstore.com/store/msusa/en_US/pdp/ ...
- 解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题(l转)
同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65536个(DEX 64K problem),进而导致dex无法生成,也就无法生成APK文件. 解决办法如下: 1.谷 ...