AngularJS与成角[闭合]

8dtrkrch  于 2022-12-26  发布在  Angular
关注(0)|答案(7)|浏览(169)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

六年前关闭了。
Improve this question
几个月前,我决定学习Angular。当我在做一些改进并使用它创建一些应用程序时,我意识到Angular 2处于开发者预览版,所以它发布只是时间问题。因为Angular 2不会与Angular 1兼容,而且有很多变化,问题是,继续开发Angular 1.x还是开始开发Angular 2更好?
这是一个事实,我们并不总是必须使用最新的版本,也不是最新的语言在市场上,但在这种情况下,应用程序仍然很小,所以我可以改变没有问题。

o75abkj4

o75abkj41#

让我先说一句,我假设你和将要阅读本文的每个人都已经很适应Angular 1(now referred to as AngularJS,而不是新版本的简单 * Angular )。话虽如此,让我们进入Angular 2+的一些补充和关键差异。
1.
* 他们添加了一个有Angular 的cli**
您可以通过运行ng new [app name]启动新项目。您可以通过运行ng serve为您的项目提供服务在此处了解详细信息:https://github.com/angular/angular-cli
1.* * 您的角代码是用ES6 Typescript编写的,它在运行时编译为浏览器中的Javascript。**
为了全面掌握这一点,我建议查看一下我答案底部的资源列表。
1.* * 项目结构**
在基本结构中,您将有一个app/ts文件夹,您将在其中完成大部分工作,还有一个app/js您将在app/js文件夹中找到扩展名为.js.map的文件。它们将您的. ts文件"Map"到您的浏览器,以便在您的浏览器无法读取本机类型脚本时进行调试。

    • 更新**:已经过了beta测试。项目结构做了一些改变,在大多数情况下,如果你使用angular cli,你将在src/app/文件夹中工作。在一个初学者项目中,你将有以下内容。
app.component.css 
app.component.html
app.component.spec.ts
app.component.ts 
app.module.ts
index.ts
    • 应用程序组件css**:应使用特定于component.html的CSS文件
    • 应用程序.组件. html**:视图(在app.component.js中声明的变量)
    • 应用组件规范ts**:用于测试app.component.ts
    • 应用程序组件. ts**:绑定到app.component.html的代码
    • 应用程序模块ts**:这是启动应用程序以及定义所有插件、组件、服务等的地方。这相当于Angular 1中的app.js
    • index. ts**用于定义或导出项目文件
    • 其他信息:**

专业提示:你可以运行ng generate [option] [name]来生成新的服务、组件、管道等等。
tsconfig.json文件也很重要,因为它定义了项目的TS编译规则。
如果你在想 * 我必须学习一门全新的语言?...呃...有点,TypeScript是JavaScript的超集。它的存在使你的开发更容易。我觉得我有一个很好的把握后,短短几个小时玩它,并有它的所有下来后,3天。
1.
* 绑定到HTML的方式类似于Angular 1指令。因此,$scope$rootScope等变量已被弃用。**
这一个你可能已经被暗示了。Angular 2仍然是一个MV*,但是你将使用"components"作为一种将代码绑定到你的模板的方式,例如,以下面的代码为例

import { Component } from '@angular/core';

    @Component({
         selector:'my-app',
         template: '<h1> Hello World! </h1>'
    })
    
    export class AppComponent {}

这里把import语句看作v1控制器中的依赖注入,使用import * import * 包,import {Component}表示要创建一个component,并绑定到HTML
请注意@Component装饰器,您有selectortemplate,这里将selector视为您使用的$scope,就像使用v1 directives一样,其中selector的名称是您用来绑定到HTML的名称,如下所示

<my-app> </my-app>

其中<my-app>是您将使用的自定义标记的名称,它将充当模板中声明内容的占位符。例如,)<h1> Hello World! </h1>。而在v1中,它看起来如下所示:

    • 超文本标记语言**
<h1>{{hello}}</h1>
    • 苏丹**
$scope.hello = "Hello World!"

您还可以在这些标记之间添加一些内容以生成加载消息,如下所示:

<my-app> Loading... </my-app>

然后将显示"* Loading ... *"作为加载消息。
请注意,template中声明的是路径或原始HTML,您将在HTML中的selector标记中使用它。
Angular 1的更完整实现看起来更像这样:

    • 超文本标记语言**
<h1 ng-controller="myCtrl">{{hello}}</h1>

在v1中,这看起来像

    • 苏丹**
angular.module('controller', [])


.controller('myCtrl', function( $scope) {
    $scope.hello = "Hello World!"
})

这就是我真正喜欢v2的地方。我发现directive对我来说是一个陡峭的学习曲线,即使当我弄清楚了它们,我也经常让CSS呈现不是我想要的。我发现这要简单得多。
V2允许您的应用程序更容易扩展,因为您可以比在V1中更容易地分解您的应用程序。我喜欢这种方法,因为您可以将所有工作部分放在一个文件中,而不是在Angular V1中有几个。

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

