Angular学习笔记一之项目构建与模块创建

这篇具有很好参考价值的文章主要介绍了Angular学习笔记一之项目构建与模块创建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

Angular是三大框架之一,是最早开始出现并流行的框架。它是使用HTML、CSS、TypeScript编写的一个重量级框架,为大型应用开发而设计。使用Angular开发出来的客户端应用是高度模块化的。Angular提供了cli工具,组件和模块都可以使用cli工具提供的命令行来创建。Angular对于状态管理是相当到位的,可以轻松实现组件之间的数据共享。

二、Angular架构

(一)模块

Angular应用是由一个个模块组成的。这里的模块就是ngModel,是Angular中组织代码结构的一种方式。一个Angular应用至少有一个ngModel,称之为根模块。Angular应用启动过程中会使用根模块。在Angular中,ESModel和ngModel是同时使用的。ESModel是以文件为单位的,而一个ngModel可以由多个文件组成。ngModel是由NgModel装饰的类。

(二)组件

组件是用来描述用户界面,包括三部分:组件类(界面逻辑)、组件模版(HTML)、组件样式(样式:css less scss)。
在Angular中至少有一个根组件用于项目的启动。组件类是用Component装饰器装饰的类。组件是必须属于一个ngModel的,ngModel为组件提供的编译时的上下文环境。同一个组件不能属于两个模块。其他模块想使用该组件,就必须引入当前模块。

(三)服务

服务用来放置多个组件之间可以共享的数据或者逻辑。服务用于解耦组件类当中的代码。服务是用Injectable装饰器装饰的类。
Angular中的服务被设计为单例模式,这也是实现组件之间共享数据的基础。
服务是一个类,使用服务类时,按照之前的逻辑,是要使用new Service()创建一个类的实例对象来使用类的,但是服务与组件是高度分离的,服务的参数可能会有所修改,所以在使用服务类的时候不能用new关键字来创建服务类实例。
其实Angular内置的依赖注入系统会自动帮我们创建服务的实例对象。
在组件中使用服务,只需要在constructor中传递形参,并且通过类型告诉Angular你需要引入什么服务。

import { AppService } from "./AppService"

export class AppComponent {
  constructor (
  	private appService: AppService
  ) {}
}

private的含义:

  1. appService作为当前组件的一个属性来使用;
  2. appService只能在组件类中使用,不能在组件模版中使用。

三、使用AngularCLI创建Angular项目

点击前往AngularCLI官网

(一)创建

  1. 安装命令:cnpm i @angular/cli
  2. 创建项目:ng new angular-base --minimal --inline-template false
  3. ng new 的后缀列表
后缀 缩写 含义 数据类型 默认值
–skip-git 跳过初始化git仓库 boolean false
–minimal 创建一个不带单元测试的精简项目 boolean false
–skip-install 跳过模块安装环节 boolean false
–inline-template -t 在minimal状态下,html和ts文件是在一个文件里的,这个指令可以让html文件从ts文件抽离出来 boolean
–inline-style -s 将样式文件从类文件中抽离出来 boolean
–prefix -p 修改angular-cli创建的组件的前缀 string app

(二)构建项目

在初始化项目之后,package.json中为我们初始化好了运行项目的命令,也就是ng serve
如何创建一个angular项目,Angular,学习,笔记,angular
ng serve有几个后缀名

后缀 含义
–open 应用构建完毕后在浏览器打开
–hmr 开启热更新
–oprt 更改应用运行端口

(三)构建项目时的初始化文件解析

  1. main.ts
// Angular应用程序的启动在不同平台上是不一样的
// 在浏览器中启动需要引入platformBrowserDynamic,该方法返回平台实例对象
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
// 引入根模块 用于启动应用程序
import { AppModule } from './app/app.module';

// 启动应用程序
platformBrowserDynamic()
    .bootstrapModule(AppModule)
    .catch(err => console.error(err));

  1. app/app.module.ts
// ngModule是Angular的模块装饰器
import { NgModule } from '@angular/core';
// BrowserModule是浏览器解析的模块
// CommonModule提供各种服务和指令,比如NgIf、NgFor等,它是一个通用模块,可以在任何平台上使用
// BrowserModule导入了CommonModule,又重新导出了CommonModule,所以在浏览器中使用CommonModule时,只需要导入BrowserModule
import { BrowserModule } from '@angular/platform-browser';
// 引入根组件
import { AppComponent } from './app.component';

// 使用@ngModule装饰器来定义一个模块,
// @ngModule装饰器接受一个元数据对象
@NgModule({
    // 声明当前模块拥有哪些组件
  declarations: [
    AppComponent
  ],
    // 声明当前模块依赖哪些模块
  imports: [
    BrowserModule
  ],
    // 声明当前模块拥有哪些服务,这些服务只能在当前组件中使用
  providers: [],
    // 可引导组件,Angular会在引导过程中把它加载到DOM中
  bootstrap: [AppComponent]
})

export class AppModule { }

  1. app/app.component.ts
import { Component } from '@angular/core';

