2014-02-18 106 views
5

遇到各種各樣的問題讓Sails與RequireJS一起工作,主要是因爲我找不到任何確定的來源,以最好的方式來做到這一點。有幾篇文章討論這個問題,但是他們年紀較大,而且所有事情都有所不同。如果在後面的版本中修改了Sails應用程序結構,鏈接器進程等(.0.9.9,,0.10)Sails.js + RequireJS配置

因此,首先希望看到創作者能夠正確地啓發社區,問題是......如果我計劃在我的客戶端代碼中使用AMD/RequireJS + Backbone方法,並且想要在grunt中使用R.js Optimizer來構建我的生產JS文件並自動解決所有嵌套的依賴關係(而不是必須手動列出),我是不是應該使用--linker選項創建應用程序並自己手動管理grunt構建過程?

此外,在目錄結構應該放置「供應商」目錄,其中包含像Underscore,jQuery,Backbone等所有依賴的JS庫駐留?

回答

0

對於有同樣的問題別人,一個快,但只是局部的解決辦法是通過從layout.ejs以下禁用腳本注入:

<!-- SCRIPTS --> 

<!-- SCRIPTS END --> 

,只須將直接鏈接到您的require.js文件:

<script src="/linker/js/components/requirejs/require.js"></script> 

我說這僅僅是一個部分修復,因爲GruntFile需要需要以正確的串聯文件來實現require任務。

1

我決定這個問題:

  1. 安裝插件grunt-requirejs

  2. 寫道配置運行建立一個文件夾中/tasks/config/requirejs.js

例:

module.exports = function(grunt) { 
    grunt.config.set('requirejs', { 
    dev: { 
     options: { 
      baseUrl: "assets/", 
      name: 'main', 
      optimize: "uglify2",//'none',//"uglify2", 
      //wrap: true, 
      paths: { 
       // Major libraries 
        jquery: '../vendor/jquery', 
        underscore: '../vendor/underscore', 
        backbone: '../vendor/backbone', 
        // Require.js plugins 

       }, 
       removeCombined: true, 
       inlineText: true, 
       useStrict: true, 
       out: "build/main.js", 
       waitSeconds: 200 
      }, 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-requirejs'); 
}; 
  1. 加入任務自動啓動/註冊/ compileAssets.js

例子:

module.exports = function (grunt) { 
    grunt.registerTask('compileAssets', [ 
     'clean:dev', 
     'jst:dev', 
     'less:dev', 
     'copy:dev', 
     'coffee:dev', 
     'requirejs:dev' 
    ]); 
}; 

你也必須調整隻是呻吟在你自己,不要害怕改變任何東西。在設計時,最好將腳本存儲在Assets文件夾中,因爲它很方便。

+0

我按照這個指南,但由於某種原因,我的'build/main.js'沒有正確填充。它只包含'define(「main」,function(){}); ' – danba