初试 Angular

Posted GoldenaArcher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初试 Angular相关的知识,希望对你有一定的参考价值。

初试 Angular

Angular 总体来说分为 AngularJS(Angular 1)和 Angular(2+),1 和 2 之间实现上的差别挺大的,因为 1 还挺难用的,所以 2 基本上将 1 重写了。在 2 以上的版本都属于向下兼容,每半年会放一个新的大版本,不过变化都是比较小的。

这里放的就是 2+的内容,1 太老了,没有实际上的项目需求我就不考虑学了。

配置

这里用 node+cli 实现,命令如下:

➜  ang npm i -g @angular/cli
➜  ang ng new my-first-app
? Would you like to share pseudonymous usage data about this project with the Angular Team
at Google under Google's Privacy Policy at https://policies.google.com/privacy. For more
details and how to change this setting, see https://angular.io/analytics. No
Global setting: disabled
Local setting: No local workspace configuration file.
Effective status: disabled
? Would you like to add Angular routing? No
? Which stylesheet format would you like to use? CSS
➜  ang cd my-first-app
➜  my-first-app git:(main) ng serve
⠹ Generating browser application bundles (phase: building)...
Build at: 2023-02-26T18:58:34.868Z - Hash: 88f7254324596bc9 - Time: 10946ms

** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **

运行后如下:

这里没有配 router 和 CSS preprocessor,其他方面要注意的就是 cli 对 node 的版本有要求,太低的话会提示要升级,左右跟着提示做就行了。

简单分析

Angular 中的每个组件大致由下面这几个部分组成

  • css

    普普通通的 CSS 文件

  • html

    html 文件为模板文件,可以通过绑定 component.ts 中的文件获取数据,从而实现动态渲染

  • spec

    暂时略过

  • component

    和 html 进行数据绑定,从而动态渲染页面

  • module

    管理当前组件内的一些配置,如当前组件内会使用的 Angular 相关的模块

component

组件的代码如下:

import  Component  from '@angular/core';

@Component(
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
)
export class AppComponent 
  title = 'my-first-app';

装饰器中的部分是一些配置内容,如 selector 会获取 src/index.html 中的 DOM 结点进行替换,templateUrl 顾名思义就是制定 html 模板文件。

class AppComponent 中的部分可以实现数据绑定,在 template HTML 中使用 mustache 语法,即 variable ,即可获值。

双向数据绑定

Angular 的数据是双向绑定的,即 View 中可以修改 Model 中的值,这个实现方式需要 Angular 提供的 ngModel 这个模块,如:

  • 修改 HTML 模板文件:

    <input type="text" [(ngModel)]="title" />
    <p> title </p>
    
  • 修改 module.ts

    import  NgModule  from '@angular/core';
    import  BrowserModule  from '@angular/platform-browser';
    // newly imported module
    import  FormsModule  from '@angular/forms';
    
    import  AppComponent  from './app.component';
    
    @NgModule(
      declarations: [AppComponent],
      imports: [BrowserModule, FormsModule],
      providers: [],
      bootstrap: [AppComponent],
    )
    export class AppModule 
    

随后即可实现双向数据绑定,最开始的渲染 HTML 模板文件中获取的是 component.ts 中的值:

但是直接 input 中的内容同样也可以修改 title 的值:

Angular 加载过程

Angular 的 entry point 是 src/main.ts,这点也是在 angular.json 中配置的,其代码如下:

import  platformBrowserDynamic  from '@angular/platform-browser-dynamic';

import  AppModule  from './app/app.module';

platformBrowserDynamic()
  .bootstrapModule(AppModule)
  .catch((err) => console.error(err));

可以看到 angular 会引入并挂载组件,最终运行组件中的代码。

以上是关于初试 Angular的主要内容,如果未能解决你的问题,请参考以下文章

直接初试化,拷贝初试化,值初试化

SQLite初试

爬虫初试

Android初试水

爬虫之初试

初试Nginx