Angular 17 Vite 带来了新的开发体验

一、简介

txt 复制代码
 _________________________
< Hi~ 开始体验 Angular 17 >
 -------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Angular 17 带来了很多新的内容:

  • 使用 esm 输出
  • 使用 esbuild + vite 构建
  • 集成 SSR 与预渲染功能

二、Angular 脚手架

sh 复制代码
npm i -g @angular/cli 

安装之后得到了 ng 命令

  • 初始化
sh 复制代码
ng new demo1
  • 目录结构

启动 vite 文件在 .angular 文件中得以体现。

sh 复制代码
/root/demo1
├── README.md
├── angular.json # angular 配置
├── node_modules
├── package-lock.json
├── package.json
├── src # 源代码位置
├── tsconfig.app.json
├── tsconfig.json
└── tsconfig.spec.json
  • 启动服务
sh 复制代码
npm run start
  • 预览
  • vite 在浏览器中的变化 (websocket)

三、生成一个路由组件

sh 复制代码
ng g About

创建如下四个文件:

sh 复制代码
CREATE src/app/about/about.component.css (0 bytes)
CREATE src/app/about/about.component.html (20 bytes)
CREATE src/app/about/about.component.spec.ts (589 bytes)
CREATE src/app/about/about.component.ts (290 bytes)

四、配置路由

ts 复制代码
import { Routes } from '@angular/router';
import { AboutComponent } from './about/about.component';

export const routes: Routes = [
  { path: 'about', component: AboutComponent },
];

本质就是添加一个 JS 对象,是 path 与 component。

五、a 标签导航到新的路由

html 复制代码
<ul>
  <li><a routerLink="/about">About</a></li>
</ul>

六、编程式导航

html 复制代码
<div (click)="navigateToAbout()">go about</div>

div 上绑定导航事件,在 class 中定义路由导航

ts 复制代码
import { Router } from '@angular/router';

//...
export class AppComponent {
  constructor(private router: Router) { }
  navigateToAbout() {
    this.router.navigate(['/about']);
  }
}

在构造函数中注入 router 对象,然后 this 中就包含了 router 对象。

七、内置 rxjs

ts 复制代码
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Observable, interval, take } from 'rxjs';

@Component({
  selector: 'app-about',
  standalone: true,
  imports: [CommonModule],
  templateUrl: './about.component.html',
  styleUrl: './about.component.css'
})
export class AboutComponent {
  count: number = 0;

  constructor() {}

  ngOnInit() {
    let that = this
     // 创建一个每秒发出一个值的 Observable
    interval(1000).pipe(
      // 如果你想在一定数量的值之后停止,可以使用 `take` 操作符
      take(10) // 例如,这里是每隔一秒发出一个值,共发出10个值
    ).subscribe({
      next() {
        that.count += 1
      }
    })
  }
}

定义一个状态 count, 然后使用 rxjs 定时器 interval 中,不断改变 html 中的 count 的状态。

八、小结

文本主要体验 Angular 17 带来的新的编程体验,从脚手架,到路由配置,到rxjs处理状态,体验 Vite 在 Angular 17 中的新的编程体验。当然 在 Angular 17 中也带来了 SSR 等特性,对 Angular 感兴趣可以深入探索。

相关推荐
m0_748255261 小时前
前端安全——敏感信息泄露
前端·安全
鑫~阳3 小时前
html + css 淘宝网实战
前端·css·html
Catherinemin3 小时前
CSS|14 z-index
前端·css
2401_882727575 小时前
低代码配置式组态软件-BY组态
前端·后端·物联网·低代码·前端框架
NoneCoder5 小时前
CSS系列(36)-- Containment详解
前端·css
anyup_前端梦工厂5 小时前
初始 ShellJS:一个 Node.js 命令行工具集合
前端·javascript·node.js
5hand5 小时前
Element-ui的使用教程 基于HBuilder X
前端·javascript·vue.js·elementui
GDAL5 小时前
vue3入门教程:ref能否完全替代reactive?
前端·javascript·vue.js
六卿5 小时前
react防止页面崩溃
前端·react.js·前端框架
追逐时光者5 小时前
.NET 在 Visual Studio 中的高效编程技巧集
后端·.net·visual studio