是angular2 mvc?

Ram*_*m V 29 angular

我曾在Angular 1工作.它显然有一个控制器,它充当了View和Model之间的中介.我意识到在Angular 2中我们没有任何控制器.

那么我们仍然可以将Angular 2称为MVC框架吗?我知道MVC是一种设计模式,你可以用任何语言实现它.但是,关于Angular 1,我从很多人那里听说它是一个MVC框架,我看到的大多数例子都说明Angular 1是MVC,Controller将Model与View分开.所以,我想知道,现在在Angular2中有组件,我们仍然可以将其称为MVC吗?或者作为组件本身遵循MVC范例,因为我确实看到在每个组件中我们分开View和Data并使用绑定,也许我们仍然可以将其称为MVC.

bin*_*dMe 24

Angular 2更多是基于组件的体系结构.您可以将所有内容视为指令,服务等组件.虽然指令和服务实际上是用于支持基本组件,但它们也以类似的方式定义.基本组件包含依赖项,视图详细信息和类声明,可以视为控制器.因此,定义良好的组件由单独的MVC架构组成.

例如(角度2 alpha版本):

import {Component, View, bootstrap, provide, NgClass} from 'angular2/angular2';

@Component({
  selector : "my-home"
})

@View({
   directives : [NgClass, EditSettingPanel],
   styles: ['.hidden{ display : none} .visible{ display : block}'],
   templateUrl : "views/blog-panel.html"
})
export class home {
}

}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,您可以看到类"home"可以被假定为控制器,View是用@View装饰器编写的.组件定制由@component装饰器给出.您还可以看到不同的依赖注入练习.

编辑::示例(当前角度2/4版本)

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

@Component({
  selector: 'custom-component',
  templateUrl: './template.html',
  styleUrls: ['./style.scss'],
})
export class CustomComponent {}
Run Code Online (Sandbox Code Playgroud)

简而言之,angular 2是基于组件的MVC框架.

  • 我认为@View已从Angular 2中删除. (5认同)

Gün*_*uer 12

组件和指令是控制器,Angular处理的模板(HTML)和浏览器是视图,如果不将模型与控制器组合,则会获得MVC模式.

  • 服务就是一切。如果您显示相同的数据,则只需共享具有多个组件的服务。通常,使用可观察对象通知有关服务更改的视图是一个好主意。一些将业务逻辑放入组件中,另一些则倾向于保持组件哑巴并在服务中使用业务逻辑。您可以拥有多个级别的服务(取决于服务的级别或提供位置)。您可以直接在组件上提供服务(以为每个组件实例获取另一个实例),也可以通过在@NgModule()中提供它们来提供父组件或类似单例的服务。 (3认同)
  • 我在网络上的许多示例中看​​到,人们使用瞬态服务(每个组件都有单独的实例)来定义 http 方法来访问来自服务器的数据,然后将数据直接存储在视图组件中。在这种情况下,您根本没有模型层,因此为了协调多个视图的显示,您必须让单独的视图直接相互通信,或者通过服务器往返每次交互。事实证明,试图让我的团队相信这不是丰富交互 SPA 的合适方法,而我们需要的是适当的模型层,这是不可能的。 (2认同)

Art*_*ngh 6

Angular 2 在内部遵循 MVC,因为它的组件遵循完整的 MVC 架构。

但是如果你谈论我们在 angular2 中所做的就是 MV*。它可以是 MVVM 或 MVC。它不完全是MVC。

https://namitamalik.github.io/MVC-and-MVVM-with-AngularJS/