2015-07-22 142 views
2

我想了解流星,因爲我創建了一個項目,並且發現了一些迄今爲止難以理解的事情。如何組織Meteor項目中的文件夾和文件?

1-當他們說我可以創建一個server和一個client文件夾時,我確切的意思是這麼做的? .meteor的兄弟?當應用程序啓動時,一切都會在客戶端或服務器的範圍內,還是必須做其他事情?如果我在client文件夾中創建一個foo.jsfoo函數,我可以在Meteor.isClient中調用foo(),它會工作嗎?

2-我需要創建一個上傳文件夾,以便人們可以上傳他們的東西(圖片)。那麼我該怎麼做呢?另外,我怎麼能得到我的項目的絕對路徑,並找到這個upload文件夾裏面?

在我嘗試我試過如下:

fs = Meteor.npmRequire('fs'); 
__ROOT_APP_PATH__ = fs.realpathSync('.'); 

__ROOT_APP_PATH__.meteor\local\build\programs\server。相當隱藏的權利?!

3我看到一些人直接在MongoDB上傳和保存文件。這是我們通常不會用關係數據庫做的事情。我們將文件移動到CDN上的已知文件夾或我們自己的磁盤上,並保存該文件的散列或名稱,以便我們輕鬆找到它。 Meteor + MongoDB不鼓勵它嗎?爲什麼我將文件保存在Mongo上而不是將其移動到文件夾中?

回答

3

文件夾結構:

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 

這是我跟着流星項目的基本文件夾結構。進一步referenceDocumentation。對於任何問題,請隨時詢問我的意見..

+0

我創建了一個名爲'lib'的文件夾,裏面放了一個JS文件並聲明瞭'foo'。當我在Meteor.isClient上調用它時,它說「foo是未定義的」 –

+0

'''lib'或'both'是相似的,它是父目錄最多的目錄..我是'.meteor'的同級..它是通用代碼流星服務器和客戶端。我重要的是它在'client'和'server'之前執行。如果您遵循文件夾結構並將您在客戶端目錄中的代碼視爲客戶端代碼。所以,不需要再次使用'Meteor.isClient'。 – iamhimadri

+0

我的意思是我在'.meteor'的'/ client'兄弟中的'foo.js'內創建了'function foo(){}',並在'Meteor.isClient'內的main文件中調用了'foo()'其餘的代碼。它說「foo是未定義的」 –