基本概念有如下几个重要的点:
MVC的概念:
- MV是可复用的
- MVC是手段,目标是实现模块化,可复用
- 当然,前端的特性也会给前端MVC带来一定的困难
- Angular的MVC借助$scope实现
controller:
- 不要试图复用controller,不要在controller中操作DOM
- 要分清楚功能,该做什么,适合做什么,有的功能别的去做了,就不要去做
路由,模块,依赖注入
这里面说下:
1. 首先:路由功能在angularJS中是在不太好用,所以我们的项目用了UI-router,然后angular4那个项目中说到了4的路由功能已经很完善了。
2. 第二点:AngularJS中还是以模块为基本,一切从模块出发;angular4中则是以组件为基本,一切从组件出发,当然,这也是现在各个框架的一个发展趋势。
3. 第三点:依赖注入,解决了模块依赖的问题,这个可以深入了解下原理,还是很有趣的。(这里想到了异步的模块加载,AMD机制,以后可以专门写个这个,这个也是看深入浅出NodeJS里面开始系统的了解的)双向数据绑定
AngularJS是数据驱动的,所以视图层的展现,主要依赖数据模型的改变。这也是双向数据绑定带来的一个便利之处,可以通过在controller修改数据,改变视图的展现,而不必关心具体的DOM操作。
class = “text-{{abc}}”,如果想避免一些状况,还有ng-class.可以接收表达式。
ng-show,ng-hide
toggle(开关效果)
ngAnimate
@keyframes CSS3动画路由
Ajax不会留下History记录,用户没法加书签,也没法链接分享,SEO灾难
angular-route.js 没法实现深层次嵌套路由
ui-router, stateProvider, urlRouterProvider前端路由:
哈希#
html5中新的historyAPI
路由的核心是给应用定义“状态”
路由机制——应用的整体编码方式(需要预先定义好状态)
兼容性,优雅降级*指令
restrict:匹配模式(AEMC)
template
replace/transcludecomplie,link 加载,编译,链接
link中操作DOM,绑定事件监听器指令和控制器
tips:如果在html中用驼峰法则写的,js中要小写
scope.$apply(attrs.howtoload)指令和指令
AngularJS 内置了 jquery lite
controller,link独立scope
scope的绑定策略(@ = &)
AngualrJS内置指令:
ng.Directive
(form)对原生的进行了拓展,封装等第三方指令库(angula-ui)
miniui.com(ERP类型系统)
kissy gallery
ng-grid 封装data grid
Misko:设计理念——构建UI应该是声明式等。
灵感——Adobe公司从事FLEX工作
6. service和provider
不要试图复用controller
$http Ajax比较像
可以封装自己的服务(命名,依赖注入放在最后)
$scope.$watch()
timeout=>防抖动处理
Service 都是单例,由$injector负责实例化,在整个应用的生命周期中存在
ServiceProviderFactory本质上都是Provider(策略模式+抽象工厂模式的混合体)
$filter进行数据格式化的,可以自定义