@Component({
  // 指定组件的使用方法
    // app-root => <app-root></app-root>
    // [app-root] => <div app-root></div>
    // .app-root => <div class="app-root"></div>
  selector: 'app-root',
  // 当前组件对应模版
  // tempalte/templateUrl
  templateUrl: './app.component.html',
  // 组件样式文件
  // styles/styleUrls
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'angular-base';
}

4.index.html

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>AngularBase</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <!-- 通过标记的形式调用了app-root-->
  <!--启动模块下边的启动组件的名字-->
  <app-root></app-root>
</body>
</html>

四、共享模块

共享模块是Angular应用中模块级别的需要共享的组件或逻辑。文章来源地址https://www.toymoban.com/news/detail-722774.html

  1. 创建共享模块 ng g m shared g->generate m->module
    如何创建一个angular项目,Angular,学习,笔记,angular
  2. 创建共享模块的组件 ng g c shared/components/Layout c->component
    加上路径的好处就是在模块中会自动引入组件。
    如何创建一个angular项目,Angular,学习,笔记,angular
  3. 导出共享文件,在模块中必须把共享组件导出,这样依赖该模块的模块才能使用共享组件
    如何创建一个angular项目,Angular,学习,笔记,angular
  4. 在根组件中使用共享模块
    1. 在app.module.ts中引入模块并且声明模块
    import { SharedModule } from './shared/shared.module';
    //--------------------------------------------------------------
    // ngModule内:
    imports: [BrowserModule, SharedModule],
    
    1. 在app.component.html中使用标记形式使用app-layout
    <div>app-root</div>
    <app-layout></app-layout>
    

到了这里,关于Angular学习笔记一之项目构建与模块创建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Angular 安装与创建第一项目

    https://nodejs.org/en 经过不算漫长的等待,你的 Angular CLI 就装好了。确认一下: cd 你的项目中 然后启动 7 其它 安装primeng 安装PrimeNG的主题库 然后,在 angular.json 文件中的styles数组中引入所选主题的CSS文件。例如: 在您的Angular应用中使用PrimeNG:您可以在您的组件中引入PrimeNG模

    2024年02月08日
    浏览(35)
  • itheima苍穹外卖项目学习笔记--Day9: 订单模块

    (1). 查询历史订单 在OrderController中,创建查询方法 在OrderServiceImpl中,创建分页查询方法,及其父类接口 在OrderMapper中,添加查询方法,并在映射文件中写入动态SQL语句 在OrderDetailMapper中,实现根据订单id查询订单明细 (2). 查询订单详细 在OrderController中,创建查询订单详细方

    2024年02月16日
    浏览(48)
  • Angular之创建项目报错:setTimeout is not defined

    零基础的宝们,跟着视频学习Angular中,会教授大家如何创建一个新项目。 但是在操作时就会遇到无法创建的问题。 接下来我们一起来看看,本人Angular起步时卡在家门口的问题。 在已经安装了nodejs的情况下,被建议使用cnpm命令全局安装 Angular CLI cnpm install -g @angular/cli 它是这

    2024年02月16日
    浏览(27)
  • 如何在 Angular 中为响应式表单创建自定义验证器

    简介 Angular 的 @angular/forms 包提供了一个 Validators 类,支持诸如 required 、 minLength 、 maxLength 和 pattern 等有用的内置验证器。然而,可能存在需要更复杂或自定义规则进行验证的表单字段。在这种情况下,您可以使用自定义验证器。 在 Angular 中使用响应式表单时,您可以使用函

    2024年02月22日
    浏览(31)
  • Angular 2 学习笔记

    Angular 2 应用主要由以下 几个部分组成: 1、模块 (Modules): 2、组件 (Components): 3、模板 (Templates)​​​​​​​: 4、元数据 (Metadata): 5、数据绑定 (Data Binding) 6、指令 (Directives) 7、服务 (Services): 8、依赖注入 (Dependency Injection) 9、路由(Route):建立URL路径和组件之间的对应

    2024年01月24日
    浏览(24)
  • Angular 学习笔记

    本系列笔记主要参考: Angular学习视频 Angular官方文档 Angular系列笔记 特此感谢! Angular 是一个基于 TypeScript 构建的开发平台。它包括: 一个基于组件的框架,用于构建可伸缩的 Web 应用 一组完美集成的库,涵盖各种功能,包括路由、表单管理、客户端-服务器通信等 一套开发

    2024年02月11日
    浏览(33)
  • SpringBoot 多模块项目构建(父/子模块)

    多模块项目 使用 SpringBoot 开发 Web 项目,如果项目整体不太复杂,无需使用微服务架构,为了开发的便利性可以采用 Maven 的多模块项目结构。 SpringBoot 的多模块项目就是基于 Maven 管理、对项目按照功能或者层级结构进行拆分,降低项目耦合性,抽取公共模块,实现一处开发

    2024年02月09日
    浏览(27)
  • Angular学习笔记:environment.ts文件

    本文是自己的学习笔记,主要参考资料如下。 - B站《Angular全套实战教程》,达内官方账号制作,https://www.bilibili.com/video/BV1i741157Fj?https://www.bilibili.com/video/BV1R54y1J75g/?p=32vd_source=ab2511a81f5c634b6416d4cc1067809f。 项目创建时会自动创建 environmet 文件夹,其中包含 environment.ts 和 environ

    2024年02月07日
    浏览(25)
  • Kendo UI for Angular 学习笔记

    [ maxlength ]:最大输入长度 [showSuccessIcon] / [showErrorIcon]:  显示内置验证图标 kendoTextBoxPrefixTemplate:前 后缀 icon [ clearButton ]=\\\"true\\\" : TextBox 中呈现 Clear 按钮 (“X”) [( ngModel )]=\\\"value变量\\\"  :双向绑定  [ disabled ]=\\\"isDisabled\\\" :禁用组件,isDisabled 变量值为布尔值  [ readonly ]=\\\"true

    2024年02月02日
    浏览(27)
  • Gradle构建SpringBoot单模块项目

    方式Ⅰ:未基于:Gradle Wrapper 方式Ⅱ:( 推荐 使用) Gradle Wrapper 【可以不安装Gradle、统一Gradle的版本】——包括Maven也是一样的可以用Wrapper的方式 版本:JDK8 + SpringBoot2.7.15 + Gradle8.x 本篇主要讲实现。Gradle与Maven的区别自己去看 别用这种方式,gradle的版本也低 一、需要先安

    2024年02月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包