我可以期待简短的答案是“只使用AngularJS / Backbone / ...(填空)”。 但我相信在我最终深入研究之前,应该有其他方法和适当的方法来完成任务。
所以现在,我使用普通的html,css,javascript,我使用的唯一库是jQuery和一些插件。
忏悔时间: 这些是我发现自己一直在做的事情,我真的认为这些是“坏”而不是“正确的事情”:
使用全局js变量将事物连接在一起。 例如
$(document).ready(function(){
window.someVar = ...;
window.someFun = function(){...};
});
需要在DOM操作后再次绑定所有事件,因为它在选择一些元素并将其放在其他位置后停止工作。 例如
$(".myElementWithSpecialActionHandler").click(function(){});
元素重新定位后,例如插入到页面的不同位置,事件处理函数停止工作。所以我必须做
// after DOM manipulation
// again >.<
$(".myElementWithSpecialActionHandler").click(function(){});
<tag onClick="someFunction(); ...>
有时。我是个菜鸟。但是我对编写所有这些代码感到非常不安,但我不太清楚如何“正确”。我不认为这是一个理想的问题,但我认为这对新开发者来说非常普遍。所以答案会让很多人受益。
非常感谢任何启发,网站链接,指向优秀来源,帮助和评论家的指示!
您诚挚的, 味道好的菜鸟=&gt;因此他对自己的代码感到反感:(
答案 0 :(得分:3)
我认为这些问题没有正确答案,但偏好/意见
1)我不喜欢在全局范围内添加变量,因此window.someVar
是一种错误的做法,因为另一个非相关范围可能会意外地操纵某个值。如果您使用的是jQuery,则对全局变量的需求非常少。如果您发现自己多次使用它,那么您可能需要重新考虑解决方案
2)在创建新元素后,您需要查看event delegation而不是绑定事件处理程序。假设您要将新的input
元素添加到ID为x
的div中,那么您可以在dom ready handler中执行以下操作,而不是一次又一次地绑定它
$('#x').on('change', 'input', function(){})
3)我通常为我的脚本使用单个js文件,以便可以正确缓存
4)与脚本文件相同
5)在字符串文字中,我使用'
作为封闭标记,以便我可以在"
内部使用var x = '<div class="someclass"></div>'
等html属性。
6)我通常不会使用内联css,尽可能尝试将样式信息与html标记分开
答案 1 :(得分:0)
只是为了解决这个问题,你肯定可以从使用某种前端框架中获益。我喜欢jQuery用于需要直接操作DOM的小东西。
1)其中一些是不可避免的。 JavaScript建立在全局变量之上。甚至Douglas Crockford也在“JavaScript:The Good Parts”中承认了这一点。尽量保持最低限度。查看包含事物的模式,例如立即调用的函数表达式。3)尝试找到分解的方法,然后使用某些东西来连接和缩小它。也就是说,我也犯了过多的东西。
4)有充分的理由将事情分开。您的CSS重置可以在其自己的文件中。另一个文件中的站点范围布局。页面特定的东西可以进入他们自己的文件。模板语言可以帮助您将页面细分为可以拥有自己的CSS文件的功能部分。
5)我不知道这是老实说的问题。我见过很多人在JS字符串周围使用单引号。
6)善于黑客攻击,长期不利。只需添加另一个类(或id,如果适用)。你可以把它放在一个shame.css:http://csswizardry.com/2013/04/shame-css/