Python和JavaScript的统一模板框架
项目描述
nuja
一个用于构建可重用模板的最小框架,这些模板由Python后端和JavaScript前端消费。
特性
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.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=empty的rjs工具将导致以下错误消息
$ 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
贡献
法律
nunja 包是 calmjs 项目的组成部分。
calmjs 项目的版权为 (c) 2016 奥克兰生物工程学院,奥克兰大学。 nunja 采用 GPLv2 或更高版本许可。
变更日志
0.1.0 (2020-09-18)
初始发布。
提供仅适用于 Python 的 jinja 模板注册表的基础注册表。
提供与 nunjucks/jinja 兼容的模板注册表的基础注册表。
为上述基础注册表捕获的工件提供基本的渲染系统。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。