我正在构建一个django应用程序,并将使用JQuery在许多JavaScripting上进行中继。当使用繁重的javascripting时,我将需要在运行时传递一些变量,并且我试图保持我的代码整洁而没有内联js。
我的第一个问题:是否有关于如何管理随时间构建的js库的最佳实践?我的第二个问题,我想在我的项目中创建一个应用程序,并使用.js扩展名托管模板,并使用javascript mime类型渲染视图。这是一个好的做法吗?
的问候,
答案 0 :(得分:9)
我认为,你应该看一下在客户端实现某种模型 - 视图 - 控制器模式的JavaScript框架(如果你还没有这样做的话)。
以下是discussion关于其中一个框架backbone.js的引用。我认为这与你关于javascript库管理的问题有关。
< ...>如果你有一个具有大量JavaScript交互性的应用程序,或者单页应用程序,其中整个界面是从JavaScript驱动的(我们就是这种情况),那么它有助于构建客户端代码更多的魅力而不只是jQuery提供。
在极端情况下,在我们的例子中,DocumentCloud工作区实际上是一个空体标签,所有HTML渲染和有趣的逻辑都发生在JavaScript模型和视图中 - 您永远不必刷新页面。服务器端Rails代码变得更小,更简单,基本上委托执行验证和身份验证并向客户端提供JSON。想想GMail,或新推特,或280幻灯片...
是的,提到了Rails,但等待,如果您使用Django(或Flask或任何Web框架),架构保持不变:
服务器端实现API。它基本上提供,接受,验证序列化数据。
例如, piston
或django-tastypie
对此有好处。
客户端提供必要的AJAX请求以检索数据,显示数据视图,呈现模板,发出保存数据的请求等。
例如,Backbone.js提供了一个Model原型。您可以扩展它(或子类,如果您正在使用CoffeeScript)并通过提供相应tastypie
资源的URL来绑定到服务器端模型。在此之后,您无需担心同步:您只需执行my_model.save()
,而Backbone.sync
幕后将生成AJAX请求并更新服务器模型实例。
我最近开始使用brunch。它基本上为富应用程序提供了一个框架,将CoffeeScript与更好的JavaScript相结合,将backbone.js
用于MVC类,将eco
用于javascript模板,将stylus
用作css预处理器,以及其他好东西(并提供)方便的命令行界面:brunch watch
,brunch build
)。我建议看看早午餐项目中的文件是如何组织的。
Django目前并不容易管理繁重的客户端应用程序。你需要弄清楚自己应该如何组织图书馆。
与此同时,许多最小化和优化脚本和样式表(如requirejs
)的构建工具有点难以集成到通常的Django项目开发工作流程中。如果您打算创建丰富的JavaScript应用程序,那么您很可能需要其中一种工具。
在项目中创建一个应用程序是一个选项,但是,我认为,这会使事情变得复杂一些。您已经有两个或多或少的单独应用程序,那么为什么不继续进一步分离问题 - 只需要处理两个实际上独立的项目?一个项目是基于Django的服务器端,另一个项目,例如,brunch
- 基于客户端。
我们开始使用我们的最新项目,我个人认为这使得事情更容易管理,更容易使用。
更新:我认为this post在总结保持项目分离的利弊方面做得非常好。