利用angular4和nodejs-express构建一个简单的网站(四)—angular路由初步

news/2024/4/28 23:35:08/文章来源:https://blog.csdn.net/weixin_33752045/article/details/88892949

上一篇文章对用户发来的注册和登录信息进行了处理,并实现了将注册用户信息插入到mysql数据库的数据表和从mysql数据库的数据表中查询到用户的登录信息并返回用户认证信息,从这篇起,开始构建前端的登录和注册页面,并实现angular路由。
为了让大家能够方便理解,我简单的画了一张我这个程序的路由分析图:

clipboard.png

创建初始页面并设置总路由

初始页面app.component.html的代码如下:

<div class="bg"><div class="jumbotron jumbotron-fluid text-center"><div class="container"><h1 class="display-3">{{title}}</h1><p class="lead">{{lead}}</p><hr class="my-4"><p class="content">{{content}}</p></div></div><router-outlet></router-outlet>
</div>

它是由一个bootstrap的jumbotron组件和一个router-outlet组成,在jumbotron中的标题、lead和内容应该随着导航到不同的页面而改变,所以我将这3个标签的内容分别用插值表达式title、lead、content代替。为了做到这一点,我创建了一个JumbotronServive服务提供商,通过rxjs的消息推送来实现。JumbotronServive的代码如下:

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
export class Jumbotron{constructor(public title:string,public lead:string,public content:string){}
}
@Injectable()
export class JumbotronServive{private jumbSource = new Subject<Jumbotron>();jumb$ = this.jumbSource.asObservable();setJumbotron(jumb: Jumbotron){this.jumbSource.next(jumb);}  
}

首先创建了一个Jumbotron类,包含3个属性title、lead、content分别对应jumbotron中的标题、lead和内容,然后写一个服务提供商类,在这个类中声明了一个rxjs的Subject对象(Subject是允许值被多播到多个观察者的一种特殊的Observable),然后调用Subject的asObservable()声明一个Observable对象jumb$来订阅Subject发送的消息。最后声明一个setJumbotron来发送修改过的Jumbotron对象。在AppComponent类中,我们就可以订阅并更改jumbotron中的标题、lead和内容。代码如下:

jumServ.jumb$.subscribe(jumb=>{this.title = jumb.title;this.lead = jumb.lead;this.content = jumb.content;});

router-outlet:路由出口,用于标记该在哪里显示视图,也就是说导航到的所有路由视图都会在<router-outlet></router-outlet>标签中显示。
angular-cli(以下简称ng)已经为我们写好了基本的AppModule(Angular程序的根模块,Angular通过引导根模块来启动该应用),在这里列出看一下:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { AppComponent } from './app.component';
@NgModule({declarations: [AppComponent,],imports: [BrowserModule,NgbModule.forRoot(),AppRoutingModule],providers: [JumbotronServive,],bootstrap: [AppComponent]
})
export class AppModule { }

@NgModule装饰器将AppModule标记为 Angular 模块类(也叫NgModule类)。 @NgModule接受一个元数据对象,告诉 Angular 如何编译和启动应用。
@NgModule有以下属性:

  • imports — 本模块声明的组件模板需要的类所在的其它模块,其中最重要的是BrowserModule,这个在每个在浏览器中运行应用都需要它。
  • declarations —声明本模块中拥有的视图类,在AppModule中定义了应用的唯一组件AppComponent。
  • bootstrap — 根组件,Angular 创建它并插入index.html宿主页面。
  • providers - 服务的创建者,并加入到全局服务列表中,可用于应用任何部分,在这里加入了JumbotronServive,用于提供bootstrap的jumbotron组件中title、lead、content的更新。

AppRoutingModule是应用的路由模块,具体代码:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { PageNotFoundComponent } from './page-not-found.component';
const appRoutes: Routes = [{path:'',redirectTo:'/users',pathMatch:'full'},{path: '**', component: PageNotFoundComponent}
];
@NgModule({imports: [RouterModule.forRoot(appRoutes)],exports:[RouterModule]
})
export class AppRoutingModule{}

