Http Server: node.js 0.8.16
source files: mix of js and coffee
AMD loader: curl / require
Markup: jade
CSS: styl
我正在使用上述设置构建原型应用程序。它一切正常,但我正在努力让AMD加载器与应用程序集成。 assets文件夹如下所示:
|____assets
| |____css
| | |____style.css
| | |____style.styl
| |____img
| |____js
| | |____bacon.js
| | |____curl.js
| | |____foo.coffee
| | |____index.coffee
好的,所以我希望将index.coffee
和foo.coffee
编译为js,并在浏览器请求/js/foo.js
等时提供服务。如果我使用connect-assets,这将正常工作并将!= js('foo')
放入我的玉标记中。但!= js(
正在开始连接资产编译,这是(我认为)即时编译咖啡文件到js。
但是,如果我将curl
与"foo" : "/js/foo.js"
这样的路径一起使用,那么它将无效,因为connect-assets的js()方法并没有开始。
是否有节点的中间件将处理咖啡文件的请求作为js文件?我看了一下,连接资产是我能找到的最接近的。
我想避免在我的咖啡文件上设置“观察者”。由于我使用的是一些js文件和一些coffee-as-js文件,我不想跟踪'真正的'js文件的位置以及'on-the-fly'js文件的位置。
更新5/24 :我抛弃了所有中间件小提琴,并与grunt
一起使用了一个可以在更改时编译内容的观察者。效果很好。
答案 0 :(得分:0)
是的,重复,大多数。无论如何,我会回答它,以防其他人在路上。
https://github.com/wdavidw/node-connect-coffee-script
var app = express();
srcFolder = path.join(__dirname, 'assets', 'src', 'coffee');
publicFolder = path.join(__dirname, 'assets');
console.log("public folder: " + publicFolder);
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
...
app.use(require('connect-coffee-script')({
src: srcFolder, dest: path.join( publicFolder, 'js')
}));
app.use(stylus.middleware ({
debug: true,
force: true,
src: path.join(__dirname, 'assets', 'src', 'styl' ),
dest: path.join(__dirname, 'assets', 'css')})
);
app.use(express.static(publicFolder));
});
然后在layout.jade方面:
script
curl = {
baseUrl: "/js",
paths: {
"jquery": "//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.min.js",
"foo" : "foo.js",
"index" : "index.js",
"bacon" : "bacon.js"
}
};
script(src='/js/curl.js')
script
//debugger;
curl(['js!jquery', 'js!bacon', 'js!foo!order', 'js!index!order'])
.then(function(){
console.log("scripts loaded");
},
function(){
alert("a module failed to load");
});
答案 1 :(得分:0)
我将提供另一种解决方案,它不是连接中间件。我编写了工具 - camel,用于将coffeescript与require风格的AMD风格加载器一起使用。
要使用驼峰,您可以:
YOURPROGRAM.coffee应该用AMD风格编写。
对于小例子,您可以查看:
对于Big示例,您可以查看:
它使用带有AMD风格库的Camel,服务器端的WebWorkers和其他HTML5案例,所有代码都在CoffeeScript中。