Jam*_*ton 8 javascript python django ajax pyramid
作为前端网站开发的新手,我可以理解一些东西,比如路线,ORM等等.我不明白的是它们如何一起玩.我的理解是,用Pyramid/Django等构建的网站有很多组件:
模板引擎:您可以从代码中抽象出HTML.说得通.
SQLAlchemy等人:一个ORM.精细.
渲染器.不知道.
JS库:JQuery等:不知道除了添加漂亮的效果之外还有什么用途.这如何与模板引擎相互作用?这如何与整个框架互动?我可以在Pyramid中为jquery编写代码,还是单独编写JS,将我的JS文件插入我的模板或者......?
形式模板库(formish,formalchemy等):这些与大局有什么关系?他们在哪里插上?
我缺少的任何其他重要组件?
那么,有人可以帮我解释堆栈吗?
1)模板引擎:您可以从代码中抽象出HTML.说得通.
有几种可用.Mako尝试在模板中使用许多常见的Python习语,以避免学习许多新概念.Jinja2类似于Django,但具有更多功能.Genshi是你喜欢基于XML的模板.
作为对整个事物不熟悉的人,很难说不幸的是哪一个最容易开始.也许Jinja2.
2)SQLAlchemy等.一个ORM.精细.
是的.
3)渲染器.不知道.
渲染器是Pyramid视图配置选项,它告诉Pyramid如果您的视图返回一个dict,那么它应该传递给给定的'渲染器'.渲染器设置为使用扩展名,Pyramid附带了几个内置命令:http: //docs.pylonsproject.org/projects/pyramid/1.0/narr/renderers.html#built-in-renderers
简而言之,渲染器选项仅查看您传递的名称,并找到与扩展名匹配的模板引擎(.mak,.pt,'json','string',.etc),并使用它呈现dict结果.
在许多框架中,您没有将渲染器指定为配置,而是在视图中包含一些代码,如下所示:
def somefunc(request):
return render_to_response('/some/template.mak', {})
Run Code Online (Sandbox Code Playgroud)
在金字塔中,你可以做同样的事情:
@view_config(renderer='/some/template.mak')
def somefunc(request):
return {}
Run Code Online (Sandbox Code Playgroud)
后者是一种有用的功能有几个原因:
当它完全处于配置状态时,您可以覆盖渲染器而无需更改视图代码逻辑.
您可以添加多个配置,以根据其他条件更改渲染器.
考虑下面这个例子,如果HTTP请求是XHR(想要一个JSON格式的结果AJAX请求,而不是想要HTML吐出被模板引擎一般的HTTP请求),它改变了基于渲染器.
@view_config(renderer='json', xhr=True)
@view_config(renderer='/some/template.mak')
def somefunc(request):
# lookup some_dict_data in a db, etc.
return some_dict_data
Run Code Online (Sandbox Code Playgroud)
4)JS库:JQuery等.不知道除了添加漂亮的效果之外还有什么用途.这如何与模板引擎相互作用?这如何与整个框架互动?我可以在金字塔中为jquery编写代码,还是单独编写JS,将我的JS文件插入我的模板或者......?
JS库使编写Javascript变得更容易.它们在浏览器中与DOM进行交互,除了向您的Web应用程序发送可能需要JSON格式结果的HTTP请求之外,它们与Pyramid没有交互.
首先,我建议完全忽略Javascript,直到您对HTML,DOM树更加熟悉,并获得仅使用HTML,CSS和Web应用程序的网站.
5)形式模板库(formish,formalchemy等)这些与大局有什么关系?他们在哪里插上?
我强烈建议完全忽略这些,并编写基本的HTML表单元素.您是整个Web堆栈的新手,并且在没有首先熟悉基础知识的情况下,无需直接跳到Web开发的最高级方面.
但是,在编写基本表单之后,您将需要一个表单验证库,以便更轻松地验证提交的表单是否包含有效参数.回到PHP的旧时代,人们会写出数百行if/else语句,这些语句通过表单(有些仍然可以!ack!).
现在我们使用表单验证库,可以很容易地声明表单的有效参数.我建议FormEncode开始说起,因为它非常容易使用只进行验证.对于Pyramid,使用FormEncode的最简单方法可能是pyramid_simpleform:http://packages.python.org/pyramid_simpleform/
现在,忽略表单呈现部分并自己在模板中编写HTML表单元素,并使用pyramid_simpleform只是为了简单的FormEncode集成.
简而言之,首先使用视图函数和模板显示带有链接的HTML页面(并使用URL调度,它比初学者的遍历更容易掌握).然后添加表单,HTML和验证,然后添加CSS以开始样式化.
接下来,您可以从一些基本的Javascript开始使用jQuery来使事情在页面上移动,并逐步通过AJAX与webapp交互以获取更多数据.只是不要立刻解决太多问题,应该更容易看出它们如何组合在一起.
3)渲染器。不知道。
通常,渲染器会获取您的数据/模型并将其转换为客户端想要的内容。如果客户端只是浏览器,那么渲染器通常会通过模板混合数据以生成 HTML。如果客户端是一些 JavaScript 代码或非浏览器应用程序(桌面应用程序、正在使用数据的另一台服务器……),则渲染器通常会生成 JSON(或可能是 XML)。您可以将其视为序列化或编组系统。
4)JS库:
这些是您用来对用户界面进行编程的内容。用户界面可能只是 HTML 之上的一些漂亮的效果,但它还可以有更多。例如,Google Docs 就是 JavaScript,而且不仅仅是漂亮的效果;Cloud9 IDE将是另一个使用 JavaScript 构建的完整应用程序的示例(感谢 Raynos 提供的另一个示例)。
5) 表单模板库
您可以将它们(或多或少)视为模板引擎的宏系统。如果您有数据模式,那么您可以使用这些东西来生成模板块并自动处理相应返回数据的服务器端处理。
我还缺少其他重要组件吗?
您可以将现代 Web 堆栈视为传统的客户端服务器系统;这可能会激怒一些人,但除了规模之外,这里并没有什么全新的东西。客户端使用 HTML 和 CSS 进行布局,使用 JavaScript(可能使用工具包)构建功能和视觉效果。该服务器是某种网络服务器。客户端和服务器之间的通信通常通过 HTTP 结合 JSON 和 HTML 来完成。您可以将 web-1.0(愿上帝原谅我的营销术语)视为老式的哑终端,而 web-2.0 更像是在客户端上有一些大脑的 X 终端。
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |