这篇主要来记录下阅读他人有关angularJS开发实战的博客时遇到的一些自己尚未能明白的术语、领域、词汇、技术等。
模块划分和目录组织
为什么会有这篇博文呢?按照博主自己说的,由于他所在实验室(中传不知道哪个实验室)需要做一个大型的web app,所以就有了这个机会,大型项目和做几个普通的demo页面玩一玩的最主要区别在于:大型项目中,必须要对一开始的文件组织和模块划分有清晰的认识。
- 什么样的web app属于CRUD应用?
- CRUD应用为什么要采用grunt + boilerplate + bootstrap + D3 + requirejs的架构来实现?
- 如上架构中的各个技术/工具各是什么?
- 什么是REST风格的API?
- 什么是AMD或CMD的机制?
- AngularJS的模块划分初始状态下只有一个myApp模块这个入口点,如何在其之上进行子模块的划分?
- 由于如果只有一个入口点的话,那即使通过angularJS的路由按需加载模版,控制器也要先行加载,这样就出现了一个问题,需要延迟加载控制器,但延迟加载控制器又会有诸多问题,尤其是在显示的时候,所以引入require.js这个AMD工具。
require.js
和sea.js
类似?- 单一入口点?还是多入口点?
- 按照angular-seed推荐的目录组织真的好么?看起来是很整齐,但是如果考虑到多人协作的情况,新加入的成员依然不清楚这些对象的依赖关系,尤其是要重用某些模块的时候,他必须从各个文件夹中搜索相关文件,而且常常会遗漏某些文件夹中的对象。
- 按照功能模块去组织文件目录
前端的页面分解与组装
这一篇文章里头,讲述的是博主在8月这一个月里都用angularjs干了些啥。
angularjs
如何与jQuery
、bootstrap
、D3
等一系列其他类库结合使用?由于应用的功能模块有多个,而且每个模块又有自己的入口点(html文件),这就导致了模块间有许多相同的内容(模版、组件和通用JS模块)。而前端开发有个问题,就是变更频繁,如果不把这些相同的内容抽取出来,这样一旦遇到变更,就需要在多处进行相同的修改,工作量巨大不说,出错率也增高。
过去,解决这种问题一般都是后台动态脚本完成,如php中,把首页模版
index.php
划分成header.php
,container.php
,footer.php
三个文件,然后通过include方法来组装。和后台的思路类似,前端也需要引入分页与组装,而angularJs提供了三个方法来进行前端分页:
- ng-view:通过所谓的路由控制,可以方便实现页面组合。重大缺点:一个html页只能由一个
- 将分解的页面写成 directive
- ng-include
以上三种方法是实质上都是通过ajax来加载模版,使用ajax来实现页面分解这样的功能,相比传统的使用后台动态脚本语言的方案,必然会带来额外的开销。事实上,不光angularjs是这样,我所接触过的所有前端框架都是如此。这是浏览器端的宿命。这里所造成的负载和与后台动态脚本语言之间的优劣,只能由技术主管自己权衡。
angularJs与其他类库的协作
- 类库和框架的区别?
框架的轻重之分如何区别?标准是什么?backbone这种属于轻量级框架,它简单易用,专注于前端Mvc的实现,故而你还需要很多第三方类库(至少jquery)来完成dom操作、UI等各种各样的内容。Yui、dojo属于重型框架,他们的作者企图搞出一个森罗万象的框架+组件库,包括代码动态调用、各种UI组件都包含在内,学习成本较高,但是一旦精通,至少这个项目别无所求。
轻量级框架像毛坯房,重量级框架是精装??不吐槽这比喻了
- angulaJs是中等重量级框架?
- 什么事JSF思想?什么是DSL、组件化思想?
angularJs的性能问题
由于这篇文章涉及过深,目前我还不想去探究,所以问题攒下来先。
待博主更新
...