- 流星教程
- 流星 - 主页
- 流星 - 概述
- Meteor - 环境设置
- Meteor - 首次应用
- 流星 - 模板
- 流星 - 收藏
- 流星 - 形式
- 流星 - 活动
- 流星 - 会话
- 流星 - 追踪器
- 流星 - 套餐
- Meteor - 核心 API
- 流星 - 检查
- 流星 - 烈焰
- Meteor - 计时器
- 流星-EJSON
- 流星 - HTTP
- 流星 - 电子邮件
- 流星 - 资产
- 流星 - 安全
- 流星 - 排序
- 流星 - 账户
- Meteor - 方法
- 流星-Package.js
- Meteor - 发布和订阅
- 流星 - 结构
- 流星 - 部署
- Meteor - 在移动设备上运行
- 流星 - 待办事项应用程序
- Meteor - 最佳实践
- 流星有用资源
- 流星 - 快速指南
- 流星 - 有用的资源
- 流星 - 讨论
流星 - 待办事项应用程序
在本章中,我们将学习如何创建一个简单的待办事项应用程序。
第 1 步 - 创建应用程序
打开命令提示符并运行以下命令 -
C:\Users\username\Desktop>meteor create todo-app
要查看该应用程序,您需要使用meteor命令运行该应用程序并转到http://localhost:3000
C:\Users\username\Desktop\todo-app>meteor
Step2 - 创建文件夹和文件
我们将重构它,而不是默认的文件结构。让我们创建一个client文件夹,我们将在其中创建todo-app.html、todo-app.css和todo-app.js。
C:\Users\username\Desktop\todo-app>mkdir client C:\Users\username\Desktop\todo-app\client>touch todo-app.html C:\Users\username\Desktop\todo-app\client>touch todo-app.js
我们还将创建一个包含server.js 的服务器文件夹。
C:\Users\username\Desktop\todo-app>mkdir server C:\Users\username\Desktop\todo-app\server>touch server.js
最后,让我们创建一个包含task-collection.js文件的集合文件夹。
C:\Users\username\Desktop\todo-app>mkdir server C:\Users\username\Desktop\todo-app\collections>touch task-collection.js
您可以在下图中看到应用程序结构 -
第 3 步 - client/todo-app.html
我们的第一个开发步骤是为应用程序创建 HTML。我们需要一个可以添加新任务的输入字段。任务将以列表的形式呈现,并具有删除和检查功能。我们还将具有显示或隐藏已完成任务的功能。
<头> <title>待办事项应用程序</title> </头> <正文> <h1>待办事项列表 ({{incompleteCount}})</h1> <label class =“隐藏完成”> <输入类型=“复选框”选中=“{{hideCompleted}}”/> 隐藏已完成的任务 </标签> <form class =“新任务”> <input type = "text" name = "text" placeholder = "添加新任务" /> </形式> <ul> {{#每个任务}} {{> 任务}} {{/每个}} </ul> </正文> <模板名称=“任务”> <li class = "{{#if selected}}checked{{/if}}"> <按钮类=“删除”>x</按钮> <input type =“checkbox”checked =“{{checked}}”class =“toggle-checked”/> <span>{{用户名}} - {{文本}}</span> </li> </模板>
第 4 步 - collections/task-collection.js
这是我们创建新 MongoDB 集合的地方,因此我们可以在服务器端和客户端上使用它。
Tasks = new Mongo.Collection("tasks");
第 5 步 - 服务器/server.js
我们将在服务器端为我们的应用程序定义方法。这些方法将从客户端调用。在此文件中,我们还将发布数据库查询。
// Publishing tasks from the server... Meteor.publish("tasks", function () { return Tasks.find({}); }); // Methods for handling MongoDb Tasks collection data... Meteor.methods({ addTask: function (text) { Tasks.insert({ text: text, createdAt: new Date(), }); }, deleteTask: function (taskId) { var task = Tasks.findOne(taskId); Tasks.remove(taskId); }, setChecked: function (taskId, setChecked) { var task = Tasks.findOne(taskId); Tasks.update(taskId, { $set: { checked: setChecked} }); } });
第 6 步 - client/todo-app.js
这是主要的客户端 JavaScript 文件。该文件也可以重构,但我们将在这里编写所有客户端代码。首先,我们订阅服务器上发布的任务集合。然后,我们创建帮助程序来处理应用程序逻辑,最后,我们定义将从服务器调用方法的事件。
// Subscribing to the published tasks Meteor.subscribe("tasks"); // Show/Hide functionality Template.body.helpers({ tasks: function () { if (Session.get("hideCompleted")) { // If hide completed is checked, filter tasks return Tasks.find({checked: {$ne: true}}, {sort: {createdAt: -1}}); } else { // Otherwise, return all of the tasks return Tasks.find({}, {sort: {createdAt: -1}}); } }, hideCompleted: function () { return Session.get("hideCompleted"); }, incompleteCount: function () { return Tasks.find({checked: {$ne: true}}).count(); } }); // Events for creating new tasks and Show/Hide functionality. // Calling methods from the server Template.body.events({ "submit .new-task": function (event) { event.preventDefault(); var text = event.target.text.value; Meteor.call("addTask", text); event.target.text.value = ""; }, "change .hide-completed input": function (event) { Session.set("hideCompleted", event.target.checked); } }); // Events for Deleting and Check/Uncheck functionality Template.task.events({ "click .toggle-checked": function () { // Set the checked property to the opposite of its current value Meteor.call("setChecked", this._id, ! this.checked); }, "click .delete": function () { Meteor.call("deleteTask", this._id); } });
第 7 步 - 部署
完成开发后,我们可以从命令提示符窗口部署应用程序。我们的应用程序的部署名称将是my-first-todo-app。
C:\Users\username\Desktop\todo-app>meteor deploy my-first-todo-app
我们可以打开http://my-first-todo-app.meteor.com/开始使用我们的应用程序。