- Angular 17+:使用最新的 Standalone Components 和 Signals 架构。
- Bootstrap 5:作为主要的 UI 框架和样式库。
- TypeScript:提供类型安全。
- Modern Angular CLI:用于项目构建和管理。
- 响应式设计:确保在所有设备上都有良好的体验。
- 模块化结构:代码清晰、易于维护。
我们将创建一个包含以下常见模块的单页应用:

- 导航栏:固定在顶部,包含品牌 Logo、导航链接和一个搜索框。
- 英雄区域:一个全屏宽度的横幅,带有引人注目的标题和行动号召按钮。
- 特性展示:三个并排的卡片,展示产品或服务的核心特性。
- 内容展示:一个带有图片和描述的图文混排区域。
- 页脚:包含版权信息和链接。
第 1 步:创建新的 Angular 项目
确保你已经安装了 Node.js 和 Angular CLI。
打开你的终端,运行以下命令来创建一个新的 Angular 项目:
# 创建一个名为 ng-bootstrap-template 的新项目 # --standalone 表示使用独立组件,这是 Angular 17+ 的推荐方式 # --style=css 表示使用 CSS 预处理器 ng new ng-bootstrap-template --standalone --style=css
当提示你是否添加 Angular 路由时,选择 No (因为我们现在先做一个单页应用,稍后可以轻松添加路由),进入项目目录:
cd ng-bootstrap-template
第 2 步:安装 Bootstrap
我们将通过 npm 来安装 Bootstrap 和它的 JavaScript 依赖(Popper.js 是 Bootstrap 5 所需的)。

npm install bootstrap@next
第 3 步:引入 Bootstrap 样式
为了让 Angular 项目能够使用 Bootstrap 的 CSS,我们需要在项目的全局样式文件中导入它。
打开 src/styles.css 文件,并在文件顶部添加以下行:
/* src/styles.css */
/* 导入 Bootstrap 的 CSS */
@import '~bootstrap/dist/css/bootstrap.min.css';
/* 你可以在这里添加你自己的全局样式 */
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
第 4 步:创建和配置组件
我们将按照模块化的方式创建所需的组件。
创建共享组件
这些组件(如 Navbar, Footer)可能会在多个页面重复使用,所以我们将它们放在一个 shared 目录下。

