正如標題所示,我試圖在頁面加載時自動編譯公共靜態coffeescript文件,而不是自己編譯它們並使用.js文件,我如何實現這一點,我試圖保持一個完整的CoffeeScript堆棧,這是我遇到的唯一困難。如何使用Node.js/Express自動編譯客戶端CoffeeScript文件
tl; dr:閱讀帖子的標題。
正如標題所示,我試圖在頁面加載時自動編譯公共靜態coffeescript文件,而不是自己編譯它們並使用.js文件,我如何實現這一點,我試圖保持一個完整的CoffeeScript堆棧,這是我遇到的唯一困難。如何使用Node.js/Express自動編譯客戶端CoffeeScript文件
tl; dr:閱讀帖子的標題。
coffee --watch --compile .
手錶在.
文件的修改和編譯他們,因爲他們改變。由於您使用expressjs我想你也想盡快重新啓動服務器的重新編譯發生:
coffee --compile --watch . &; nodemon server.js
有許多的方式來完成你想要什麼做。我知道的兩個最簡單的:
使用connect-assets模塊。這背後的想法是,你有一個/assets
文件夾在根目錄中,你可以用express.static
來實例化它,就像你通常會用/public
文件夾一樣。在那裏,你還有兩個文件夾:/js
和/css
。您的CoffeeScript進入您的/js
文件夾。然後,從您的視圖模板中,請撥打js('yourfile')
。這是一個非常簡單的模塊,但不是最主張的資產管道。使用asset-rack。儘管不像連接資產那麼容易掌握,但它非常靈活並且易於擴展。它將是Rails資產管道最接近的比較器,並且被大多數流行的JS框架(如Sails.js)所使用。
不過,我真的建議您從資產上的動態編譯避免,因爲它可以真正耗盡服務器的性能。
使用構建系統進行文件保存編譯會更好 - CoffeeScript隨附Cake,因此您可以在Cakefile中定義一個watch/compile/build/concatenate步驟,以及編譯所需的所有內容保存文件是在更改任何代碼之前輸入$ cake watch
到終端。
或者,您可以編寫代碼,然後$ cake build
。無論你喜歡什麼。我可能還補充說,cake-flour需要全部的寫出Cake任務的痛苦。
如果您只想通過HTTP訪問經過編譯的CoffeeScript文件,則還可以嘗試使用connect-coffee-script中間件。它對我來說工作得很好。
它比使用coffee --watch --compile
有優勢,您不需要運行單獨的程序。