用于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编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像