简介
单页应用程序(SPA)是一种通过 AJAX 技术来创建动态 Web 应用的方法,它允许在浏览器中加载一个页面,并且只允许在同一页面上刷新和切换不同内容。这种设计可以减少服务器的负担,并且可以提高用户体验。在本教程中,我们将使用 Express.js 框架和 Angular 框架来构建一个简单的单页应用程序。
准备工作
要开始构建一个 Express.js 和 Angular 的单页应用程序,我们需要做些准备工作。首先,我们需要确保已经安装了 Node.js,因为 Express.js 是一个基于 Node.js 的 Web 应用程序框架。如果你还没有安装 Node.js,可以在官网下载并安装。
安装 Express.js
安装 Express.js 的方法有很多,这里我们使用 npm 包管理器来安装。在终端窗口中输入下面的命令:
npm install express --save
该命令将 Express.js 安装在我们的项目中,同时记录在 package.json 文件的 dependencies 中,以便其他人可以在将来轻松地安装它们。
安装 Angular
Angular 是一个基于 TypeScript 编写的 Web 应用程序框架,它由 Google 维护。它提供了一种灵活而可扩展的方式,使我们可以构建灵活的单页应用程序。在终端窗口中输入下面的命令:
npm install -g @angular/cli
这将全局安装 Angular CLI,使我们可以使用 Angular 快速创建和开发应用程序。
创建 Express.js 应用程序
现在我们可以使用 Express CLI 来创建我们的 Express.js 应用程序。在终端窗口中输入下面的命令:
express --view=ejs myapp
通过这个命令,我们创建了一个名为 myapp 的 Express.js 应用程序,使用 ejs 视图引擎作为前端框架,可以在应用程序中轻松地创建动态页面。该命令创建了一个 Express.js 应用程序的基本结构,并且为我们自动生成了一些文件和目录。在应用程序的根目录下,我们可以看到一个名为 app.js 的文件,这是应用程序的入口文件。我们可以编辑它来配置我们的应用程序。
编写 Angular 应用程序
Angular 应用程序由组件(component)构成,每个组件都包含一个 HTML 模板、一个 TypeScript 类以及一个 CSS 样式表。我们可以使用 Angular CLI 快速创建一个组件。在终端窗口中输入下面的命令:
ng generate component mycomponent
通过这个命令,我们创建了一个名为 mycomponent 的组件,并自动生成了组件所需要的文件。组件的 HTML 模板、CSS 样式表和 TypeScript 类将存储在单独的文件中。
集成 Angular 应用程序和 Express.js 应用程序
我们已经创建了 Angular 应用程序和 Express.js 应用程序,现在我们需要将它们集成在一起。我们希望 Angular 应用程序成为 Express.js 应用程序的一部分,并且能够像所有其他静态资源一样自动加载。
- 在 Express.js 应用程序中添加静态资源目录
在 Express.js 的 app.js 文件中,我们可以添加以下代码来将 Angular 应用程序的编译后的代码添加到静态资源目录中:
app.use(express.static(path.join(__dirname, 'dist')));
这样,我们就可以在浏览器中加载 Angular 应用程序的编译后的代码,而不必在应用程序中担心资源文件的相对路径。
- 编译 Angular 应用程序
我们现在需要将 Angular 应用程序编译为 JavaScript 文件,以便将其添加到静态资源目录中。在终端窗口中输入下面的命令:
ng build --prod
该命令将 Angular 应用程序编译为一个名为 dist 的目录。该目录包含一个名为 index.html 的文件和一些 JavaScript 文件和资源。
- 在 Express.js 应用程序中添加路由
最后,我们需要在 Express.js 应用程序中添加一个路由,将所有未匹配的 URL 请求重定向到 Angular 应用程序的 index.html 文件。在 app.js 文件中添加以下代码:
app.get('*', (req, res) => { res.sendFile(path.join(__dirname, 'dist/index.html')); });
该代码将捕获所有未匹配的 URL 请求,并将它们发送到 Angular 应用程序的 index.html 文件。
示例代码
app.js 文件:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---- - ---------------- ----- --- - ---------- -- -------- ------------------------------------------- ---------- -- ---- ------------ ----- ---- -- - --------------------------------- -------------------- --- -- ------ ----- ---- - ---------------- -- ------- --------------- ------ ---------------- -- -- - ---------------- ------- -- -------------------- ---展开代码
index.html 文件:
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- -------------------- ----- --------- ----- --------------- ---------------------------- ----------------- ----- ---------- ------------------- ------------------- ------- ------ ----------- ------- ----------------------- ----------------------- ------- -------------------- -------- --------------- ------- ---------------------- -------- --------------- ------- ------------------------- ----------------------- ------- ---------------------- ----------------------- ------- ------------------- -------- --------------- ------- -------------------- ----------------------- ------- ----------------- -------- --------------- ------- -------展开代码
mycomponent.component.html 文件:
<p>Hello, World!</p>
mycomponent.component.ts 文件:
-- -------------------- ---- ------- ------ - ---------- ------ - ---- ---------------- ------------ --------- ------------------ ------------ ------------------------------- ---------- ------------------------------- -- ------ ----- -------------------- ---------- ------ - ------------- - - ----------- ---- - - -展开代码
结论
通过使用 Express.js 和 Angular 构建单页应用程序,我们可以创建一个高度动态的 Web 应用程序,可以在浏览器中实现高度交互和响应的用户体验。该应用程序可以随着时间的推移进行扩展和调整,并且可以在一个面向对象的架构中进行灵活的开发。
参考文献
- Express.js 官方文档:https://expressjs.com/
- Angular 官方文档:https://angular.io/
- Angular CLI 官方文档:https://cli.angular.io/
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6715c4bcad1e889fe218d369