javascript模板是否仅适用于将小项目插入DOM
Are javascript templates only useful for inserting small items into the DOM?
我最近偶然发现了Javascript模板,对此非常感兴趣。
我正在使用MVC模式构建一个大型PHP应用程序。模板由相当棒的Twig处理。
我最近发现了一个trick的javascript实现。
我还阅读了很多关于使用javascipt模板引擎的内容。
现在,在我的应用程序中,应用程序为标准请求生成一个完整的页面,作为没有javascript的用户的后备。对于AJAX请求,它可以生成页面的内容部分(没有<head>
、<body>
等)。
ajax响应对象目前只是一个呈现的HTML内容,然后将其插入DOM中。
我应该返回一个包含已编译javascript模板和要插入到模板中的对象的响应对象吗?这样做有什么好处?
从我读到的帖子来看,javascript模板只是代表页面一小部分的小片段,例如在用户提交博客文章的那一刻显示评论
javascript模板是否只适用于在页面中插入这类小"片段"?
是
我最近参与的一个项目引发了"客户端模板热",我们对每个模板都使用了该死的东西。
对于我使用过的每个模板库(两个或三个),您得到的错误消息都不是很好。如果你有一个庞大的模板,它可以处理相当多的数据,你很快就会发现u.foo is null or not an object
错误消息越来越令人沮丧。
我确定的最佳实践是:
- 如果是很少加载的模板,则返回完整的HTML片段(来自服务器)。如果你在一个页面上只加载一次HTML,那么你还不如把它向下填充,对吗?这也鼓励您将逻辑保留在服务器上,它可能属于服务器
- 将客户端模板用于小型重复模板。你的博客评论示例可能很好。当我的客户端模板非常小(<10行)时,我发现最成功的是
- 使用无逻辑模板引擎。模板中允许的逻辑越多,就越难读取/维护它们。此外,其中一些逻辑可能应该在您的业务层中,而不是在某些JavaScript模板中。换句话说,它们迫使将您的演示与逻辑分离(这很好)
PS:客户端和服务器端模板都可以使用相同的模板引擎,这很酷。这将使项目的开发人员更有效率。
根据应用程序的规模和要求,您应该考虑以下因素:
-
不要在Ajax上横行霸道;Ajax不是WebSockets,所以要谨慎使用它。此外,客户端执行速度始终是关键;与尽可能多地倾倒资源+在需要时使用资源相比,AJAX速度较慢;例如,您可以发送到javascript userdata={name:'xxxx',address;'yyyy',…}并使用它,而不是仅在需要时通过AJAX请求名称和地址。
-
建议使用全局PHP var$sendData(或类似的东西),在对HTML进行整形后,立即使用简单的
<script>data = <?php echo json_encode($sendData); ?></script>
发送$sendData -
javascript模板增加了执行速度。这使得做另一种选择是合理的,即将所有动态的东西分离,并缓存静态资源,如javascript函数
-
你不能,我引用
return a response object containing a compiled javascript template
,如果不驻留在某个服务器端javascript引擎中,该引擎在返回之前完成编译工作 -
为了你的个人福利,它总是归结为你对维护应用程序的快速、轻松和无痛的反应;使用超级测试版的实验框架、端口和套件是没有意义的,因为你对的控制有限
聪明地工作,不要努力。祝你好运,伙计。
您还可以查看Distalhttp://code.google.com/p/distal模板引擎。
- 使用jQuery插入HTML页面的第一个项目缺少结束标记
- 是否可以设置柔盒插入、移除和项目位置的动画
- 我想将插入的日期与laravel 5项目中的当前时间进行比较
- 创建新的同位素项目并插入外来内容
- 如何使用 DOMNodeInsert 将项目插入到 DOM 中
- 小部件上的菜单,在选择其他项目时单击关闭时打开
- icCube 下拉小部件 - 如何获取所选项目
- 如何在项目符号列表中插入背景(图片)元素,其 URL 写入相邻的项目符号列表中
- AngularJS:插入新项目后对列表重新排序
- 大/流行的JavaScript库github项目:为什么这么多小文件
- 扩展菜单插入带有覆盖的新项目
- 将项目插入活动选项卡窗格
- 为什么淘汰赛.js以擅长小项目、骨干.js大项目而闻名
- jQuery Range 滑块 grep 返回具有最小值和最大值的项目
- 在MongoDB中更新后,插入项目的顺序搞砸了
- 使用html-css引导程序(lightbox)的小项目
- javascript模板是否仅适用于将小项目插入DOM
- 学习编写javascript代码的小项目
- 将项目插入2D数组
- 当从下拉列表中选择项目时,在将选中的项目插入到ng-model之前,如何进行一些逻辑处理