开始使用 Parse.js 创建博客:删除、注销和查看个人博客文章

开始使用 parse.js 创建博客:删除、注销和查看个人博客文章

在上一届会议中,您重构了整个博客系统。现在一切都已清理干净,您已准备好加速进行一些新的冒险。在本次会议中,我们将围绕路由器做更多的事情,并向我们的博客系统添加三个功能:删除、注销和单个博客视图。

1。删除

在第 6 部分中,我们介绍了编辑功能。您很可能还想删除您的一篇博客文章。有两个地方可以放置此函数:将其添加到 BlogsAdminView 中,或者将其发送到 URL 并在 Router 中处理。

我将向您展示路由器的方式。它更常用,并且使代码更加结构化。

第 1 步:添加 URL 模式

像往常一样,我们先添加一个 URL 模式:

routes: {'': 'index','admin': 'admin','login': 'login','add': 'add','edit/:id': 'edit','del/:id': 'del'}

第 2 步:删除链接

然后,更新管理页面中的链接:

Delete

第 3 步:del 函数

现在,让我们向 Router 添加一个新的 del 函数来处理它。这非常简单:使用我们从 URL 传入的 id 找到博客文章,并将其销毁。

尝试挑战自己,在不阅读我的代码的情况下编写它。此时您应该已经很好地掌握了 Parse.js。

del: function(id) {var query = new Parse.Query(Blog);query.get(id).then(function(blog){blog.destroy().then(function(blog){alert('Deleted!');})});}

请注意,您可以在此处使用 .then() 函数,而不是像我们之前那样传递对象:

query.get(id, {success: function(blog) {...},error: function(blog, error) {...}});

这是在 Parse.js 中添加回调函数的简单方法,使您的代码更干净、更具可读性。请访问 Parse.com 查看有关 Promise 的完整文档。

让我们对其进行测试运行,并仔细检查数据库以查看它是否正常工作。

开始使用 Parse.js 创建博客:删除、注销和查看个人博客文章

恭喜,它正在工作!

第 4 步:重定向回管理页面

如果你注意一下URL,你会发现,点击掉警告框后,URL仍然是/del/,而你刚刚删除的帖子仍然存在。我们希望在删除后将用户发送回管理页面,并且该页面应该刷新并反映他们刚刚所做的更改。

您可以通过重定向来实现所有这些:

del: function(id) {var self = this,query = new Parse.Query(Blog);query.get(id).then(function(blog){blog.destroy().then(function(blog){self.navigate('admin', { trigger: true });})});}

请注意,因为这次您从路由器内部调用 navigate,所以您可以将路由器存储为 self,然后调用 self.navigate()

第 5 步:检查登录

最后,我们需要确保您是唯一可以删除您的博客帖子的人。让我们检查一下该功能的登录。这应该与 edit 函数相同。

del: function(id) {if (!Parse.User.current()) {this.navigate('#/login', { trigger: true });} else {...}}

2。注销

与删除一样,注销也可以由路由器处理。它还从添加 URL 模式开始:

routes: {...'logout': 'logout'},

Parse.js 中的注销功能本身非常简单。只需调用 Parse.User.logOut() ,然后重定向到 /login 页面:

logout: function () {Parse.User.logOut();this.navigate('#/login', { trigger: true });}

最后,让我们向 #admin-tpl 添加一个按钮:

      Logout

开始使用 Parse.js 创建博客:删除、注销和查看个人博客文章

如您所见,样式确实不是本教程的重点。您可以随意修复填充并根据需要设置样式。

3。单个博客视图

现在让我们继续开发一些新功能。

到目前为止,我们正在主页上显示整篇博客文章。虽然有些人确实喜欢这种风格,但大多数博客系统都支持预先提供片段摘要的想法,如果访问者点击文章,他们就可以在单独的页面上看到内容,周围可能还有一些评论区域。

我将在本次会议中引导您创建这个详细的单一博客视图,我们将在下一次会议中重点关注构建评论。

第 1 步:添加摘要列

