NodeJS / ExpressJS:在生产中提供单个连接的JS文件

时间:2011-10-16 19:47:52

标签: javascript node.js concatenation express

我正在处理大量单独的JS文件:

<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>

2 个答案:

答案 0 :(得分:2)

我最终使用RequireJS,因为它的优化功能可以为生产构建单个JS文件(main.js)。在开发中,所有文件都是单独的JS文件,它们异步加载,在生产中这些文件被连接成一个大的js文件。

重点是页面的<head>部分(或加载脚本的任何地方)在生产和开发中保持不变。

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

答案 1 :(得分: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