首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浏览器化v2中间件

浏览器化v2中间件
EN

Stack Overflow用户
提问于 2013-03-01 02:04:15
回答 5查看 2.4K关注 0票数 2

在开发中,我在我的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,但是由于这个项目仍在开发中,所以我希望保持我的依赖项的最新情况。任何建议都非常感谢。

更新:

我已经走了这么远:

代码语言:javascript
复制
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'了。这并不理想,我不想更新我的应用程序中的每一个需求。

EN

回答 5

Stack Overflow用户

发布于 2013-06-13 04:23:48

我把它做好了:

代码语言:javascript
复制
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")问题的需要。

票数 5
EN

Stack Overflow用户

发布于 2013-06-17 20:09:03

如果您喜欢开发,我已经开发了以下任务:https://github.com/amiorin/grunt-watchify

它缓存依赖项并监视文件系统。正因为如此,构建速度非常快。你可以用它与咕噜-对抗-手表和咕噜-对抗-连接或单独使用。您可以在github存储库中找到一个Gruntfile.js示例。

如果不使用grunt,则可以使用@substack:https://github.com/substack/watchify中的原始监视程序

当然,你可以和transform一起喝咖啡。

票数 2
EN

Stack Overflow用户

发布于 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模块来封装它,但它是当前的咖啡脚本版本(例如,没有源地图)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15149230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档