首先,我们在博客表中添加一列作为摘要:

开始使用 Parse.js 创建博客:删除、注销和查看个人博客文章

第 2 步:在 WriteBlogView 中包含摘要

现在,让我们将其添加到 Blog.update() 函数中。您可以更改该函数以获取包含标题、摘要和内容的数据对象,以避免记住变量的顺序。

update: function(data) {// Only set ACL if the blog doesn't have it...this.set({'title': data.title,'summary': data.summary,'content': data.content,...}).save(null, {...});}

#write-tpl中再添加一个作为摘要:

// Put this form-group in between the form-group for title and contentSummary{{summary}}

并相应地更改 WriteBlogView.submit() 函数:

submit: function(e) {...this.model.update({title: data[0].value, summary: data[1].value,content: data[2].value});}

现在,由于我们在模板中添加了一个新变量,因此我们需要在 WriteBlogView.render() 函数中为其指定一个默认的空值:

render: function(){...if (this.model) {...} else {attributes = {form_title: 'Add a Blog',title: '',summary: '',content: ''}}...}

如果您对内容使用 wysihtml5 插件,您会注意到之前我们的目标是所有 元素:

this.$el.html(this.template(attributes)).find('textarea').wysihtml5();

让我们为内容文本区域指定一个类,并仅使用 wysihtml5 插件来定位该类。

#write-tpl中:

{{{content}}}

WriteBlogView.render()函数中:

this.$el.html(this.template(attributes)).find('.write-content').wysihtml5();

现在可以使用了!

开始使用 Parse.js 创建博客:删除、注销和查看个人博客文章

第 3 步:在主页上显示摘要

使用新的撰写博客页面并添加一些带有摘要的博客文章,并提取摘要而不是#blogs-tpl中的内容:

{{#each blog}}{{title}}At {{time}} by {{authorName}}{{summary}}{{/each}}

第 4 步:添加 SingleBlogView 页面

花一点时间考虑一下如何添加 /blog/:id 页面来显示每篇博客文章的内容,并尝试自己完成。您现在应该能够自己完成这一切了!

但为了本教程的目的,让我给您快速演练:

为此页面添加新的 HTML 模板:

{{title}}

{{{content}}}

添加一个新的 BlogView 类,该类接受 blog 对象,并将其呈现在 #blog-tpl 中: p>

BlogView = Parse.View.extend({template: Handlebars.compile($('#blog-tpl').html()),render: function() { var attributes = this.model.toJSON();this.$el.html(this.template(attributes));}}),

BlogRouter 中添加新的 URL 模式:

routes: {...'blog/:id': 'blog',...}

并在 BlogRouter.blog() 函数中,通过 id 获取博客,渲染一个 blogView,并将其放入 $container:

blog: function(id) {var query = new Parse.Query(Blog);query.get(id, {success: function(blog) {console.log(blog);var blogView = new BlogView({ model: blog });blogView.render();$container.html(blogView.el);},error: function(blog, error) {console.log(error);}});}

最后,更新#blogs-tpl中的链接以链接到此页面:

{{#each blog}}{{title}}At {{time}} by {{authorName}}{{summary}}{{/each}}

尝试一下:

开始使用 Parse.js 创建博客:删除、注销和查看个人博客文章

如果您自己完成此操作,可加分。

结论

在本次会议中,您构建了很多内容:删除功能、注销功能和另一种新页面类型。如果您到目前为止一直在关注本教程系列,我认为您对数据库、模型、视图、模板和路由器如何协同工作有深入的了解。我希望您现在也开始喜欢构建 Parse.js 项目。请留下您的反馈并告诉我是否有帮助。

通过我们这次构建的这个单一博客文章页面,我们下次将添加评论部分。应该是一件有趣的事。敬请关注!

以上就是开始使用 Parse.js 创建博客:删除、注销和查看个人博客文章的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1551890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 22:08:23
下一篇 2025年12月21日 22:08:38

相关推荐

  • 如何在HTML中添加元素的高度?

    使用 HTML 中的 height 属性来设置元素的高度。您可以将该属性与以下元素一起使用 – 、、、、 等。 示例 您可以尝试运行以下代码来在 HTML 中实现 height 属性 – Your browser does not support the video elem…

    好文分享 2025年12月21日
    000
  • 在HTML中,当媒体被用户或程序暂停时执行脚本?

    onpause 属性在媒体暂停时触发。您可以尝试运行以下代码来实现 onpause 属性 – 示例 Play Your browser does not support the video element. function myFunction() { document.getElem…

    2025年12月21日
    000
  • 如何使用JavaScript DOM创建表格标题?

    要创建表格标题,请使用 DOM createCaption() 方法。 示例 您可以尝试运行以下命令代码来学习如何创建表格标题 – 现场演示 function captionFunc(x) { document.getElementById(x).createCaption().inne…

    2025年12月21日
    000
  • JavaScript和REST API实现无限滚动分页

    无限滚动分页的灵感来自 facebook 和 twitter 等网站。这只是分页,当用户滚动到页面底部时,会加载更多内容。这可以确保页面上始终有更多内容供用户阅读,从而改善网站上的用户体验。 正确执行无限滚动分页 当实现无限滚动分页时,有一些非常重要的要点需要记住。 1.不要将重要链接放在底部 重要…

    2025年12月21日
    000
  • 如何将当前数字返回为字符串值版本?

    toLocaleString() 方法返回当前数字的字符串值版本,其格式可能会根据浏览器的本地设置而有所不同。 示例 您可以尝试运行以下代码来返回字符串值版本 – JavaScript toLocaleString() Method var num = new Number(150.12…

    2025年12月21日
    000
  • 如何在HTML5中添加文章?

    在本文中,我们将学习如何在 HTML5 中添加文章。 HTML5 中的新分段元素之一是 标记。文章使用 标签以 HTML 形式表示。更具体地说, 元素中包含的内容与网站的其余内容不同(即使它们可能相关)。让我们考虑以下示例来了解如何在 HTML5 中添加文章 示例 1 在以下示例中,我们在文章元素中…

    2025年12月21日 好文分享
    000
  • “HTML标签”

    HTML 中的 applet 标签用于在 HTML 网页上设置 Java applet。 注意:HTML5 中不推荐使用 applet 标签。建议使用 或 元素。以下是属性 – 属性 值 描述 立即学习“前端免费学习笔记(深入)”; th> 对齐 URL 定义小程序周围的文本对齐 …

    2025年12月21日
    000
  • 如何提高JavaScript的性能?

    当今世界,几乎每个网站都使用 JavaScript。 Web 应用程序变得越来越复杂,用户交互性也越来越强,这导致了性能问题。它会导致糟糕的用户体验,这对于任何 Web 应用程序来说都是不可取的。不同的因素会导致性能差、加载时间长和响应时间长。 在本教程中,我们将讨论所有这些因素以及如何解决此问题并…

    2025年12月21日
    000
  • 点击HTML按钮或JavaScript时如何触发文件下载?

    现如今,许多应用程序允许用户进行文件的上传和下载。例如,抄袭检测工具允许用户上传一个包含一些文本的文档文件。然后,它会检查抄袭并生成报告,用户可以下载该报告。 每个人都知道使用input type file来创建一个上传文件按钮,但是很少有开发者知道如何使用JavaScript/ JQuery来创建…

    2025年12月21日
    000
  • 给WordPress帖子添加过期日期

    我运行了一些网站,这些网站在其主页的横幅中包含通知和重要信息。我倾向于为此使用自定义帖子类型,添加横幅并在主题中需要的位置显示它们。 (如果您想做类似的事情,本教程中对此进行了解释。) 但我的横幅总是有到期日。例如,它们可能包含有关即将举行的活动或职位空缺的信息。一旦活动结束或职位空缺被填补,我就必…

    2025年12月21日
    000
  • 在移动Safari中的HTML5地理定位“权限被拒绝”错误

    每当创建移动网站并要求用户在单击按钮时获取当前位置时,就会使用 HTML5 地理定位。这在移动 Chrome 中工作得很好。 但是,在 Mobile Safari 中,系统会提示用户共享位置,并且浏览器默认为地理定位,然后浏览器默认为权限被拒绝错误 为了解决此问题,移动服务中的地理定位服务是打开以获…

    2025年12月21日
    000
  • 如何用HTML将“布局”中的默认元标签替换为“视图”中的自定义元标签?

    元标签用于存储关于HTML文档的数据,例如作者和文档的描述。 最好的解决方案是在应用程序中定义默认标签,并在视图中覆盖默认参数。我们可以在PHP中这样做。 首先在配置文件中进行更改 − ’ demo@example.com’, ‘descrip’=&g…

    2025年12月21日
    000
  • 如何在HTML中指定要在中显示的页面的HTML内容?

    <img src="https://img.php.cn/upload/article/000/887/227/169432903346353.jpg" alt="如何在html中指定要在 HTML HTML 中的 标记指定内联框架。该内联框架用于在当前 HTML…

    2025年12月21日
    000
  • 将鼠标点击传递到覆盖的HTML元素

    检索点击事件中的鼠标坐标。  现在,通过隐藏叠加层来检索元素,并使用以下命令。之后,重新显示叠加层 – document.elementFromPoint(x, y) 您还可以使用以下 CSS – div { pointer-events:none;} 以上就是将鼠标点击传递…

    2025年12月21日
    000
  • 如何在HTML中合并表格单元格?

    我们使用 colspan 和 rowspan 属性来合并 HTML 中的单元格。 rowspan 属性用于指定单元格应合并的行数,而 colspan 属性用于指定单元格应合并的列数。 该属性应放置在 标记内。 语法 以下是在 HTML 中合并表格单元格的语法。 cell data 示例 以下是 HT…

    2025年12月21日
    000
  • 如何使用HTML和CSS删除填充颜色以更改图像颜色?

    在 Web 开发领域,了解最新的 CSS 和 HTML 技术对于向网站添加令人惊叹的视觉效果至关重要。其中一种效果是“颜色下降效果”,它允许您通过在图像上放置填充颜色来更改悬停时图像的颜色。 通过这种效果,您可以使您的网站对访问者更具互动性和吸引力。在本文中,我们将指导您完成使用 HTML 和 CS…

    2025年12月21日
    000
  • 如何在HTML中包含表格列的组?

    使用 标记包含表列组。HTML 标记用于指定表内一组列的属性。如果需要对 colgroup 中的列应用不同的属性,可以在 colgroup 标记中使用 HTML col 标记。 以下是属性 – 属性 值 描述 立即学习“前端免费学习笔记(深入)”; 对齐 右 左 居中 对齐 char 定…

    2025年12月21日
    000
  • 我们如何在HTML中显示文本区域的可见宽度?

    使用HTML中的cols属性来显示文本区域的可见宽度。您可以尝试运行以下代码来实现cols属性− 示例 This is a demo paragraph. This is a demo paragraph. This is a demo paragraph. This is a demo parag…

    2025年12月21日
    000
  • 在HTML中如何指定元素在页面加载时自动获取焦点?

    使用 autofocus 属性指定元素应在 HTML 中加载页面时自动获得焦点 – 示例 h2> 您可以尝试运行以下代码来了解如何在 HTML 中实现自动对焦属性 – Click on the below button to generate an alert box.…

    2025年12月21日
    000
  • 当一个元素在HTML中被悬停时,如何影响其他元素?

    要在一个元素悬停时影响其他元素,一个元素应该位于另一个元素内,即父子元素或同级元素。将鼠标光标放在一个元素上时,另一个元素的属性应该发生变化,即悬停效果可见。 当一个元素悬停时更改另一个元素的颜色 示例 在此示例中,我们将在鼠标悬停时更改 div 内两个框的颜色 – .parent { …

    2025年12月21日 好文分享
    000

发表回复

登录后才能评论
关注微信