AngularJS实战自问


这篇主要来记录下阅读他人有关angularJS开发实战的博客时遇到的一些自己尚未能明白的术语、领域、词汇、技术等。

模块划分和目录组织

博文原址

为什么会有这篇博文呢?按照博主自己说的,由于他所在实验室(中传不知道哪个实验室)需要做一个大型的web app,所以就有了这个机会,大型项目和做几个普通的demo页面玩一玩的最主要区别在于:大型项目中,必须要对一开始的文件组织和模块划分有清晰的认识

  • 什么样的web app属于CRUD应用?
  • CRUD应用为什么要采用grunt + boilerplate + bootstrap + D3 + requirejs的架构来实现?
  • 如上架构中的各个技术/工具各是什么?
  • 什么是REST风格的API?
  • 什么是AMD或CMD的机制?
  • AngularJS的模块划分初始状态下只有一个myApp模块这个入口点,如何在其之上进行子模块的划分?
  • 由于如果只有一个入口点的话,那即使通过angularJS的路由按需加载模版,控制器也要先行加载,这样就出现了一个问题,需要延迟加载控制器,但延迟加载控制器又会有诸多问题,尤其是在显示的时候,所以引入require.js这个AMD工具。
  • require.jssea.js 类似?
  • 单一入口点?还是多入口点?
  • 按照angular-seed推荐的目录组织真的好么?看起来是很整齐,但是如果考虑到多人协作的情况,新加入的成员依然不清楚这些对象的依赖关系,尤其是要重用某些模块的时候,他必须从各个文件夹中搜索相关文件,而且常常会遗漏某些文件夹中的对象。
  • 按照功能模块去组织文件目录

前端的页面分解与组装

博文原址

这一篇文章里头,讲述的是博主在8月这一个月里都用angularjs干了些啥。

  • angularjs 如何与 jQuerybootstrapD3 等一系列其他类库结合使用?
  • 由于应用的功能模块有多个,而且每个模块又有自己的入口点(html文件),这就导致了模块间有许多相同的内容(模版、组件和通用JS模块)。而前端开发有个问题,就是变更频繁,如果不把这些相同的内容抽取出来,这样一旦遇到变更,就需要在多处进行相同的修改,工作量巨大不说,出错率也增高。

  • 过去,解决这种问题一般都是后台动态脚本完成,如php中,把首页模版 index.php 划分成 header.php , container.php , footer.php 三个文件,然后通过include方法来组装。

  • 和后台的思路类似,前端也需要引入分页与组装,而angularJs提供了三个方法来进行前端分页:

    1. ng-view:通过所谓的路由控制,可以方便实现页面组合。重大缺点:一个html页只能由一个
    2. 将分解的页面写成 directive
    3. ng-include
  • 以上三种方法是实质上都是通过ajax来加载模版,使用ajax来实现页面分解这样的功能,相比传统的使用后台动态脚本语言的方案,必然会带来额外的开销。事实上,不光angularjs是这样,我所接触过的所有前端框架都是如此。这是浏览器端的宿命。这里所造成的负载和与后台动态脚本语言之间的优劣,只能由技术主管自己权衡。

angularJs与其他类库的协作

博文原址

  • 类库和框架的区别?
  • 框架的轻重之分如何区别?标准是什么?backbone这种属于轻量级框架,它简单易用,专注于前端Mvc的实现,故而你还需要很多第三方类库(至少jquery)来完成dom操作、UI等各种各样的内容。Yui、dojo属于重型框架,他们的作者企图搞出一个森罗万象的框架+组件库,包括代码动态调用、各种UI组件都包含在内,学习成本较高,但是一旦精通,至少这个项目别无所求。

  • 轻量级框架像毛坯房,重量级框架是精装??不吐槽这比喻了

  • angulaJs是中等重量级框架?
  • 什么事JSF思想?什么是DSL、组件化思想?

angularJs的性能问题

博文原址

由于这篇文章涉及过深,目前我还不想去探究,所以问题攒下来先。

待博主更新

...


左银右煌 /
Published under (CC) BY-NC-SA in categories programming  tagged with AngularJS