首先定义个路由数组,其中的路由对象包括路由路径(path)、和路由对应的组件(component),因为我们的网站一打开就进入用户管理界面,在导航到首页时需要直接跳转到users路由,首页路由('')没有对应组件,而是直接跳转到users路由。path:'**'路由的作用是在找不到任何路由时,访问PageNotFoundComponent组件。
定义路由数组后,用@NgModule装饰器导入RouterModule,并将路由数组传递给RouterModule的forRoot数组。
最后导出RouterModule模块。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_779177.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站访问原理与GFW原理简述

文章目录一.网络分层-OSI二.网站访问过程1.域名解析2.发送HTTP请求3.数据包传输4.传输数据&#xff0c;关闭连接二.GFW原理1.基于UDP协议的域名解析服务劫持/DNS缓存污染2.IP地址或传输层端口人工封锁——BGP路由劫持/“路由黑洞”3.TCP RST重置4.协议检测→根据流量协议拆包→…

堆积密度怎么做_怎么优化关键词才能提高网站排名?

为了让自己的网站提高排名&#xff0c;每一个网站的管理者都会对自己的网站关键词进行优化&#xff0c;那么&#xff0c;怎么优化关键词才最合适呢&#xff1f;最能提高网站排名呢&#xff1f;关键词优化简单地说&#xff0c;就是把网站里面的关键词进行选词和排版&#xff0c;…

个人(商业)网站安全维护-网页***防范

个人&#xff08;商业&#xff09;网站安全维护&#xff0d;网页***防范<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />simeon本文已被网管员世界杂志录用现在国内有许多个人或者公司都建立了网站&#xff0c;网站已经成为日常…

CURL方式使用代理访问网站

2019独角兽企业重金招聘Python工程师标准>>> curl_setopt ($ch, CURLOPT_URL, $requestUrl);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); //代理认证…

网站空间服务器100m,100M虚拟主机空间到底有多大?

很多新手站长朋友在购买空间的时候&#xff0c;总会心存疑问&#xff1a;到底买多大的主机空间合适&#xff0c;100M的空间够用吗,是不是选用越大的空间越好。其实&#xff0c;购买空间也讲究适可而止&#xff0c;够用即可&#xff0c;比如你是个人博客的站长&#xff0c;那100…

自动化测试网站

看到一个自动化测试的网站&#xff0c;记录一下&#xff1a; 有一下几个产品&#xff1a; TestComplete AQtime Automated Build Studio AQdevTeam 这里还有一个很好的自动化测试的PPT: http://www.automatedqa.com/community/ 参考文章&#xff1a; http://dragon.cnblogs.com…

美国高明公司推出首款中文网站性能监测方案

工业和信息化部在本月27日发布的一项统计数据显示&#xff0c;今年前三季度&#xff0c;中国新增宽带接入用户1644.9万户&#xff0c;用户总数达到9932.8万户。随着宽带接入用户的增加&#xff0c;中国互联网网民也在与日俱增&#xff0c;网民总数已达到3.6亿。这意味着有越来越…

优秀的国外电子商务网站欣赏

电子商务网站一直是网商们谈论的重点&#xff0c;包括他的策划、设计、经营等&#xff0c;今天我们着重介绍一下国外的电子商务网站的设计。先说国内的电子商务网站&#xff0c;由于凡客等的成功&#xff0c;国内大部分的电子商务网站都采用凡客的设计风格&#xff0c;这样的风…

Firefox 66 发布,阻止网站自动播放声音

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> Firefox 66 发布了&#xff0c;此版本在桌面版中带来的新特性包括&#xff1a; Firefox 现在阻止网站自动播放声音&#xff0c;如果需要可以单独调整改进的搜索体验&#xff1a; 当…

【发现资源共同分享】介绍一些web前台开发比较不错的网站【2012-06-14更新】

