Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何组织Meteor项目的文件夹和文件?_Javascript_Meteor - Fatal编程技术网

Javascript 如何组织Meteor项目的文件夹和文件?

Javascript 如何组织Meteor项目的文件夹和文件?,javascript,meteor,Javascript,Meteor,当我创建一个项目时,我试图理解Meteor,我发现到目前为止有些事情有点难以理解 1-当他们说我可以创建一个服务器和一个客户端文件夹时,我应该在哪里创建?流星的兄弟姐妹?当应用程序启动时,一切都在客户端或服务器的范围内,还是我必须做其他事情?如果我在client文件夹中创建了foo.js和foo函数,我可以在Meteor.isClient中调用foo()吗 2-我需要创建一个上传文件夹,以便人们可以上传他们的东西(图像)。那么我应该在哪里做这件事呢?另外,我如何获得项目的绝对路径,并在其中找到此

当我创建一个项目时,我试图理解Meteor,我发现到目前为止有些事情有点难以理解

1-当他们说我可以创建一个
服务器
和一个
客户端
文件夹时,我应该在哪里创建?流星的兄弟姐妹?当应用程序启动时,一切都在客户端或服务器的范围内,还是我必须做其他事情?如果我在
client
文件夹中创建了
foo.js
foo
函数,我可以在
Meteor.isClient
中调用
foo()

2-我需要创建一个上传文件夹,以便人们可以上传他们的东西(图像)。那么我应该在哪里做这件事呢?另外,我如何获得项目的绝对路径,并在其中找到此
上传
文件夹

在我的尝试中,我尝试了以下方法:

fs = Meteor.npmRequire('fs');
__ROOT_APP_PATH__ = fs.realpathSync('.');
但是
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。很隐蔽吧


3-我看到一些人直接在MongoDB上上传和保存文件。这是关系数据库通常不做的事情。我们将文件移动到CDN或我们自己磁盘上的已知文件夹中,并保存该文件的哈希或名称,以便轻松找到它。Meteor+MongoDB不鼓励它吗?为什么我要将文件本身保存在Mongo上,而不是将其移动到文件夹中?

没有任何具体方法,但meteor建议这样做

文件夹结构:

both/ (OR lib/)          -- common code for server and client
  |- collections/        -- declare collections (e.g Employer = new Meteor.Collection("employer");)
  |- router     /        -- router code(e.g Router.route(..))

client/                  -- client side code
  |- global/             -- all global variable for client
  |- helpers/            -- global helper for client (for all templates)
  |- plugins/            -- all the plugins code(if you use any)
  |- stylesheets/        -- css / less files
  |- templates/          -- all templates
        |- home.html     -- home template(html)
        |- home.js       -- home template(js)

public/                  -- images/icons/fonts (meteor looking at this file)

server/                  -- server code
  |- methods/            -- server methods/API (e.g Meteor.methods({...}))
  |- publish/            -- publish code from server

这是我遵循的meteor项目的基本文件夹结构。为了进一步或更进一步。对于任何问题,请随时在评论中提问。

我创建了一个名为
lib
的文件夹,在其中我放置了一个JS文件并声明
foo
。当我在
Meteor.isClient
上调用它时,它说“foo是未定义的”
lib
这两个
都是相似的,它是最父目录。我的意思是
.Meteor
的兄弟。它是Meteor服务器和客户端的常见代码。重要的是,它在
客户端
服务器
之前执行。如果您遵循文件夹结构,则客户端目录中的代码将被视为客户端代码。因此,无需再次使用
Meteor.isClient
。我的意思是,我在
/client
中创建了
函数foo(){}
内部
foo.js
.Meteor
的兄弟
.isClient
并在我的主文件
Meteor.isClient
中调用了
foo()
。它说“foo未定义”,我假设您的
函数foo(){}
是另一个文件中的全局函数,您从另一个文件调用它。我有时也会遇到同样的问题。如果您这样做,请将其放在同一个文件中并检查一次……请让我们知道。Meteor将所有文件包装在函数表达式中,文件中使用
var
或类似的
function name()
声明的任何内容都将仅限于该文件。您必须全局声明它,以便Meteor导出它,请参见我的答案:我在根文件夹中创建了一个JS文件,声明了一个函数,并在客户端启动时调用它。说它是未定义的