# 创建共享模块目录和组件 ng g c components/shared/navbar --standalone ng g c components/shared/footer --standalone
创建页面级组件
放在一个 home 组件中。
# 创建主页组件 ng g c components/home/home --standalone
第 5 步:编写组件模板和逻辑
让我们为每个组件添加 HTML 模板和必要的逻辑。
NavbarComponent
打开 src/app/components/shared/navbar/navbar.component.html 并替换其内容:
<!-- src/app/components/shared/navbar/navbar.component.html -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="#">Ng-Bootstrap</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" href="#">首页</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">lt;/a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">服务</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">联系我们</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="搜索" aria-label="Search">
<button class="btn btn-outline-success" type="submit">搜索</button>
</form>
</div>
</div>
</nav>
FooterComponent
打开 src/app/components/shared/footer/footer.component.html 并替换其内容:
<!-- src/app/components/shared/footer/footer.component.html -->
<footer class="bg-dark text-white py-4 mt-5">
<div class="container text-center">
<p>© 2025 Ng-Bootstrap 模板. 保留所有权利.</p>
<a href="#" class="text-white me-3">隐私政策</a>
<a href="#" class="text-white">使用条款</a>
</div>
</footer>
HomeComponent
这是最复杂的部分,包含了英雄区域、特性和内容展示。
打开 src/app/components/home/home.component.html 并替换其内容:
<!-- src/app/components/home/home.component.html -->
<div class="container mt-5 pt-5">
<!-- 英雄区域 -->
<section class="jumbotron text-center py-5">
<h1 class="display-4">欢迎使用 Ng-Bootstrap 模板</h1>
<p class="lead">这是一个使用 Angular 和 Bootstrap 5 构建的现代化网站模板,它响应迅速,易于定制。</p>
<a class="btn btn-primary btn-lg" href="#" role="button">了解更多</a>
</section>
<!-- 特性展示 -->
<section class="my-5">
<h2 class="text-center mb-4">核心特性</h2>
<div class="row">
<div class="col-lg-4 col-md-6 mb-4">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title">快速开发</h5>
<p class="card-text">利用 Angular 的强大功能和 Bootstrap 的丰富组件,可以快速构建美观且功能强大的 Web 应用。</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 mb-4">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title">响应式设计</h5>
<p class="card-text">模板默认采用响应式布局,能够完美适配桌面、平板和手机等各种屏幕尺寸。</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 mb-4">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title">易于维护</h5>
<p class="card-text">采用 Angular 的模块化组件结构,代码组织清晰,便于后续的功能扩展和维护。</p>
</div>
</div>
</div>
</div>
</section>
<!-- 内容展示 -->
<section class="my-5">
<div class="row align-items-center">
<div class="col-lg-6">
<img src="https://via.placeholder.com/600x400.png/007bff/ffffff?text=Angular+Bootstrap" class="img-fluid rounded shadow" alt="Angular and Bootstrap">
</div>
<div class="col-lg-6">
<h2>关于我们</h2>
<p>我们是一支专注于现代 Web 技术的开发团队,我们相信,通过使用像 Angular 和 Bootstrap 这样的优秀工具,可以为用户带来最佳的体验。</p>
<p>这个模板是我们理念的体现,它不仅美观,而且注重性能和可访问性。</p>
<a class="btn btn-outline-primary" href="#">了解更多</a>
</div>
</div>
</section>
</div>
第 6 步:组合所有组件
我们需要在主应用组件 (AppComponent) 中将所有部分组合起来。
打开 src/app/app.component.html,并替换其内容为:
<!-- src/app/app.component.html --> <app-navbar></app-navbar> <main> <app-home></app-home> </main> <app-footer></app-footer>
注意:由于 Navbar 是 fixed-top会覆盖在页面内容上,我们需要给 <main> 元素添加一些上内边距来避免被遮挡,打开 src/app/app.component.css 并添加:
/* src/app/app.component.css */
main {
padding-top: 76px; /* 根据你的 navbar 高度进行调整 */
}
第 7 步:在 app.config.ts 中提供组件
因为我们是使用独立组件,所以需要告诉 Angular 应用在哪些地方可以找到这些组件。
打开 src/app/app.config.ts 文件,并修改如下:
// src/app/app.config.ts
import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
// 导入你创建的组件
import { NavbarComponent } from './components/shared/navbar/navbar.component';
import { FooterComponent } from './components/shared/footer/footer.component';
import { HomeComponent } from './components/home/home.component';
// 如果你以后添加路由,请在这里导入
// import { routes } from './app.routes';
export const appConfig: ApplicationConfig = {
providers: [
provideRouter([]), // 现在没有路由,所以是空数组
// 提供所有需要使用的独立组件
provideComponentScoped(NavbarComponent),
provideComponentScoped(FooterComponent),
provideComponentScoped(HomeComponent),
],
};
第 8 步:运行项目
一切准备就绪!回到你的终端,运行开发服务器:
ng serve -o
-o 参数会自动在浏览器中打开你的应用,你应该能看到一个完整的、带有 Bootstrap 样式的网站了。
总结与进阶
你已经成功创建了一个功能齐全的 Angular + Bootstrap 模板!
从哪里可以继续发展?
- 添加路由:将
HomeComponent和其他页面(如AboutComponent,ContactComponent)通过 Angular Router 连接起来,创建一个多页应用。 - 使用 Angular Bootstrap 组件:除了使用 Bootstrap 的 CSS,你还可以安装
ngx-bootstrap库来获得封装好的 Angular 组件(如模态框、日期选择器、下拉菜单等),它们能更好地与 Angular 的生命周期集成。 - 集成后端:使用
HttpClient从你的后端 API 获取数据,并动态渲染到页面上。 - 添加状态管理:对于复杂的应用,可以考虑使用 NgRx 或 Signals 来管理应用的全局状态。
- 优化和部署:使用
ng build构建生产版本,并部署到 Netlify、Vercel 或任何其他静态网站托管服务上。
这个模板为你提供了一个坚实的基础,你可以基于它构建任何你想要的 Web 应用。