1. 模板之家&#xff08;强烈推荐&#xff09;中国divcss 模板中的精品网站 这个网站中的有很多现成的divcss做的模板供大家之间使用&#xff0c;最主要的是它是免费滴。而且图片已经切好、css文件已经写好、html demo也已经写好&#xff0c;您只需要改下里面的内容即可。…

您需要搭建怎样的网站来帮助您赚取更多利润?

做为一个有竞争力的企业&#xff0c;拥有自己的门户网站就像是建设自已的厂房一样重要&#xff0c;因为在信息时代&#xff0c;潜在客户通过互联网获取产品方案信息&#xff0c;并做为定单参考&#xff0c;已经是很多企业采购节省成本的主要方式之一。(当然其他还有很多好处&am…

python多页网站目录_想爬取一个有很多页的网站,但是我不知道这个网站的准确页数。请问 Python 中如何用循环来实现呢?...

25 2019-07-27 17:28:21 08:00 1 solider245 就是一般意义上我们说的二分查找&#xff0c;一般的程序员应该都了解的。 如果你这方面有缺失&#xff0c;我时间不多&#xff0c;只能在这里简单解释一下&#xff1a;假设我有一个有序的整数数组&#xff0c;我想要查询里面一个数…

常见的网站各种类型的页面缓存时间及http头

转载于:https://blog.51cto.com/ceekay/1083378

20款非常棒的网站可用性测试工具

2019独角兽企业重金招聘Python工程师标准>>> 网站可用性是指用户能否有效地找到所需的信息或完成他的任务&#xff0c;效率如何以及是否让人有愉快满意的感受。如果网站可用性较差&#xff0c;会浪费用户的时间&#xff0c;大大降低网站的回头访问率&#xff0c;这对…

网站攻击软件_如何防范误植攻击 | Linux 中国

误植是一种引诱用户将敏感数据泄露给不法分子的方式&#xff0c;针对这种攻击方式&#xff0c;我们很有必要了解如何保护我们的组织、我们的开源项目以及我们自己。-- Sam Bocetta误植Typosquatting是一种引诱用户将敏感数据泄露给不法分子的方式&#xff0c;针对这种攻击方式&…

16个时髦的扁平化设计的 HTML5 CSS3 网站模板

创建网站最好办法之一是使用现成的网站模板或使用开源 CMS 应用程序。所以&#xff0c;今天这篇文章给大家带来的是16款基于 HTML5 & CSS3 的精美的扁平风格网站模板&#xff0c;大家可以借助这些优秀的网站模板创建自己的优秀网站。这些网站模板虽然是收费&#xff0c;但是…

如今的SEO与以往的SEO有何不同?

1. SEO的术语解释SEO在2000-2011年之间都是针对于主流搜索引擎友好度的一种网站站内外技术与内容的优化。通过接近搜索引擎算法的一种手段&#xff0c;所以称之为Search Engine Optimization (搜素引擎优化)。而从2011 – 2014年开始&#xff0c;搜索引擎优化不只局限在代码、内…

apache php网站,Apache,mysql,PHP搭建网站环境

须要用到三个压缩包&#xff1a;php各模块配置&#xff1a;Apache&#xff1a;下载&#xff0c;解压安装vc2015运行库bin目录下&#xff0c;管理员权限执行httpd -k install安装服务安装成功后&#xff0c;此目录下双击ApacheMonitor启动apache如出现错误(1.查看一下是不是端口…

使用ClipFinder HD搜索和查看多个视频网站

If you’re looking for an easy way to search through several video websites at once from your desktop, today we take a look at an app that does an excellent job. Ashampoo’s ClipFinder HD allows you to search and download videos from popular video sites f…

谭晓威个人博客网站

经过前一段时间的折腾&#xff0c;个人博客网站终于开始上线运作了&#xff0c;从选择主机到搭建环境&#xff0c;从注册域名到域名备案&#xff0c;特别是备案&#xff0c;很是麻烦呀&#xff0c;不过终于搞定了&#xff0c;在此打个小广告&#xff0c;欢迎朋友们前来支持&…