【问题标题】:SailsJS load assets from local server when environment=DEV and load assets from CDN when environment=PRODSailsJS 在 environment=DEV 时从本地服务器加载资产,在 environment=PROD 时从 CDN 加载资产
【发布时间】:2015-01-10 08:54:47
【问题描述】:

您好,我有一个网络应用程序,当我在农村地区使用计算机和开发模式时,我需要能够使用本地文件夹中的资产。但是,当我将代码部署到 PROD 服务器时,我需要能够切换要从 CDN 加载的资产。

在sails.environment global的帮助下这是否可能?

例如

    <% if(sails.environment == 'PROD') { %> 
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
      <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
      <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>    
      <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-resource.min.js"></script>    
      <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-cookies.min.js"></script>    
    <% } else { %>
      <script src="/js/jquery.min.js"></script>
      <script src="/js/bootstrap.min.js"></script>
      <script src="/js/angular.min.js"></script>
      <script src="/js/angular-resource.min.js"></script>
      <script src="/js/angular-cookies.min.js"></script>
    <% } %>

谢谢。

【问题讨论】:

    标签: sails.js


    【解决方案1】:

    这些标签是由 Grunt 插入的。

    我想你可以修改tasks/config/sails-linker.js来实现你想要的:

    有一个部分devJSprodJs我认为你应该根据你的要求修改它们。

    请注意,我不知道这是否是帆船运动的好习惯。

    编辑更多可能有帮助的内容:

    sails lift --> 运行默认任务(tasks/register/default.js)。

    sails lift --prod --> 运行 prod 任务(tasks/register/prod.js)。

    来自http://sailsjs.org/#/documentation/concepts/Assets/TaskAutomation.html

    【讨论】:

    • 你绝对可以使用 Grunt 来实现这一点,但可能不是开箱即用的 sails-linker,它旨在输出到本地文件的链接(只有当你包含 @ 987654326@、&lt;!--STYLES--&gt;&lt;!--STYLES END--&gt;&lt;!--TEMPLATES--&gt;&lt;!--TEMPLATES END--&gt; 在你看来。)所以如果 CDN 上的路径与本地路径不同,那就很棘手了。
    【解决方案2】:

    您可以使用sails.config.environmentprocess.env.NODE_ENV 实现您在示例中的目标,但更好的解决方案可能是使用特定于环境的配置文件来指定资产路径。例如,在config/development.js 中,您可以:

    "assets_path": "/js"
    

    config/production.js:

    "assets_path": "//ajax.googleapis.com/ajax/libs/jquery/1.10.2"
    

    那么在你看来:

    <script src="<%=sails.config.assets_path%>/jquery.min.js"></script>
    

    【讨论】:

    • 并不是说我是“我自己的解决方案”的*爱好者,也不是 grunt,但我更愿意完全采用 grunt 方式,也不是停用你的 grunt,至少执行副本的任务资产并在模板文件中包含脚本标签:)
    最近更新 更多