有各种各样的问题让Sails与RequireJS一起工作,主要是因为我找不到任何明确的方法来做到这一点。有几个帖子可以讨论这个问题,但它们比较老,而且所有事情都有所不同。非常希望看到创作者在适当的方式上启发社区,因为后者版本中的Sails应用程序结构,链接器进程等的更改(.0.9.9,,0.10)
所以,第一个问题是......如果我打算在我的客户端代码中使用AMD / RequireJS + Backbone方法,并希望在grunt中使用R.js Optimizer来构建我的生产JS文件,如果我不使用--linker选项创建应用程序并自己手动管理grunt构建过程,那么自动解析所有嵌套依赖项(而不必手动列出);
此外,在目录结构中应该放置“vendor”目录,其中包含所有依赖的JS库,如Underscore,jQuery,Backbone等驻留?
答案 0 :(得分:1)
我决定了这个问题:
编写配置以在文件夹/tasks/config/requirejs.js中运行build
示例:
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');
};
示例:
module.exports = function (grunt) {
grunt.registerTask('compileAssets', [
'clean:dev',
'jst:dev',
'less:dev',
'copy:dev',
'coffee:dev',
'requirejs:dev'
]);
};
你也必须调整自己的咕噜声,不要害怕改变任何事情。在设计时,最好将脚本存储在Assets文件夹中,因为它很方便。
答案 1 :(得分:0)
对于具有相同问题的其他人,快速但仅部分修复是通过从layout.ejs
删除以下内容来禁用脚本注入:
<!-- SCRIPTS -->
<!-- SCRIPTS END -->
然后直接链接到您的require.js文件:
<script src="/linker/js/components/requirejs/require.js"></script>
我说这只是部分修复,因为GruntFile需要实现require
任务才能正确连接文件。