基于爬取数据的新闻查询网站构建(Express+AngularJS)

本文介绍了如何利用Express、AngularJS和Bootstrap构建一个新闻查询网站,涉及登陆界面、主页面、分页和Echarts数据可视化等功能的实现。作者分享了在项目中遇到的挑战、解决方案以及学习心得。
摘要由CSDN通过智能技术生成

基于爬取数据的新闻查询网站构建(Express+AngularJS)

一学期在家的自主学习后,Web编程的课程也来到了期末。
其实这是我第二次写这篇博客,第一次是边做开发边写的,发现思路很紊乱,而且不知所云,因而在写了七千多字的时候推倒重来。
这次开始动笔的时候项目大概已经能够实现绝大多数功能了。
在这里特别感谢助教与同学对本次实验项目提供的帮助,还要特别感谢菜鸟教程给我提供的html、angularJS、bootstrap教程,以及百度官方提供的echarts教程。

思路简述

第一次作业的重点在爬虫功能的实现上,而这次的实验项目对后端、前端以及工程的整体构建要求都很高,所以总体上来说是非常困难的,尤其对于我这种前后端都不会写的人来说可以说是一筹莫展了。
本次实验过程遇到了很多问题,特别感谢助教和老师提供的帮助,还要感谢一下先行完成的同学给我的启发,帮助我磕磕绊绊地完成了一份非常普通的作业。
作业中用到了Bootstrap、AngularJS、Express以及Echarts来实现基本需求,分前后端来介绍。

页面的构建与美化(HTML语言为主)

能够调用爬虫爬取到的数据,且进行查询的前端页面其实在上次的项目中实现过了。
第一次项目最后成品
看得出页面很简陋,只用到了非常简单的HTML框架,以及一些用于查询的jQuery功能。
第二次的项目中,我用到了Bootstrap来进行前端页面的美化,又用到了AngularJS进行一些简单功能的函数书写、以及前端框架的构筑。

接下来详细介绍一下各个部分的具体实现以及思路。

登陆界面

第一次的前端页面中,我们已经用"input"与"button"标签实现了查询以及按钮,是比较基础的HTML语言。
这次要求能够实现用户的注册与登陆,这一要求的主要难点在于后端以及路由的代码,前端构筑并不算太难。
这里详细介绍一下Bootstrap用到的一些功能。

Bootstrap网格功能

Bootstrap网格功能的基本结构非常简单:

<div class="container">
   <div class="row">
      <div class="col-*-*"></div>
      <div class="col-*-*"></div>      
   </div>
   <div class="row">...</div>
</div>
<div class="container">....

这一功能支持跨设备的页面布局,能够根据屏幕的尺寸自动分为12列。
举个简单的例子来说,页面布局会根据浏览器窗口的大小进行调整,页面上的元素如按钮、输入框等都会自动调整到最合适当前尺寸的大小与位置。虽然可能这次的项目也没有机会在其他设备上使用。
另一方面,能够使用网格功能来非常工整地布置每个元素的位置,这一点是使用Bootstrap网格功能的最主要的目的。
我们使用HTML文本布置的元素会拥挤在左上角,需要定位具体位置还需要输入数值进行调整,而Bootstrap只需要改变所在的网格列数便可以进行便捷地左右横调,而且非常方便对齐。
我们登录界面整体都是用这样的网格功能作为框架来布局的。

Bootstrap面板

我们用面板功能把文本框以及切换登陆、注册功能的链接按钮绑定到一起。
面板功能的代码也很简单:

<div class="panel panel-default">
	<div class="panel-heading">
		<!--面板的标题内容-->
    <div class="panel-body">
        <!--面板主体内容-->
    </div>
    <div class="panel-footer">面板脚注</div>
</div>

这样的整体布局比较紧凑美观,且可以通过Bootstrap的自定义样式来美化登陆面板。

在文本框部分使用的是表单功能,这个在后面的主页面构筑中也用到了,在这里就先不具体展开了。

