meteor 1.3应用程序结构:将任务分解为方法订阅
对于meteor1.3知识渊博的人来说,这可能是一个非常简单的问题。
在meteor应用程序结构文档中,build议将API分成几个文件,但是我没有看到如何将它们拉回到一起的任何示例。 我开始与Todo反应教程:集合 ,我试图拆分/api/tasks.js
到tasks.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.js
和client/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.js
和publications.js
将导入collections.js
文件,假设他们需要它。
再次,这是一个非常广泛和有见地的话题,并且有几种方法来组织你的项目。
我不知道我明白了什么问题。 我猜这是关于import
报表。
在你的原始任务文件中
import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { check } from 'meteor/check';
你需要那些使用Meteor,Mongo的函数/对象,并检查包。
你需要看看代码需要什么。 在您的methods.js
文件中,您使用Meteor
并check
,但是您不使用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';
如果它在子文件夹中。
这不知何故回答你的问题吗? 如果您需要更多帮助,请更具体和/或包含一些错误日志。