• Angular入门


    注:以下内容都是基于Windows环境讲解说明的。

    一、了解

      1.什么是Angular?

    二、环境配置以及工具

      1.安装NodeJs和npm

        a.Nodejs安装

        b.npm包管理器

        c.cnpm(淘宝镜像)

      2.Visual Studio Code

        a.chrome debugger插件安装

        b.VSCode快捷键

        c.VSCode调试Angular代码

        d.其他插件推荐

    三、项目创建

    四、Angular项目说明

      1.目录说明

      2.Angular属性操作、元素操作、指令

      3.Angular的生命周期

      4.demo举例

     =================分 ==================界 ==================线 =================

    一、了解

      1.什么是Angular

      Angular是一个基于TypeScript的开源Web应用程序框架,一个用HTML,CSS和JavaScript / TypeScript构建客户端应用程序的框架。Angular是由构建AngularJS的团队重写的。

    二、环境配置以及工具

      1.安装NodeJs和npm

        a.Nodejs安装

        确保开发环境中包含Node.js和npm包管理器。

        去官网下载NodeJs,找到环境合适稳定的版本进行下载安装,安装会自动配置全局变量
    https://nodejs.org/en/

     安装后打开终端/控制台窗口允许命令查看是否安装成功

    node -v

        b.npm包管理器

        Angular、Angular CLI和Angular应用都依赖于npm包中提供的特性和功能。想要下载npm包,就必须要拥有一个npm包管理器。

        好在安装Nodejs的时候已经默认安装了,所以只需要在安装完NodeJs后验证是否安装npm即可。

        在终端/控制台窗口输入命令进行验证 

    npm -v

        c.cnpm(淘宝镜像)

        一般的项目会通过 npm install 安装应用等等,但是时间会比较长,或者不知道什么原因出现错误,这时候推荐使用cnpm,下面使用命令安装cnpm并指定淘宝镜像。 

    npm install -g cnpm --registry=https://registry.npm.taobao.org

      2.Visual Studio Code

        a.chrome debugger插件安装

        直接在VSCode扩展(ctrl+shitf+x)搜索 Debugger for Chrome,点击安装即可。这个插件以便于开发阶段前台进行debug。

        b.VSCode快捷键

        网上搜索一大堆,就不介绍了。https://code.visualstudio.com/docs/getstarted/keybindings

        c.VSCode调试Angular代码

        安装完Debugger for Chrome后,按F5配置Debug参数,默认即可。保存后再次按F5进入debug模式。提前打好测试断点。

        F8进入下一步,F5直接走完。

        d.其他插件推荐

        TSLint:Typescript语法检查 Prettier:代码格式化 IntelliJ IDEA

    三、项目创建

    // TODO

    四、Angular项目说明

      1.目录说明

    webapp
    
    ├── app                               - Your application(你的应用)app根模块
    
    │   ├── account                       - User account management UI(用户账号管理界面)
    
    │   ├── admin                         - Administration UI(管理员界面)
    
    │   ├── blocks                        - Common building blocks like configuration and interceptors(公共构建模块和拦截器)
    
    │   ├── components                    - Common components like alerting and form validation(常用组件,比如警告组件和验证组件)
    
    │   ├── entities                      - Generated entities (more information below)(生成的实体,下面会有介绍)
    
    │   ├── home                          - Home page(主页)
    
    │   ├── layouts                       - Common page layouts like navigation bar and error pages(通用页面布局,类似导航条和错误页)
    
    │   ├── services                      - Common services like authentication and user management(通用服务,类似身份验证和管理)
    
    │   ├── app.constants.js              - Application constants(应用常量)
    
    │   ├── app.module.js                 - Application modules configuration(应用modules配置)根模块,之后添加的组件都会在这里面进行引用
    
    │   ├── app.state.js                  - Main application router(应用路由--单页应用业务通过js控制,无法简单通过url控制,故而使用应用路由,详情请百度)
    
    ├── bower_components                  - Dependencies installed by Bower(通过Bower安装的依赖)
    
    ├── content                           - Static content(静态内容)
    
    │   ├── images                        - Images(图片)
    
    │   ├── styles                        - CSS stylesheets(css样式表)
    
    │   ├── fonts                         - Font files will be copied here(字体库)
    
    ├── i18n                              - Translation files(国际化语言文件)
    
    ├── scss                              - Sass style sheet files will be here if you choose the option(如果创建应用选择了LibSass,则其文件会在这生成)
    
    ├── swagger-ui                        - Swagger UI front-end(SwaggerAPI文档前段页面)
    
    ├── 404.html                          - 404 page(404错误页)
    
    ├── favicon.ico                       - Fav icon(网站图标)
    
    ├── index.html                        - Index page(索引页)入口
    
    ├── robots.txt                        - Configuration for bots and Web crawlers(针对搜索引擎爬虫的配置文件)
    
    ├── package.json                   - 配置文件,包括依赖
    
    ├── robots.txt                        - Configuration for bots and Web crawlers(针对搜索引擎爬虫的配置文件)
    

      

      2.Angular属性操作、元素操作、指令

        a.*ngFor

        

    ts:
    let colors = [ 'red', 'blue', 'yellow', 'green' ];
    
    html:
    <div *ngFor="let color of colors let i=index let odd=odd">
      {{odd}}
      {{i}}
      {{color}}
    </div>

        效果如下:

        b.*ngIf

    <div *ngIf="showInfo">{{message}}</div>

        c.ngClass,ngStyle

    <span class="badge" [ngClass]="getBadgeClass(health.status)" jhiTranslate="{{'health.status.' + health.status}}">
      {{health.status}}
    </span>

    <span class="badge" [ngStyle]="{'color': 'red'}" jhiTranslate="{{'health.status.' + health.status}}">
      {{health.status}}
    </span>

        d.*ngSwitch

    <ul [ngSwitch]="score">
    <li *ngSwitchCase="1">已支付</li>
    <li *ngSwitchCase="2">订单已经确认</li> <li *ngSwitchCase="3">已发货</li>
    <li *ngSwitchDefault>无效</li>
    </ul>

        e.click执行事件

    <button class="button" (click)="getData()"> 点击按钮触发事件
    </button>

        g.表单事件

    <input type="text" (keyup)="keyUpFn($event)"/>
    
    keyUpFn(e){
        console.log(e)
    }

        h.管道

        时常我们需要把数字显示成金额、大小写转换、日期等等。 Angular管道对于象这样小型的转换来说是个很方便的选择。管道是一个简单的函数,它接受一个输入值,并返回转换结果。

    <p>{{today | date:'yyyy-MM-dd HH:mm:ss'}}</p>

        i.双向数据绑定

        1.首先在app.module.ts里面引入并声明;

        2.再在input里使用[(ngModel)]="inputVal"双向绑定数据

        3.home.component.ts里面的方法为了测试通过model来改变视图

     

         j.路由

     RouterModule.forRoot(
                [
                    ...LAYOUT_ROUTES,
                    {
                        path: 'admin',
                        loadChildren: './admin/admin.module#FccAdminModule' // 告诉路由从另一个模块中获取子路由:需要导入模块的相对路径、# 分隔符、导出模块类的名称
                    },

      3.Angular的生命周期

        生命周期函数通俗的讲就是组件创建、组件更新、组件销毁的时候会触发的一系列的方法。
        当 Angular 使用构造函数新建一个组件或指令后,就会按下面的顺序在特定时刻调用这些 生命周期钩子方法。
        每个接口都有唯一的一个钩子方法,它们的名字是由接口名再加上ng前缀构成的,比如OnInit接口的钩子方法叫做ngOnInit.

        a.生命周期钩子分类

        基于指令与组件的区别来分类

        指令与组件共有的钩子

    ngOnChanges 当数据绑定输入属性的值发生变化时调用 // 调用顺序1
    ngOnInit 在第一次 ngOnChanges 后调用 // 调用顺序2
    ngDoCheck 自定义的方法,用于检测和处理值的改变 // 调用顺序3
    ngOnDestroy 指令销毁前调用 // 调用顺序8

        组件特有的钩子

    ngAfterContentInit 在组件内容初始化之后调用 // 调用顺序4
    ngAfterContentChecked 组件每次检查内容时调用 // 调用顺序5
    ngAfterViewInit 组件相应的视图初始化之后调用 // 调用顺序6
    ngAfterViewChecked 组件每次检查视图时调用 // 调用顺序7

        首次加载生命周期顺序

    export class LifecircleComponent {
    
        constructor() {
    
            console.log('00构造函数执行了---除了使用简单的值对局部变量进行初始化之外,什么都不应该做')
        }
    
        ngOnChanges() {
    
            console.log('01ngOnChages执行了---当被绑定的输入属性的值发生变化时调用(父子组件传值的时候会触发)'); 
        }
    
        ngOnInit() {
            console.log('02ngOnInit执行了--- 请求数据一般放在这个里面');
        }
        ngDoCheck() {
            console.log('03ngDoCheck执行了---检测,并在发生 Angular 无法或不愿意自己检测的变化时作出反应');
        }
        ngAfterContentInit() {
            console.log('04ngAfterContentInit执行了---当把内容投影进组件之后调用');
        }
        ngAfterContentChecked() {
            console.log('05ngAfterContentChecked执行了---每次完成被投影组件内容的变更检测之后调用');
        }
        ngAfterViewInit() : void {
            console.log('06 ngAfterViewInit执行了----初始化完组件视图及其子视图之后调用(dom操作放在这个里面)');
        }
        ngAfterViewChecked() {
            console.log('07ngAfterViewChecked执行了----每次做完组件视图和子视图的变更检测之后调用');
        }
    
        ngOnDestroy() {
            console.log('08ngOnDestroy执行了····');
        }
    
        //自定义方法
        changeMsg() {
    
            this.msg = "数据改变了";
        }
    }

      4.demo举例

     

  • 相关阅读:
    文本效果
    C# 将数据导出到Execl汇总[转帖]
    using方法的使用
    存储过程的相关记录
    Dictionary 泛型字典集合[转帖]
    JS验证
    浅谈AutoResetEvent的用法 [转帖]
    聊聊xp和scrum在实战中的应用问题
    字体下载
    [转] 前端开发工程师如何在2013年里提升自己
  • 原文地址:https://www.cnblogs.com/peijyStudy/p/14994183.html
Copyright © 2020-2023  润新知