Clojuredipt Integration for Django
django-cljs-loader的Python项目详细描述
Django项目中Clojurescript的透明集成。目前 支持Leiningen和 Figwheel,意思是你 在开发过程中可以依赖figwheel的自动刷新功能。
这个项目的灵感来自 django-webpack-loader 项目,其目标类似于透明地包含和使用 Django项目中的Webpack包。
与莱宁根的集成过于简单:信息是从 leiningenproject.clj文件,用于确定哪些输出包是 在哪里可用。这意味着有一个紧耦合到 莱宁根项目文件的结构-如果您 有一个真正异国情调的项目设置!
安装
$> pip install django-cljs-loader
用法
设置
只支持莱宁根项目。使用project.clj文件 在项目的某个地方,您可以在 你的应用设置。
应该是这样的:
fromedn_format.edn_leximportKeywordBASE_DIR=...# should point to the project rootSTATIC_URL='/static/'CLJS_LOADER={# where to find the Leiningen project file'PROJECT_FILE':os.path.join(BASE_DIR,'project.clj'),# If True, tries to load JS files from the Figwheel dev server.# Set to False in production mode.'FIGWHEEL':True,# Which cljs build (defined in the project.clj file) to use.# Change this for production.'CLJS_BUILD':Keyword('dev'),# The root folder for assets built by Leiningen.# In development mode, this matches the Figwheel root.'ROOT':'assets/public',}# Add the folder where cljsbuild output lands as a source directory for the# staticfiles app. This assumes you are using the staticfiles app.STATICFILES_DIRS=(os.path.join(BASE_DIR,CLJS_LOADER['ROOT']),)
把clojurescript源文件放在哪里取决于您- assets/cljs是一种可能性。请参阅示例项目。
模板标签
使用render_bundletemplate标记钩住编译的 将clojurescript绑定到应用程序中。它将插入一个script 标记并调用在leiningen中定义的main函数 项目文件。
{% load render_bundle from cljs_loader %} ... <body> ... {% render_bundle %} </body>
发展
打开第二个终端并运行lein figwheel。或者,启动 一个repl和do(fig-start)。javascript包将从 FigWheel开发服务器。
产量
假设您有一个名为prod:
的cljsbuild配置文件$> lein cljsbuild once prod
由lein cljsbuild生成的编译包可以是 用python manage.py collectstatic或 包括生产资产的首选方法是。
不需要更改render_bundle模板标记。
贡献
您可以使用以下命令运行tests文件夹中的测试套件 命令:
$> make test