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