2011-10-16 46 views
1

服務單一串聯JS文件,我有很多的個別JS文件送達工作,像這樣:的NodeJS/ExpressJS:在生產

<script defer src="/js/libs/jquery.min.js"></script> 
<script defer src="/js/libs/plugins.js"></script> 

<!-- application core --> 
<script defer src="/js/application.js"></script> 

<!-- modules --> 
<script defer src="/js/modules/router.js"></script> 
<script defer src="/js/modules/feed.js"></script> 
<script defer src="/js/modules/files.js"></script> 
<script defer src="/js/modules/members.js"></script> 
<script defer src="/js/modules/sharebar.js"></script> 
<script defer src="/js/modules/utils.js"></script> 

在生產中我使用connect-assetmanager所有這些文件連接成一個script.js。我怎樣才能動態改變我的網站layout.jade服務這樣的單個JS文件?

<script defer src="/js/script.js"></script> 

回答

1

爲什麼在這方面的生產/開發之間會有不同的表現?它最終可能會讓你陷入困境,並且AFAICT connect-assetmanager並沒有真正增加開發週期的阻礙,所以請一直使用它,不要擔心。

但是,如果您必須,只需要在layout.jade中查看process.env['NODE_ENV']值和一個條件子句。

if production 
    script(src="/js/script.js") 
else 
    script(src="/js/libs/jquery.min.js") 
    script(src="/js/libs/plugins.js") 
    #and so so 
2

我結束了使用RequireJS與它的優化功能,您可以建立生產單一的JS文件(main.js)。在開發中,所有文件都是獨立的JS文件,它們異步加載,並且在生產中這些文件被連接成一個大的js文件。

重要的一點是,頁面的<head>部分(或加載腳本的位置)在生產和開發過程中保持不變。

<script data-main='/js/main.js' src='/js/plugins/require.js'>