AngularJS四大核心特性
- MVC
- 模块化
- 指令系统
- 双向数据绑定
MVC
Model:数据模型层
View:视图层,负责展示
Controller:业务逻辑和控制逻辑
好处:职责清晰,代码模块化
为什么需要MVC?
- 代码规模越来越大,切分模块是大势所趋
- 为了复用:很多逻辑是一摸一样的
- 为了后期维护方便:修改一块功能而不影响其他功能
- MVC只是手段,终极目标是模块化和复用
前端MVC的困难在哪里?
- JS脚本分两个阶段:第一个阶段是浏览器加载它,浏览器加载完JS之后,会通过内部的JIT(即时编译器)编译执行。
- 操作DOM的代码必须等待整个页面全部加载完成。
- 多个JS文件之间如果出现相互依赖,程序员必须自己解决
- JS的原型继承给前端编程带来了很多困难。
为什么23种设计模式中没有MVC?
GoF(Gang of Four,四人组,《Design Patterns: Elements of Reusable Object-Oriented Software》/《设计模式》一书的作者:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)并没有把MVC提及为一种设计模式,而是把它当做“一组用于构建用户界面的类集合”。在他们看来,它其实是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub),策略模式(Strategy)和组合模式(Composite)。根据MVC在框架中的实现不同可能还会用到工厂模式(Factory)和装饰器(Decorator)模式。
AngularJS如何实现模块化?
ng-app:相当于Java中的main方法,从ng-app开始,内部标签的所有内容归AngularJS所有。
双向数据绑定
视图和数据对应,视图上面的内容发生变化时,数据模型里面的内容也立刻发生变化,当数据模型发生变化时,视图自动更新。
我们需要什么样的前端开发环境?
- 代码编辑工具:足够强大灵活
- 断点调试工具
- 版本管理工具:Git
- 代码合并和混淆工具:安全问题 grunt
- 依赖管理工具:管理插件控件之间的依赖。bower
- 单元测试工具
- 集成测试工具:模拟用户输入
- 轻量级server——http-server