Angular 是什么

Angular(读音['æŋgjʊlə])是一套用于构建用户界面的 JavaScript 框架。由 Google 开发和维护,主要被用来开发单页面应用程序。

  • 类似于 Vue.js

    • MVVM(数据驱动视图思想)
    • 组件化
    • 模块化
    • 指令
    • ......
  • 由 Google 开发和维护
  • 开发单页面应用程序(SPA)

特性

  • MVVM
  • 组件化
  • 模块化
  • 指令
  • 服务
  • 依赖注入
  • TypeScript
  • ...

发展历史

起源

2009年,Misko hevery 和 Adam abrons 在业余时间打造了 GetAngular

Misko Hevery 接手了 Google 内部的一个项目 Feedback ,该项目经过6个月的迭代代码量已经达到了17000行。项目的开发和维护已经变得非常的困难。所有 Misko 就决定用 GetAngular 重写这个项目。

结果就是小伙子成功了,使用 `GetAngular 之后该项目从17000行缩减到了1500行,前后仅仅使用了三周时间。

Misko 领导一看,小伙子厉害啊,同时也看到了 GetAngular 所带来的商业价值,所以决定把 GetAngular 正式立项,组织专职团队开发和维护。

Abrons 后来离开了这个计划,但在 Google 工作的 Hevery 和一些谷歌员工如 Igor Minár 和 Vojta Jína 等则继续开发维护此库。

由于已不再是个人项目,所以开发团队将 GetAngular 重新命名为了 AngularJS

至此,AngularJS 就进入了漫长的发展迭代阶段。

  • 经过了3年的发展,AngularJS 在2012年6月份,1.0.0 版本正式推出。
  • AngularJS 在1.2之后的版本不再支持 IE 6和7
  • AngularJS 在 1.3 之后不再支持 IE8
  • AngularJS 在 1.5 增加了类似组件化的开发方式
    • 为过渡到 Angular2 做铺垫
  • AngularJS 1.x.x 当前已发布到了 1.6.x

困境

  • 饱受诟病的性能问题

    • 脏检查
  • 落后于当前 Web 发展理念
    • 例如组件化
    • 模块化支持不好
  • 对移动端支持不够友好

Angular 2 横空出世

Angular 1.x 由于问题太多,历史包袱太重,重构几乎不可能。

不过早在2014年3月,官方博客就有提及开发新版本 Angular 的计划。

2014年9月下旬一个大会上,Angular2 正式亮相。

2016年9月15号,Angular2 正式发布。

由于 ng2 几乎完全重写了 ng1 ,所以官方把2之后的版本都称之为 Angular。

Angular 2 之后的正式 Logo:

新版本发布了,那用户如何从 1 升级到 2 呢?

那到底要不要更新呢?

ng2 相比 ng1

  • 移除了 controller+$scope 的设计方式,改用了当前主流的组件化构建
  • 相比 ng1 性能更好
  • 优先为移动端设计
  • 更贴合未来标准
    • EcmaScript 6
    • Web Component
  • TypeScript
  • 反正就是更现代化,更好了......

现状

  • 自 Angular 2 之后,官方承诺之后的版本都会兼容到 Angular 2
  • 当前 Angular 最新发布版为 5.x.x
  • 新版的 Angular 在 Github 上也已收获了 3万+ ☆
  • 使用量低于 React 和 Vue

那我为什么要学习使用 Angular ?

任何一种技术或者框架,一定要有自己的特色,如果跟别人的完全一样,解决的问题也和别人一样,那存在的意义和价值就会遭到质疑。

  • 企业需求
  • 增加职业竞争力
  • 技术的本质思想都是一样的,也许你在其它技术中无法理解的事物,在这门课程中你能找到答案。

这里我们要明白技术只是工具,主要目的还是用来帮助我们解决业务问题。
作为开发人员,我们对待技术的态度应该博学开放,多学习和了解不同技术。
只有当你见得东西多了才能有自己的想法,才不会人云亦云,不至于迷失在技术更新迭代的浪潮之中!

学习 Angular 的一些建议

  • 读官方文档
  • 写 demo 测试
  • 写小项目练手
  • 参与实际项目开发经验
  • 日积月累......

相关链接

ng-简介的更多相关文章

  1. Flume NG简介及配置

    Flume下载地址:http://apache.fayea.com/flume/ 常用的分布式日志收集系统: Apache Flume. Facebook Scribe. Apache Chukwa ...

  2. Flume NG 简介及配置实战

    Flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 clo ...

  3. 拥抱AngularJS

    文中一些地方AngularJS简称ng 简介: ng诞生于2009年,由Misko Hevery等创建,后被Google收购,为克服HTML在构建应用上的不足而设计. 是一款优秀的前端JS框架,核心特 ...

  4. Andrew Ng机器学习算法入门(一):简介

    简介 最近在参加一个利用机器学习来解决安全问题的算法比赛,但是对机器学习的算法一直不了解,所以先了解一下机器学习相关的算法. Andrew Ng就是前段时间从百度离职的吴恩达.关于吴恩达是谁,相信程序 ...

  5. Flume NG之Interceptor简介

    转载地址:http://www.cnblogs.com/lxf20061900/p/3658172.html 有的时候希望通过Flume将读取的文件再细分存储,比如讲source的数据按照业务类型分开 ...

  6. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  7. 《AngularJS深度剖析与最佳实践》简介

    由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...

  8. 1.Struts2简介和Struts2开发环境搭建

    一.Struts2简介: 1.什么是Struts2? 著名的SSH三大框架分别为:表现层(Struts).业务逻辑层(Spring),持久化层(Hibernate). Struts2是在WebWork ...

  9. 版本控制简介,git使用----使用GitHub托管代码

    关于版本控制: 很久以前,人们苦于对写过的代码进行版本的管理,经常过了一段时间想恢复原来写过的代码却又忘了不知道丢到哪儿去了,有的人用加上时间后缀来命名文件的方法,便于后期维护,但是这样做的麻烦也很大 ...

  10. lecture1-NN的简介

    这是DL的发明人Hinton在多伦多大学的2013年冬季教授de课程,并将视频分享到coursera网站上.其中不但有视频,也有课件,但是Hinton主页上还有他上课的课后问题,Hinton告诉学生这 ...

随机推荐

  1. HDU_5045_状态压缩dp

    http://acm.hdu.edu.cn/showproblem.php?pid=5045 i从1到m依次更新,dp[i][j]表示更新到i题时,j表示每个人的答题状态,分别用0和1表示(因为每个人 ...

  2. Codeforces_462_B

    http://codeforces.com/problemset/problem/462/B 简单的贪心,排序即可看出来. #include<cstdio> #include<ios ...

  3. Codeforces Global Round 3(A-D)

    我凉了..感觉自己啥都不会做,搞不好起床就绿了啊 代码和反思起床补,今天要反了个大思的 A. Another One Bites The Dust 把所有的ab排在一起然后两边叉a和b #includ ...

  4. LeetCode 343.整数拆分 - JavaScript

    题目描述:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 题目分析 题目中"n 至少可以拆分为两个正整数的和",这个条件说 ...

  5. 关于django.conf.urls的路由匹配问题

    1. 问题 目前自己在写一个网站,但是在后端写好api前端请求的时候,无论如何都请求不到对应的python函数上去,于是自己就把对应的url名修改之后就可以了,具体如下: ## 出现问题的代码 fro ...

  6. drf路由分发、解析/渲染模块配置、使用admin、自动序列化配置

    目录 drf路由分发配置 解析模块配置 渲染模块配置 浏览器渲染打开 浏览器渲染关闭 结论 drf使用后台admin drf序列化模块 serializers.py: views.py:单查群查 测试 ...

  7. coroutine - yield from

    yield from yield from x 表达式对 x 对象所做的第一件事是,调用 iter(x),从中获取迭代器.因 此, x 可以是任何可迭代的对象. 可是,如果 yield from 结构 ...

  8. 20200118--python学习第十一天

    今日内容 函数小高级 lambda表达式 内置函数 内容回顾 1.函数基本结构 2.参数 形参 基本参数:def func(a1,a2):pass 默认值:def func(a1,a2=123):pa ...

  9. webpack性能优化

    Webpack优化打包速度以及性能优化 1.跟上技术的迭代(Node.Npm.Yarn) 2.在尽可能少的模块上应用loader 3.Plugin尽可能精简并确保可靠 4.resolve参数合理配置 ...

  10. Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍

    本文承接上一篇:Java高级项目实战之CRM系统01:CRM系统概念和分类.企业项目开发流程 先来CRM系统结构图: 每个模块作用介绍如下: 1.营销管理 营销机会管理:针对企业中客户的质询需求所建立 ...