AngularJS vs AngularJS

AngularJS vs AngularJS,angularjs,angular,Angularjs,Angular,几个月前,我决定学习英语。当我在做一些改进并使用它创建一些应用程序时,我意识到Angular 2在开发者预览中,所以它发布之前只是时间问题。因为Angular 2与Angular 1不兼容,而且有很多变化,问题是,继续使用Angular 1.x开发还是开始开发Angular 2更好 事实上,我们不必总是使用市场上的最新版本或最新语言,但在这种情况下,应用程序仍然很小,因此我可以毫无问题地进行更改 让我先说一句,我假设你和所有将要阅读本文的人都已经对Angular 1感到满意了(,而不是对较新版本

几个月前,我决定学习英语。当我在做一些改进并使用它创建一些应用程序时,我意识到Angular 2在开发者预览中,所以它发布之前只是时间问题。因为Angular 2与Angular 1不兼容,而且有很多变化,问题是,继续使用Angular 1.x开发还是开始开发Angular 2更好


事实上,我们不必总是使用市场上的最新版本或最新语言,但在这种情况下,应用程序仍然很小,因此我可以毫无问题地进行更改

让我先说一句,我假设你和所有将要阅读本文的人都已经对Angular 1感到满意了(,而不是对较新版本来说只是Angular)。这就是说,让我们来看看Angular 2+中的一些加法和关键区别

  • 他们添加了一个角度
    cli
  • 您可以通过运行
    ng new[app name]
    启动新项目。 您可以通过运行
    ng serve
    在此处了解更多信息:

  • 您的angular代码是用ES6 Typescript编写的,它在运行时在浏览器中编译为Javascript。
  • 为了完全掌握这一点,我建议查看我答案底部的一些资源列表

  • 项目结构
  • 在一个基本结构中,您将拥有一个
    app/ts
    文件夹,您将在其中完成大部分工作,并在
    app/js
    文件夹文件中找到一个扩展名为
    .js
    app/js
    。它们将“.ts”文件“映射”到浏览器进行调试,因为浏览器无法读取本机typescript。

    更新:已过测试版。在大多数情况下,项目结构发生了一些变化,如果您使用的是angular cli,那么您将在
    src/app/
    文件夹。在初学者项目中,您将拥有以下内容

    app.component.css 
    app.component.html
    app.component.spec.ts
    app.component.ts 
    app.module.ts
    index.ts
    
    app.component.css:您应该针对
    component.html

    app.component.html:视图(在app.component.js中声明的变量)

    应用组件规范ts:用于测试
    应用组件规范ts

    app.component.ts:绑定到
    app.component.html

    app.module.ts:这是启动应用程序以及定义所有插件、组件、服务等的地方。这相当于Angular 1中的
    app.js

    index.ts用于定义或导出项目文件

    其他信息:
    专业提示:您可以运行
    ng generate[option][name]
    生成新的服务、组件、管道等

    另外,
    tsconfig.json
    文件很重要,因为它为您的项目定义了TS编译规则

    如果你认为我必须学习一门全新的语言?。。。UH在某种程度上,TypeScript是JavaScript的超集。不要被吓倒;它可以让你的发展更容易。在玩了几个小时之后,我感觉自己对它有了很好的理解,三天之后,我就把它都搞定了

  • 绑定到HTML的方式与在Angular 1指令中绑定的方式类似。因此,像
    $scope
    $rootScope
    这样的变量已被弃用。
  • 这一次你可能被暗示了。Angular 2仍然是一个MV*,但是您将使用“组件””作为将代码绑定到模板的一种方式,例如,采取以下步骤

        import { Component } from '@angular/core';
    
        @Component({
             selector:'my-app',
             template: '<h1> Hello World! </h1>'
        })
    
        export class AppComponent {}
    
    其中,
    是您将使用的自定义标记的名称,它将作为模板中声明内容的占位符。i、 你好,世界。然而,在v1中,这看起来如下所示:

    HTML

    <h1>{{hello}}</h1>
    
    <h1 ng-controller="myCtrl">{{hello}}</h1>
    
    您还可以在这些标记之间添加一些内容以生成加载消息,如下所示:

    <my-app> Loading... </my-app> 
    
    在v1中,这看起来像

    JS

    $scope.hello = "Hello World!"
    
    angular.module('controller', [])
    
    
    
    .controller('myCtrl', function( $scope) {
        $scope.hello = "Hello World!"
    })
    
    这就是我真正喜欢v2的地方。我发现指令在v1中对我来说是一条陡峭的学习曲线,甚至当我弄明白它们时,我经常使用
    CSS
    呈现,而不是我想要的。我发现这更简单

    V2允许更轻松地扩展应用程序,因为您可以比v1更轻松地分解应用程序。我喜欢这种方法,因为您可以将所有工作部件放在一个文件中,而不是放在多个文件中

    如何将项目从v1转换为v2?


    根据我从开发团队那里听到的消息,如果您想将v1项目更新为v2,您只需检查并删除不推荐的blob,然后将
    $scope
    s替换为
    选择器
    s即可。我觉得这个视频很有帮助。这是与爱奥尼亚团队的一些人,他们正在与angular团队并肩工作,因为v2更加关注移动设备,希望这会有所帮助

    更新:随着Angular 2的正式实现浮出水面,我通过添加示例进行了更新

    更新2:这似乎仍然是一个很受欢迎的问题,所以我想我需要一些在开始使用angular 2时发现非常有用的资源

    有用资源: 有关ES6的更多信息,我建议查看新波士顿的

    要编写Typescript函数并查看它们如何编译为Javascript,请查看


    要查看Angular 2中Angular 1等价物的函数分解,请参见

    无框架是完美的。您可以阅读有关角度1和角度1中的缺陷。但这并不意味着它是坏的。问题是你在解决什么问题。如果您想快速推出一个简单的应用程序,它是轻量级的,数据绑定有限,那么请继续使用Angular 1。Angular 1是6年前为解决快速原型设计而建造的,它做得非常好。即使您的用例很复杂,您仍然可以使用Angular 1,但您应该使用b
    angular.module('controller', [])
    
    
    
    .controller('myCtrl', function( $scope) {
        $scope.hello = "Hello World!"
    })