meteor 1.3应用程序结构:将任务分解为方法订阅

对于meteor1.3知识渊博的人来说,这可能是一个非常简单的问题。

在meteor应用程序结构文档中,build议将API分成几个文件,但是我没有看到如何将它们拉回到一起的任何示例。 我开始与Todo反应教程:集合 ,我试图拆分/api/tasks.jstasks.js methods.js server/publications.js

我不知道我需要从tasks.js中的代码中进行哪些更改,以便正确导入移动到methods.js和server / publications.js的代码

谢谢您的帮助!

代码: http : //www.github.com/Falieson/LearningReact/blob/meteor_todos/MeteorTodos_React/imports/api/tasks/tasks.js

这是一个相当广泛和有见地的话题,所以我会尽量给出一个简洁的答案,与“meteor指南”讨论的事项有关。

首先,我会跟随教程来达到目的。 对我来说,它似乎并不是要教你如何构build一个复杂的应用程序,而是要在一个基本的Meteor项目中获得React。

对项目结构的问题没有明确的答案 ,因为它是相当有见地的。 一些按function划分,另一些按function划分; 有些像深嵌套,有些更喜欢更扁平的结构。

主要的主题是模块的显式import语法使得你的依赖性是明确的 ,因此不需要猜测或笨拙的文件名,这会丢失语义,并且使得find每个符号的来源是不平凡的任务。

应用程序结构教程也不完整,主要包括指南。

让我们假设如下简单的结构,这非常符合用例:

 。
 ├──客户
 │└──main.js
 ├──import
 │├──api
 ││├──api.js
 ││├──api-server.js
 ││└──module1
 ││├──collections.js
 ││├──methods.js
 ││└──服务器
 ││└──publications.js
 │├──客户
 ││└──index.js
 │└──服务器
 │└──index.js
 └──服务器
     └──main.js

imports目录中的任何内容都不会自动导入。 这一切都始于server/main.jsclient/main.js 入口点

他们依次导入imports/<target>/index.js ,这是每个目标(客户机/服务器)启动应用程序的位置。

由于某些api代码是特定于服务器的,因此您可能需要创build一个server-api.js文件或类似的服务器资源。

在引导过程中,服务器的index.js将会

 import '../api/api-server'; 

api-server.js将会:

 import './api'; import './module1/server/publications'; 

client/index.js可以直接导入api.js

标准方法和出版物不会导出任何符号,因此不需要单独导入它们,而只需导入它们定义的文件。

api.js将:

 import './module1/methods'; 

其中methods.jspublications.js将导入collections.js文件,假设他们需要它。

再次,这是一个非常广泛和有见地的话题,并且有几种方法来组织你的项目。

我不知道我明白了什么问题。 我猜这是关于import报表。

在你的原始任务文件中

 import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { check } from 'meteor/check'; 

你需要那些使用Meteor,Mongo的函数/对象,并检查包。

你需要看看代码需要什么。 在您的methods.js文件中,您使用Meteorcheck ,但是您不使用Mongo 。 所以你想添加

 import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; 

我也看到你在你的publication.js文件中声明你的Mongo集合,这通常是不合适的。 发布应该只在服务器上运行,而你的集合应该在客户端和服务器上声明。

所以你应该移动这个代码

 export const Tasks = new Mongo.Collection('tasks'); 

通常,它将进入task.js文件。

在这种情况下,在task.js ,当你声明一个集合时,你使用的是Mongo对象,你需要

 import { Mongo } from 'meteor/mongo'; 

而在你的出版物中,目前你只需要

 import { Meteor } from 'meteor/meteor'; 

还有一个问题,就像你使用export声明任务对象一样,你需要导入它的方式与导入Meteor,Mongo和检查相同,但是作为你自己的包:

 import { Tasks } from './tasks'; 

对于与tasks.js文件不同的文件夹。 和

 import { Tasks } from '../tasks'; 

如果它在子文件夹中。

这不知何故回答你的问题吗? 如果您需要更多帮助,请更具体和/或包含一些错误日志。