如何用Node.js / Express自动编译客户端CoffeeScript文件

How to automatically compile client side CoffeeScript files with Node.js / Express

本文关键字:编译 客户端 CoffeeScript 文件 Express 何用 Node js      更新时间:2023-09-26

正如标题所说,我试图在页面加载时自动编译公共静态coffeescript文件,而不是自己编译它们并使用。js文件,我如何才能实现这一点,我试图维护一个完整的coffeescript堆栈,这是我唯一遇到麻烦的地方。

tl;dr:阅读文章标题

有许多方法可以完成您正在尝试做的事情。我知道的最简单的两个:

  1. 使用连接资产模块。这背后的想法是,您在根目录中有一个/assets文件夹,并且您使用express.static实例化它,就像您通常使用/public文件夹一样。在这里,您还有两个文件夹:/js/css。你的CoffeeScript去你的/js文件夹。然后,从视图模板中调用js('yourfile')。这是一个非常简单的模块,但不是最提倡的资产管道。

  2. asset-rack使用。虽然不像连接资产那样容易掌握,但它非常灵活,易于扩展。它将是最接近Rails的资产管道的比较对象,并且被大多数流行的JS框架(如Sails.js)所使用。

然而,我真的建议您不要对资产进行动态编译,因为它确实会消耗服务器的性能。

使用构建系统在文件保存上编译会更好——CoffeeScript附带了Cake,所以你可以在你的cakeefile中定义一个watch/compile/build/concatenate步骤,你所需要做的就是在终端上输入$ cake watch,然后再修改任何代码。

或者您可以编写代码,然后编写$ cake build。随你喜欢。我还可以补充一点,蛋糕粉可以省去写蛋糕任务的所有痛苦。

coffee --watch --compile .

监视.中的文件更改,并在更改时编译它们。由于您正在使用expressjs,我认为您也希望在重新编译发生时重新启动服务器:

coffee --compile --watch . &; nodemon server.js

使用https://github.com/remy/nodemon

如果您只想通过HTTP访问编译后的CoffeeScript文件,您也可以尝试一下connect-coffee-script中间件。

与使用coffee --watch --compile相比,它的优点是不需要单独运行程序。