用于TurboGears2的Coffeescript中间件

tgext.coffeescript的Python项目详细描述


关于tgext.coffeescript

CoffeeScript是一种编译成javascript的小语言。在所有这些下面 笨拙的大括号和分号,javascript的核心总是有一个华丽的对象模型。 CoffeeScript试图以简单的方式公开javascript的好部分。

tgext.coffeescript是一个旨在使 TurboGears2开发更简单,tgext.coffeescript转换普通咖啡 使用官方coffeescript编译器将文件转换为javascript。

Tgext.coffeescript基于Alessandro Molina的tgext.scss,是 在同一个许可证下(麻省理工学院)。

安装

tgext.coffeescript既可以从pypi安装,也可以从bitbucket安装:

easy_install tgext.coffeescript

您还需要安装coffeescript编译器,有关说明,请查看他们的网站。

CoffeeScript

启用tgext.coffeescript

使用tgext.coffeescript非常简单,您可以编辑config/middeware.py然后 在此处使用自定义中间件包装您的基本TurboGears 2应用程序 应用程序带有咖啡脚本中间件

from tgext.coffeescript import CoffeeScriptMiddleware

make_base_app = base_config.setup_tg_wsgi_app(load_environment)

def make_app(global_conf, full_stack=True, **app_conf):
    app = make_base_app(global_conf, full_stack=True, **app_conf)

    # Wrap your base TurboGears 2 application with custom middleware here
    app = CoffeeScriptMiddleware(app)

    return app

现在您只需将.coffee文件放入public/javascript中,它们将作为javascript提供服务。

javascript压缩

coffeescript支持通过slimit或jsmin缩小javascript输出作为回退,这个函数是 默认情况下禁用,可以通过在构造函数上传递参数minify=true来启用:

app = CoffeeScriptMiddleware(app, minify=True)

缓存后端

您可以将缓存后端存储更改为任何可以序列化dict对象的dict类对象, 例如,可以通过将缓存对象传递给中间件构造函数来使用烧杯缓存:

from tgext.coffeescript import CoffeeScriptMiddleware
from tg import cache

make_base_app = base_config.setup_tg_wsgi_app(load_environment)

def make_app(global_conf, full_stack=True, **app_conf):
    app = make_base_app(global_conf, full_stack=True, **app_conf)

    # CoffeeScript with beaker cache backend
    app = CoffeeScriptMiddleware(app, cache=cache)

    return app

编译器选项

目前,tgext.coffeescript默认情况下会打开–bare编译器选项,这意味着生成的javascript 输出将不是顶级函数下的包装器,如果您要反转此行为,可以告诉 禁用它的中间件:

app = CoffeeScriptMiddleware(app, bare=False)

这将对tgext.coffeescript提供的所有文件禁用裸选项,对该选项进行更细粒度的控制 以后可能会根据需要提供。

Jinja2分机

coffeescript为jinja2模板提供了一个扩展,用于编译直接嵌入到 模板。要激活它,只需在config/app_config.py文件中添加以下内容:

from tgext.coffeescript.jinja import CoffeeExtension

base_config.jinja_extensions = [CoffeeExtension]

现在您可以在模板中使用咖啡标签:

<style type="text/javascript">
{% coffee "main" %}
    console.log state for state in ['open', 'close', 'full']
{% endless %}
</style>

其中“main”是那个coffeescript部分的唯一标识符,它应该输出如下:

<style type="text/javascript">
var state, _i, _len, _ref;

_ref = ['open', 'close', 'full'];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  state = _ref[_i];
  console.log(state);
}
</style>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓如何在java字符串中获取RATE的值   java ANT在哪里输出编译器错误?   在java中,while循环在何处启动对象   javacom。谷歌。格森。内部的LinkedTreeMap无法强制转换到我的类   java单选按钮。isSelected()方法未返回正确的响应   嵌入式系统中applet中的java相对码基字段   如何在eclipse中将Java应用程序附加到jvm探查器?   java为什么Android应用程序崩溃?   在java中拖放上传后保持文件夹结构   爪哇多领导人选举问题   java Springs RestTemplate如何处理postForEntity()中的错误响应   Java如何用前导零递增整数字符串?   java Android将文本作为图像共享给其他应用程序   Java搜索替换   java isDirectory()不适用于UNIX目录   java我们可以得到显示测试类是否通过或失败的TestNG报告吗   Java类对象排序和分组   简单Java幂递归   java在处理MethodArgumentNotValidException时如何访问请求对象?