跳转到主要内容

Python和JavaScript的统一模板框架

项目描述

nuja

一个用于构建可重用模板的最小框架,这些模板由Python后端和JavaScript前端消费。

https://travis-ci.org/calmjs/nunja.svg?branch=0.1.0 https://ci.appveyor.com/api/projects/status/mfg7t8y4anh5futf/branch/0.1.0?svg=true https://coveralls.io/repos/github/calmjs/nunja/badge.svg?branch=0.1.0

特性

nuja 是一个框架,为开发者提供了一种在 Jinja 中构建模板的方法,这些模板可以从 Python 中轻松使用,并且可以通过 JavaScript 在 Web 浏览器中使用,用于前端用户界面组件。这是通过使用 Jinja2 为 Python 端渲染,以及使用 Nunjucks JavaScript 包在客户端渲染来实现的。

该包利用 calmjs 框架来管理对 Jinja 模板的访问,这些模板包含在 Python 包内的关联 JavaScript 前端库。

安装

目前处于开发中;要开始,请首先克隆此存储库。

需求

由于此包与多个软件库兼容,所有功能要正常运行,需要满足一些前提条件。至少需要Python 2.7或3.3以上版本;对于JavaScript/Node.js集成方面,强烈推荐使用Node.js v4或更高版本,尽管测试表明即使在Node.js v0.10版本下核心部分也应能运行。然而,目标是使Node.js对于下游库的用户也是可选的,如果他们包含了生成的JavaScript工件。为此,需要为nunja编写使这变得容易的工具。对于网络浏览器,仅支持现代浏览器,请参考持续集成配置(简要:Firefox 31,Chrome 40,IE 11,Safari 9;或者,针对目标浏览器运行测试,如果测试通过,则应该能工作)。

在安装之前,请先安装calmjs,这样当在包的仓库根目录下执行python setup.py develop时,Calmjs框架定义的适当元数据文件也将被安装。如果没有这样做,calmjs也应该通过setuptools自动安装,但需要通过运行python setup.py egg_info来重新生成egg-info元数据。

使用方法

需要制作一个教程。

随着系统的正式化,将添加指导方针,并遵循以下原则

  • 与标准calmjs系统类似,区别在于模具系统针对require.js实现的AMD框架进行了优化,因此允许将包构建为AMD模块,尽管标准CommonJS结构也应该可以工作。

共享模板

这些通过nunja.molds注册表公开,作为一个包括客户端脚本的完整集合。

仅服务器端模板

这些通过nunja.tmpl注册表公开,旨在生成模具可以嵌套的骨骼标记的模板。

将来可能会开发出更正式的关键词集,以更好地促进上述过程。

目前,在此注册表中声明模板将有助于在Python包边界之间提供静态模板。

部署

通常,这涉及到构建一个独立的静态requirejs AMD工件文件,然后将该文件发送到终端用户使用的浏览器,与提供模具的包一起使用。以下是通过执行calmjs命令生成的没有提供为示例的默认nunja.molds的工件

$ calmjs rjs --source-registry=calmjs.module nunja

上述命令将在当前目录中生成一个nunja.js,可以将其包含在<script>标签中,与其他可能包含实际模具的AMD工件一起使用。

如果希望生成一个完整的工件,并且假设要部署的包也将nunja列为Python依赖项(这里nunja仅用作示例),则可以执行以下命令

$ calmjs rjs nunja

这将简单地构建相同的内容,但原始模板字符串将按原样包含。如果要将它们编译成JavaScript代码,可以应用以下可选的建议

$ calmjs rjs nunja --optional-advice=nunja

或者,可以捆绑nunjucks slim库,这将减小最终输出的大小,但客户端将禁用动态模板编译功能。

$ calmjs rjs nunja --optional-advice=nunja[slim]

故障排除

使用带有--bundle-map-method=emptyrjs工具将导致以下错误消息

$ calmjs rjs nunja --bundle-map-method=empty

Tracing dependencies for: /tmp/nunja/nunja.testing.js
Error: TypeError: Cannot read property 'normalize' of undefined
    at Object.<anonymous> (/tmp/nunja/node_modules/requirejs/bin/r.js:1221:35)

这是由于通过 text 插件提供的模板没有被提供所引起的。为了解决这个问题,可以确保模板注册表没有被提供,或者应用可选的建议 nunja[slim] 来预编译模板并不要包括原始源模板字符串。或者,如果打算通过不同的工件包提供 text 模块,可以使用 --empty 标志完全模拟缺失的模块,即:

$ calmjs rjs --empty nunja --bundle-map-method=empty

贡献

变更日志

0.1.0 (2020-09-18)

  • 初始发布。

  • 提供仅适用于 Python 的 jinja 模板注册表的基础注册表。

  • 提供与 nunjucks/jinja 兼容的模板注册表的基础注册表。

  • 为上述基础注册表捕获的工件提供基本的渲染系统。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

nunja-0.1.0.zip (121.5 kB 查看哈希值)

上传时间:

构建分发

nunja-0.1.0-py2.py3-none-any.whl (118.3 kB 查看哈希值)

上传时间: Python 2 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面