在开发中,我在我的Express服务器上使用Coffeescript和Browserify中间件来交付我的客户端JS,如下所示:
app.use browserify mount: '/client.js', entry: './client.coffee', watch: yes
今天,我正在升级我的依赖项,并在浏览器化v2网站上注意到了这一点:
浏览器化中最糟糕的想法之一,就是托管包的临时http服务器中间件终于消失了。 对咖啡脚本的默认支持消失了。您仍然可以在您的程序中使用咖啡脚本,您只需要编译到js,或者自己将源代码转换挂到包管道中。 请记住,如果您不同意这些削减(我希望很多人会这么做),那么随着v2重构,您可以更容易地将浏览器化如何使用底层新库作为起点。
当然可以。
唯一的问题是,我已经阅读了新API的文档,我对如何实际实现自己的中间件感到有点困惑。实际上,我甚至无法获得一个使用browserify.add()和browserify.bundle()的基本独立示例,更不用说作为表示中间件了。
我可以继续使用v1,但是由于这个项目仍在开发中,所以我希望保持我的依赖项的最新情况。任何建议都非常感谢。
更新:
我已经走了这么远:
browserify = require 'browserify'
coffee = require 'coffee-script'
through = require 'through'
app.get '/client.js', (req, res) ->
b = browserify()
b.add './client.coffee'
b.transform (file) ->
write = (buf) ->
data += buf
end = ->
@queue coffee.compile(data)
@queue null
data = ''
return through(write, end)
b.bundle {}, (err, src) ->
res.send src这是可行的,除了我曾经说过的require './module' --现在看来我必须要require './module.coffee'了。这并不理想,我不想更新我的应用程序中的每一个需求。
发布于 2013-06-13 04:23:48
我把它做好了:
browserify = require('browserify-middleware')
coffeeify = require('coffeeify')
express = require('express')
app = express()
browserify.settings('transform', [coffeeify])
app.get('/client.coffee', browserify('./client.coffee'));
app.listen(3230);但这并不能解决require("X.coffee")问题的需要。
发布于 2013-06-17 20:09:03
如果您喜欢开发,我已经开发了以下任务:https://github.com/amiorin/grunt-watchify
它缓存依赖项并监视文件系统。正因为如此,构建速度非常快。你可以用它与咕噜-对抗-手表和咕噜-对抗-连接或单独使用。您可以在github存储库中找到一个Gruntfile.js示例。
如果不使用grunt,则可以使用@substack:https://github.com/substack/watchify中的原始监视程序
当然,你可以和transform一起喝咖啡。
发布于 2013-03-09 12:55:35
实现浏览器化的咖啡脚本编译中间件的方法要么是通过带有-t标志的转换模块,要么是使用-c标志的transform命令。它们有它们的局限性,但它们可以用于简单的coffeescript编译。使用任一标志,每个所需文件在分析并连接到输出包之前,都会通过一个进程运行(例如,编译为coffeescript中的javascript )。
实际上,现在已经有了关于browserify自述文件中关于如何准确地为coffeescript做这件事的文档:
https://github.com/substack/node-browserify#btransformtr
在您的情况下,最简单的方法是使用以下命令:
browserify -c 'coffee -sc' main.coffee > bundle.js
假设您的入口点coffeescript文件名为main.coffee。
Sub堆栈还创建了一个coffeeify npm模块来封装它,但它是当前的咖啡脚本版本(例如,没有源地图)。
https://stackoverflow.com/questions/15149230
复制相似问题