我从开发团队那里听说,如果你想把你的v1项目升级到v2,你只需要浏览并删除过时的blob,用selector替换你的$scope。我发现这个视频很有帮助。它是Ionic团队的一些成员制作的,他们与angular团队并肩工作,因为v2更关注移动https://youtu.be/OZg4M_nWuIk

    • 更新:**我通过添加示例进行了更新,因为Angular 2的官方实现已经浮出水面。
    • 更新2:**这似乎仍然是一个流行的问题,所以我只是想我有一些资源,我发现很有帮助,当我开始工作的Angular 2。

有用资源:

有关ES6的更多信息,我建议查看The New Boston的ECMAScript 6 / ES6 New Features Tutorials - YouTube Playlist
要编写Typescript函数并查看它们如何编译为Javascript,请查看Typescript language Playground
要查看Angular 1在Angular 2中的功能分解,请参见Angular.io - Cookbook -A1 A2 Quick Reference

x4shl7ld

x4shl7ld2#

这可能有助于您理解Angular 1与Angular 2的比较。
经证明,Angular 2比Angular 1具有许多优势:

  • 它完全基于组件。
  • 更好的变更检测
  • 提前编译(AOT)可提高渲染速度。
  • TypeScript主要用于开发Angular 2应用程序。
  • Angular 2的性能优于Angular 1。
  • Angular 2具有比Angular 1更强大的模板系统。
  • Angular 2有更简单的API,延迟加载,更容易调试。
  • Angular 2比Angular 1更易于测试。
  • Angular 2提供嵌套零部件。
  • Angular 2提供了一种同时执行两个以上系统的方法。
  • 等等...
ftf50wuq

ftf50wuq3#

Angular 2和Angular 1基本上是名称相同的不同框架。

Angular 2更适合Web标准的当前状态和Web的未来状态(ES6\7、不可修改性、组件、影子DOM、服务工作者、移动的兼容性、模块、 typescript 等等等等...)
angular 2取消了angular 1中的许多主要特性,如- controllers、$scope、directives(替换为@component注解)、模块定义等等,甚至像ng-repeat这样简单的东西也没有保持原样。
无论如何,改变是好的,Angular 1.x有它的缺陷,和Angular 2是更好地准备未来的网络需求。
总结一下--我不建议你现在就开始一个angular 1.x项目--这可能是最糟糕的时间,因为你以后必须迁移到angular 2,i你把你的想法放在angular上而不是选择angular 2,谷歌已经启动了一个angular 2项目,当你完成这个项目的时候,angular 2应该已经成为焦点了。如果你想要更稳定的东西,你可以考虑react\elm和flux以及redux作为JS框架。
Angular 2会很棒,这是毫无疑问的

i2byvkas

i2byvkas4#

没有一个框架是完美的。你可以在Angular 1 here和这里读到一些缺陷。但这并不意味着它很糟糕。问题是你在解决什么问题。如果你想快速推出一个轻量级的简单应用程序,与有限的数据绑定usage,然后继续与Angular 1。Angular 1是建立在6年前,以解决快速原型,它做得很好。即使您的用例很复杂,您仍然可以使用Angular 1,但您应该了解构建复杂Web应用程序的细微差别和最佳实践。如果您正在开发一个用于学习的应用程序,我建议转移到Angular 2,因为这是Angular的未来所在。

6ljaweal

6ljaweal5#

Angular v2和ReactJs的一个突出特点是,它们都采用了新的Web组件开发架构。这意味着我们现在可以创建独立的Web组件,并将其即插即用到世界上任何一个拥有与此Web组件相同技术堆栈的网站上。酷!是的,非常酷。:)
Angular v2中另一个最显著的变化是它的主要开发语言不是别人,而是TypeScript。虽然TypeScript属于微软,并且是2015年JavaScript(或ECMAScript 6/ES6)的超集,但它有一些非常有前途的特性。我建议读者在阅读完本教程后查看TypeScript的详细信息(当然这很有趣)。
在这里我想说,试图将Angular v1和Angular v2联系起来的人进一步混淆了读者,在我的拙见中,Angular v1和Angular v2应该被视为两个不同的框架。在Angular v2中,我们有Web组件开发Web应用程序的概念,而在Angular v1中,我们不得不玩控制器,(不幸或幸运的是)在Angular v2中没有控制器。

x6yk4ghg

x6yk4ghg6#

需要注意的一点是angular2使用的是typescript。
我在实习时用 cordova 做过angular1,现在我正在做angular2。我认为angular2将是一种趋势,因为它在我看来更有结构化,但缺点是,当你有问题或困难时,几乎没有资源可供参考。angular1.x有大量的个性化指令,可以超级容易使用。
希望有帮助。

afdcj2ne

afdcj2ne7#

Angular 2比Angular 1好得多,至少在它提供的方面:支持Web组件、使用typescript、性能和界面的整体简洁性是我决定使用angular 2开始一个项目的原因。然而,从一开始,我就意识到angular 2存在一些问题(例如,利用Apache的路由),对于该问题很少或没有文档可用,因此Angular 2的文档和社区是Angular 2的最大陷阱,因为它还不够发达。
我会说,如果你需要在短时间内快速建立一个网站,使用众所周知的angular 1,如果你在一个更长的项目中,并且有时间调查新的问题(你可能是第一个遇到的,如果你考虑到贡献,这可能是一个奖励,你可能给予angular 2社区),而不是使用angular 2。

相关问题