最后成品如下:前端页面成品1
登录页面的前端并不算太难,毕竟没有用到什么很复杂的东西,甚至我觉得极简风格不美化也没什么影响,只是在此做个Bootstrap的安利,因为美化功能非常方便强大。

主页面

这里用到的是Bootstrap的导航栏(Navbar)功能,以及表格、表单功能。

Bootstrap导航栏

这可谓是使用Bootstrap进行前端页面的构建的过程中,最让人赏心悦目的一部分了。多亏了其强大的自定义样式和功能,能够很轻松地实现极为个性化的导航栏功能,我这里使用的是最简单的导航栏模板:

<nav class="navbar navbar-default" role="navigation">
    <div class="navbar-header">
        <!--导航栏的头部,即网站logo,文本会比其他元素大一号-->
    </div>
    <div>
        <ul class="nav navbar-nav">
         	<!--这里使用无序列表向导航栏添加元素-->
        </ul>
    </div>
</nav>

可以使用CSS样式进行背景颜色的自定义,我这里还用到和下拉菜单来为后续的可视化功能做菜单。
Navbar还可以非常便捷地把元素固定在左侧或是右侧,达到快速定位的效果。
导航栏
我在这里还锦上添花地用到了Bootstrap的字体图标,只需要在元素前加上"span"标签,在其中定义一个Glyphicon类就行了,这一部分我觉得也是非常有趣的功能。

Bootstrap表格功能

Bootstrap的表格功能也很强大,稍微改变一下前缀便可以自定义表格样式,我这里使用了悬停表格与边框表格,相较于HTML自带的表格而言格局更加清晰,布局更加美观大方,表格的代码模板也很简单:

<table class="table">
  <thead>
    <tr>
    	<!--这里填写表头项目-->
    </tr>
  </thead>
  <tbody>
    <tr>
      	<!--这里填写表格内容-->
    </tr>
  </tbody>
</table>

在这里插入图片描述
悬停在上面能够显出浅灰色,这就是悬停表格的效果。
"thead"标签内的字体会加粗,能更明晰地区分出表头,边框会让界面更清楚美观。
我随便找了条电竞新闻做个演示,希望能过审核。FPX今年能再拿个s赛冠军让我开心开心吗

前端页面的构建大概就是这样,比较简单,分别介绍了一些好用的Bootstrap功能,接下来的部分是后端代码以及功能的实现,这里要详细介绍一下Angular。

Angular与jQuery实现具体功能

Angular作为一款前端框架,其强大功能在单页面Web应用中非常有效,这次的项目都可以用Angular来实现页面的交互效果,比如点击Login和Register时进行动态更新页面,实现登录注册的功能。
而jQuery在书写页面包含的Javascript代码时也能够起到简化且非常强大的功能。

在html文本中直接书写登陆与注册函数

要在文本中使用Angular,需要使用ng-app指令来启动,来规定这个应用程序的活动范围。
在这次的实验项目里,我是直接从一开始就启动Angular应用,有效范围便是整个前端框架的代码。
这里用到了Angular支持将数据绑定在页面元素的功能,即ng-model,我们可以使用这样的方式将用户登录或注册时填写的用户名、密码以及确认密码绑定在某一变量上,调用函数时传入的值便是用户输入的数据。这里选取几行代码作为示例:

<input ng-model="username" tabindex="1" class="form-control" placeholder="Username" value=""/>
<input type="password" ng-model="password" tabindex="2" class="form-control" placeholder="Password">

我们这里把用户在用户名和密码这一栏的输入绑定在了username和password这两个变量中,那么接下来在函数调用时就会使用这一组变量。
以下为登陆与注册的函数:

var app = angular.module('login', []);
        app.controller('loginCtrl', function ($scope, $http, $timeout) {
   

            // 登录时,检查用户输入的账户密码是否与数据库中的一致
            $scope.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值