位置: 编程技术 - 正文

使用AngularJS制作一个简单的RSS阅读器的教程(angularjs1.5)

编辑:rootadmin

推荐整理分享使用AngularJS制作一个简单的RSS阅读器的教程(angularjs1.5),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:angular.js,angularjs教程,angularjs2,angular开发成js,angularjs2,angularjs1.5,angular做app,angularjs教程,内容如对您有帮助,希望把文章链接给更多的朋友!

简介

几年前,我用C#写了一个RSS阅读器,但是我想如果把它做成一个SPA(单页应用)效果会更好。 Angular使一些事情变得简单,RSS阅读器就是其中之一。 我也用Twitter Bootstrap(做UI)实现了RSS阅读器,调试页面样式是最难的地方之一...可能是因为我不擅长css的原因。

背景

我有一些自己喜欢的网站( CodeProject, Dr.Dobb's Journal, ComputerWorld, Inc. Magazine)。 然而,我发现其中很多网站都有烦人的广告、风格不好的布局,我实在不愿意看到这些东西。当我说这话的时候,并不包括 CodeProject网站。

在这些网站之间来回切换浪费了很多时间。 因此我更喜欢浏览文章标题和简介,这样我可以决定是否进入文章内容页面。 这就是我决定写FreedReadR 单页应用的原因。

FreedReadR 响应是比较快的,因为它读取的数据量(RSS源)比较小。

下面是点击CodeProject选项的效果图:

下面是FreedReadR 加载某一个站点数据的效果图:

你现在可以试下效果:

阅读器之前在Google上搜索了这个想法,发现jsfiddle中一段比较好的代码: angularJS Feed Reader alt.

我的代码和它的代码有相似的地方,但仍有不同,因为我想要实现更多的功能。 FreedReadR 允许你本地存储自己的RSS源数据,这样你就可以一直使用应用来创建自定义的RSS源。 另外,它的代码基于Twitter Bootstrap 2,FreedReadR 基于新版本Twitter Bootstrap 3。使用代码

如果你熟悉Angular,开发时代码并不多。 大部分的难点是在Angular中使用Bootstrap。

其它问题可以在”Angular编程思想”中找到解决方法。$scope 的用法和控制器工作的方式有点不同。 首先你必须在html中设置应用程序的作用域。 类似下面的使用ng-app="FreedReadR"的代码,设置了html中$scope的作用域:所有div标签内的对象 ?- 在下面的示例中作用域是整个页面。 我只需要一个控制器来处理整个应用程序逻辑,我对这一点比较满意。

在上面的html代码中,你可以看到Angular 应用模板的名称是FreedReadR。 当我设置应用程序模板、添加控制器(FeedCtrl) 代码时,我在main.js文件中使用了相同的名字。让我们看一下main.js中设置参数的代码。

在上面的js代码中,第一行是创建AngularJS 应用模板。 注意,它的名称是FreedReadR,我们在html代码中使用相同的名称以引用这个模板。

接下来,我们创建一个Angular工厂类,后面会用它访问RSS源URL来获取真实的源数据。 认真地看下代码中使用的 $http.jsonp请求。URL格式如下:

URL里调用了Google API,以前我并不知道Google API。这就是我在文章开头提到的jsfiddle示例的主要代码。 如果你想更多地了解Google API,你可以在这里下载: 函数,它是用来转换URL的。配置Angular 控制器

控制器用来处理应用程序的逻辑,因此大部分js函数应该在控制器内部。这就是Angular 帮助你组织(混乱的)js代码的方式。 我刚有大声说出来吗?

好吧,JavaScript鼓励杂乱无章,不是吗&#;这是它不好的地方.提到JavaScript的全局变量的时候,你不用带着恐惧尖声叫喊着说吗&#;如果不用,那么我们可能要撤销你的开发者许可证.你有编写软件的许可,不是吗&#;(译者注:因为你有开发者许可证,所以你自然也是带着恐惧尖声叫喊着说JavaScript的"全局变量"的--这里有些夸张的说法,意在说明开发者对于JavaScript的"全局变量"的使用应该有所顾忌.)

现在,在我们深入了解应用程序具体做了些什么的时候,看看控制器提供的功能.看看在控制器中的每个函数,以便了解FreedReadR可以做些什么.检查localStorage, 存在则加载

我想做的一件事是,希望你在浏览器的slocalStorage中保存你的源.我不希望因为设置数据库而弄得一团糟,但我希望你可以增加自定义的源,并且让他们在你的浏览器中一直可用. localStorage的限制

当然,localStorage的限制是,它存在于一个特定浏览器的给定域名.

这意味着,如果你从NewtonSaber.com/FreedReadR运行应用程序并保存一些自定义的源,当你从浏览器打开最初打开的连接的时候,你将会再次只看到列表中的这些内容.每个浏览器的localStorage都是私有的.所以,如果你某天使用IE增加了一些源,在接下来的一天将无法使用Chrome来查看已经添加的源.

对我来说,这个版本的应用程序已经OK了.因为它是我所希望的,用非常快速和了解其限制的技术开始.修正限制可能是以后另一篇文章的事情了.

你会发现在控制器代码中,我首先调用了一个函数:retrieveFromLocalStorage()。

函数如下:

使用AngularJS制作一个简单的RSS阅读器的教程(angularjs1.5)

这是一个非常简单的函数。 它在 $scope的作用域内定义了一个名为 allFeeds的数组变量。 然后,通过 JSON.parse方法从localStorage数组中读取一个 feeds对象,这个对象保存的是已存在的 RSS源。如果这个 feeds对象为 undefined(这是首次运行应用程序),程序会抛出一个异常。 当异常被抛出时,应用程序会加载一些默认的 RSS源(loadDefaultFeeds()),然后将这些源保存到localStorage中供下次使用。

先看看loadDefaultFeeds()函数,然后我们再看saveToLocalStorage()函数.

就像你所看到的,我增加了一些我最喜欢的源,这样,你就可以很容易的试用这个应用程序.它仅仅只是一个对象数组,通过titleText和url来定义.

只要它们都加载到$scope类型的变量allFeeds之中,你就可以使用ng-repeat从HTML获取它们了,它看起来像下面这样:

这创建了选项的列表,当你点击下拉框按钮的时候,它们将会显示在上面.如你所看到的,我们在ng-repeat语句中引用了allFeeds $scope变量,然后我们引用了feed.titleText来生成入口.

现在你的按钮已经加载了很好的标题了。

我说过会给你介绍saveToLocalStorage()方法,现在让我们看一看。

这是一个非常简单的方法。方法允许你传入 feeds 对象(这应该是一个feed对象数组)。然后我们简单地调用 localStorage.setItem( ) 方法。正如方法的名字所说,我们可以用该方法来保存对象。要注意的是,当我们保存对象的时候,我们会调用对象的 angular.toJson() 方法。这是个方法会帮助我们去除一些angular特有的属性,而这些属性是我们不想保存的。所以调用这个方法非常重要,因为angular会在对象中保存一些特有属性,这些属性会让你感到迷惑。

现在,应用程序已经加载了一些默认的RSS源,如果你想获取某一个RSS源的数据,点击下拉框按钮,选择其中一个值,然后应用程序会运行下面的代码来获取相关的数据。 我们在$scope作用域内添加一个loadFeed函数,函数如下。 下面的函数会被调用,因为我们在html中给按钮绑定了事件ng-click="loadFeed($event,feed.url);"。

通过点击事件调用上面的函数时,我们先判断用户选择的信息与下拉框第一个选项 "Load (from textbox)"是否相同。 这么做是为了判断用户是否想加载文本框中提供的 RSS源。 如果是这样,我们调用FeedService.parseFeed 方法时,直接传入文本框中 URL值。如果不是这样,我们从相关的源对象中获取 URL。

结果列表

当源信息返回的时候,HTML代码使用另一个ng-repeat来迭代遍历每个项,并用友好的格式显示它们.HTML代码看起来像下面这样:

HTML也创建了一个好友的标记,用来显示获取到的文本链接数.搜索结果里的内容

它也显示了一个搜索文本框,可以用来输入文字,根据文本链接的内容来过滤下拉列表.点击链接: 在新的页面加载

最后,如果你点击一个链接,它会在浏览器的新页面或窗口加载.这让这个工具很容易使用.

保存新的源

这个部分我做的很简单,因为我完成这个应用程序只是为了我自己使用.

如果你在文本框中输入一个URL,然后点击保存按钮(向下的箭头图标),你将看到一个JavaScript提示框,它看起来像下面展示的图片这样:

你可以简单的输入标题(它将显示在下拉列表中)用来标识新的源,然后点击OK按钮.

只要你这么做了,这个项就会增加到下拉列表.这个过程通过增加这个项到allFeeds对象来实现,同时,这个项也将立即保存到localStorage之中.

这就是所有的内容.

希望你和我一样喜欢这个工具,它节省了很多时间.

发布提示

请注意许多外部库的链接是CDN的,除了下载的Bootstrap文件,其他下载的文件在一个3rdPartyLibs(第三方库)的目录里。你可以下载代码,解压和运行它们。为本地存储准备Web服务器是必需的

你必须运行一个web服务器使它正常工作。注意,在下载的文件中已经包含一个精致小巧的web服务器(mongoose web server)和配置文件,因此,如果你希望使用它,你可以双击mongoose.exe,它就开始运行了,之后,你可以简单地加载: 它就从你的电脑上运行了。 最后一个要注意的是:那个【X】按钮是什么?

保存按钮后面的那个[X]按钮是什么?那个按钮允许你释放所有来自你的localStorage的反馈。如果你点击它,它们会被移除。被命名为反馈的localstorage条目就这样简单地被销毁了,所以要小心处理。如果你在添加任何反馈之前使用这个按钮,没有任何问题,否则你将会失去你已经添加的反馈。

我很懒,我使用它仅仅是为了我的测试,你还是应该把它去掉的。懒惰还真是一个伟大开发者的标志啊。

利用JavaScript的AngularJS库制作电子名片的方法 简介在这个例子中,我引用了包括AngularJS在内的一些JavaScript库,实现了一个很简单的名片生成器。尽管在这个小应用中,AngularJS库相较于其他JavaScript库

使用AngularJS对路由进行安全性处理的方法 简介自从出现以后,AngularJS已经被使用很长时间了。它是一个用于开发单页应用(SPA)的javascript框架。它有一些很好的特性,如双向绑定、指令等。这篇

浅析AngularJS中的生命周期和延迟处理 这里,我们再讨论一些常用的高级的控制反转容器(InversionofControlcontainers):延迟加载(lazy-loading),生命周期管理(lifetimemanagement),以及延迟的创建/处理(de

标签: angularjs1.5

本文链接地址:https://www.jiuchutong.com/biancheng/379120.html 转载请保留说明!

上一篇:在Python中使用glob模块查找文件路径的方法(在python中的用法)

下一篇:利用JavaScript的AngularJS库制作电子名片的方法(javascript基于)

  • 小微企业印花税怎么算
  • 一般纳税人销售使用过的固定资产
  • 税款抵扣会计分录
  • 销售白酒是否要交消费税?
  • 企业所得税表利润总额怎么填写
  • 弥补以前年度亏损金额从哪里来的
  • 员工可以签订两份劳动合同吗
  • 税务局三代手续费政策
  • 发票查验是什么字体
  • 土地增值税清算的条件
  • 报价需要提供哪些资料
  • 所得税汇算调增调减是什么意思
  • 工程开票是否需要资质?
  • 发票上面税率地方为*号代表什么
  • 增票丢失怎么开完税证明
  • 土地闲置费可以税前扣除吗
  • 增资有哪些途径
  • 非企业单位有税收吗
  • 公司租赁办公场地用缴纳房产税吗
  • 股权转让怎么办理才合理
  • 期间费用率计算方式
  • 期末留抵税额的减值
  • 违约金合同条款怎么写
  • 汇算清缴是哪个报表
  • mac中的finder简介命令
  • 公积金可以支付二手房首付款吗
  • 自由职业者如何交五险一金
  • url是什么软件
  • 孕妇能吃荔枝吗 孕晚期
  • 前端 php
  • 非合理损耗计入入账成本吗
  • 土地增值税清算全流程实战案例
  • 买一赠一的会计处理与税务处理
  • 核心书评价格
  • php与其他语言的比较
  • 进项税转出能转回吗
  • 增值税的滞纳金税率
  • 上市公司净资产转正的方法
  • 发现以前年度的账错误
  • 基本户往一般户转钱有限制吗
  • python 字典中的字典
  • 企业期末预收账款怎么算
  • 未达起征点的增值税会计处理
  • 期末应交增值税的会计科目怎么做
  • 以前年度损益调整是什么意思
  • 有限合伙企业中谨慎有限合伙人的应当
  • 接受捐赠的固定资产进项税额可以抵扣吗
  • 个税里的年金是指
  • 客户罚款员工承担
  • 外购材料用于建筑工程会计分录
  • 直接计入管理费用的税金有哪些
  • 健身中心开的服装店
  • 增值税发票折扣发票
  • 关于mysql中的字符型数据下面说法正确的是
  • sqlserver用户权限不给增删查改表结构权限
  • 如何更改桌面文件存放位置
  • 重装win7旗舰版系统教程
  • 打开win七
  • winxp不显示桌面图标
  • windows更新驱动程序需要多久
  • linux磁盘空间不足怎么清理
  • win7系统开机进不去
  • mac我的所有文件 删除
  • 使用xshell连接虚拟机需要修改哪些配置
  • 重装win7系统后没有无线网
  • windows10右键菜单被任务栏挡
  • vs2013怎么配置环境
  • nodejs怎么安装npm
  • java程序员准备骑驴找马了,需要怎么准备
  • Unity3D游戏开发毕业论文
  • js frameset
  • python火车订票系统
  • 怎么查看u盘有没有传输过数据
  • js鼠标滚动页面触发事件
  • javascript参考书
  • shell 计算表达式
  • javascript教程 csdn
  • jquery获取值的几种方法
  • 税务局发票邮寄需要多久
  • 河北社保网上申报时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设