JS开发的最佳实践?

时间:2012-08-13 08:05:17

标签: javascript-events javascript javascript-framework unobtrusive-javascript

我是网络开发人员。以前我是一名PHP程序员已经有好几年了,现在已经有两年了,我是一名Java开发人员。但无论服务器端使用的编程语言如何,我仍然使用JS。但不幸的是,我不能说我擅长编写JS代码。

逻辑似乎很脆弱,遍布不同页面的代码。我的意思是,我在页面A上使用逻辑的一部分,然后在页面B上使用其他部分,依此类推。 JS代码变得一团糟:(

我正在尝试将常用逻辑移到JS文件中。但与此同时,我在页面A上写了一些代码,然后在页面B上,在页面C上我正在使用一些ajax回调,其中我正在调用函数,它在页面A上定义,依此类推上。

我的意思是,今天有很多新的JS框架,但我害怕使用它们,因为我害怕JS :(

那么,是否有编写JS代码的最佳实践?

UPD: 伙计们,不理解我错了。对我来说问题不是要学习语言,而是要正确使用它。 JS与PHP / Java有很大不同,它还意味着应该使用其他方法吗?

P.S。我读过JavaScript:好的部分,我知道JS的一些技巧和注意事项。但是关于使用AJAX和amp;的最佳实践的信息不足。其他用于客户端 - 服务器通信的东西。

4 个答案:

答案 0 :(得分:4)

关于这个问题有很多话要说。

首先,您似乎想知道保持代码可理解和可维护的难度。没有神奇的食谱。我从事相当大的JavaScript项目,每天都要面对这个问题。

由于JavaScript未经过静态检查,因此需要维护的代码知识量大于其他语言。因为在JavaScript中,在代码实际执行之前,您永远无法确定对象的作用或它包含的数据,编写复杂的逻辑和工作流程可能非常繁琐。

我们的答案是让我们的代码尽可能简单。复杂逻辑封装在简单,可重用的对象中。每个功能都有明确的责任,副作用很小。我们的代码主要与上下文无关(它可以在其他项目中重用,每个模块都很少或没有依赖)。我们试图避免需要大量参数的函数,或者做很多事情的对象。我们还避免编写需要大量条件语句的代码。这为我们提供了一个功能库,使我们可以轻松地编写复杂的逻辑。最后,HTML视图中所需的只是对函数的一些单行调用。其他所有内容都在.js文件中。

此外,一致性很重要。坚持常见的模式。使您的代码可预测。

我们的典型JavaScript文件只包含一个对象。文件按关注区域(控件,核心,服务等)进行分组。

使用诸如jQuery之类的库是个好主意,因为它们关注大多数样板代码并且得到大型开发人员社区的支持。它们可以简化开发的各个方面(例如,处理DOM,Ajax,JSON序列化)。

在某些情况下,单元测试非常有用。我们使用QUnit来测试我们的JavaScript代码。它可以帮助我们检测意外行为或破坏变化。

根据您的需要,您还可以尝试将代码编译为JavaScript的语言或框架。有pages with comprehensive lists of those。有优点(静态检查,更好的类型系统)和缺点(对库,对项目的支持不佳)。

关于使用Ajax与服务器通信,我建议您查看RESTful principles。 Ajax只是一个工具。如果有的话,你可以做很多事情。

答案 1 :(得分:3)

这是一种很大的语言,有时可能会吓人。目前阻止你的是对这个问题缺乏了解。学的越多,就越了解/不会害怕尝试新事物。

网上有优秀的文章/资源;虽然有些文章可能看起来很简单,但这是一个很好的起点。你花在语言上的时间越多,就会越好地照顾你:)

<强>更新

我认为你所寻找的是“设计模式”。它们定义了一组执行某些任务的最佳实践;

  • 以下是有关设计模式的question
  • 这是关于JS模式的另一个link
  • 我还建议您订阅javascript weekly以获取有关JS的最新消息:)

答案 2 :(得分:0)

这个问题的一个典型答案是this book

你的问题提到“我的意思是,今天是很多新的JS框架,但我害怕使用它们,因为我害怕JS :(”。

似乎你的恐惧部分来自你组织代码的困难。

首先,不要害怕使用图书馆。例如,socket.io是抽象AJAX的一种方法。

其次,虽然Javascript没有Java所做的类结构,但是你可以使用has a form of OOP来组织公共代码。

Javascript无疑是idiosyncratic,但您不是害怕它,而是通过练习来学习使用bend it to your will的灵活性。

答案 3 :(得分:0)

我认为你应该使用一个好的JS Framework(我推荐JQuery),因为它简化了你的代码(浏览器兼容性,便利功能,简化的事件管理,更少的错误),并且对于大多数问题都有很好的解决方案作为插件或者至少代码片段。作为您问题的答案,您不应混用JavaScript和HTML代码。在JQuery中,通过使用CSS选择器引用HTML元素进行文档操作和处理事件(点击,表单提交等)很容易。一个可能的地方开始学习JQuery:http://docs.jquery.com/Tutorials:How_jQuery_Works

无论如何,理解JavaScript的原理是必不可少的,为此,我建议您阅读一本关于该主题的好书。我个人认为使用JQuery编程JavaScript非常令人满意,因为该语言具有强大的功能。我也推荐O'Reilly的JavaScript:The Good Parts。