我正在建立一个StackOverflow和Digg之间的交叉网站(只是一个不同的类型)。通常在过去我会使用ASP.Net Web表单构建它。但是我想用这个项目来学习新技术。我正在使用ASP.Net Mvc这真的很棒,但我需要学习/使用某种javascript库。
例如,当有人在某个帖子上投票时,我希望立即更新投票计数,或者如果有人在“标签”文本框中键入文本,我希望它能够提供当前使用的标签的下拉列表基本上我想为我的网站提供很多AJAXy的东西。
所以我的问题是我从哪里开始?我觉得有这么多选择的轰炸,我不知道从哪里开始,甚至不知道它们是什么。有人可以理顺我并提供一些解释和指导吗?
我确信目前我还记得很多其他人。
答案 0 :(得分:32)
你一定要从Javascript的基础开始。从打印“Hello World”到页面开始。转到基本语言功能,如变量,循环,条件和函数。我推荐W3Schools Introduction to Javascript。在Javascript中尝试进行面向对象编程时不要太过紧张。即使对于一些有经验的Javascript程序员来说,这也很痛苦和令人困惑。
接下来我强烈建议学习使用跨浏览器的Javascript库,而不是尝试手动完成所有操作(具体来说:与DOM交互,执行XmlHttpRequests又称AJAX调用等) 。我推荐jQuery library。它为您想要做的所有很酷的AJAX-y事件提供了坚实的基础,并且有大量plugins可用。
jQuery是一个Javascript框架,允许与文档对象模型(DOM)轻松可靠地交互。简单来说,DOM是网页中所有HTML元素的表示。 DOM在浏览器与浏览器之间略有不同,并且“手动”与它进行交互是繁琐且容易出错的。 jQuery基本上完成了幕后的所有艰苦工作,从而解决了这个问题。它比那更强大,真的,但这是主要特征。它还为页面事件,自定义事件,插件,CSS操作等提供支持。
JSON是你提到的另一个词。它代表JavaScript Object Notation。 JSON只是一种在Javascript中实现结构的轻量级方式(实际上也是其他语言)。说实话,Wikipedia JSON Article提供了一个更好的JSON如何与AJAX一起使用的摘要,所以你可能想要give it a read。
以下是事件的基本顺序:
{ 'firstname':'Robert', 'lastname':'Smith' }
document.write('Hello ' + result.firstname + ' ' + result.lastname)
以下是我过去一年左右收集的一些有用的链接,这对我有所帮助。我希望他们也帮助你!
最重要的是要记住:边做边学。实验。尝试新事物。制作一堆概念页面证明。使用Javascript,这真的是让你的脚湿透的最好方法。祝你好运!
答案 1 :(得分:7)
首先学习Javascript的基础知识。在深入了解深层抽象之前,了解如何使用它的内部结构非常重要。 Mozila在Javascript上有a fantastic resource,包括overview guide。
接下来,选择一个好的框架,它将帮助你进行大量的DOM操作,这是Javascript通常用于的。框架将为跨浏览器实现差异节省大量时间,并为开发提供良好的基础。这里有很多选择,你可以选择任何一个受欢迎的选择。就个人而言,我选择jQuery作为其简洁的API和优秀的插件库。
在此过程中,您将学习不同特征/符号的定义,例如JSON(表示Javascript Object Notation,用于在Javascript中定义可移植数据结构)。对于您遇到的任何具体问题,您可以随时谷歌或回到SO;)
答案 2 :(得分:4)
在使用javascript时,我总是发现rhino book是我的朋友。虽然它没有涵盖华丽的框架,但感觉它始终作为骨干教程/参考,并且对所有内容都有很好的覆盖。最新版本还包括ajax的东西。
我有不少于3本版本的书,它们看起来都很破旧。很好用。
答案 3 :(得分:2)
简短回答:我认为你从jQuery开始。
答案很长:JSON不是一个库,它是一种数据格式,而且是一种简单的格式。如果你对javascript很熟悉它应该很自然 - 它是必不可少的来学习但不会花很长时间。 jQuery正在成为事实上的标准库,包括MS和其他大型玩家。开始时非常简单,你会发现它有很多社区支持,尤其是在这里。
答案 4 :(得分:2)
JSON
JSON是一种数据格式,如XML,但它是Javascript原生的。你可以eval()它,它就变成了一个实际的对象(更确切地说,是一个哈希表)。它是XML的理想替代品,用于在页面上异步发送数据,因为它不需要解析器,因为它占用空间较小。对于服务器端,有许多JSON库,如JsonFx Serializer,可帮助您在服务器上序列化/反序列化JSON。更多信息,包括http://www.json.org/处多个JSON库的链接。请注意,还有一些可选的Javascript库可用于使用JSON,也可以在json.org。
JQuery
jQuery正迅速成为终极Javascript工具库。它实际上是微软已经采用的第一个第三方开源软件,并将其作为核心组件(适用于Visual Studio 2010和ASP.NET AJAX 4.0)加入其开发产品线中。这绝对是你想要学习的图书馆,但在你完全掌握Javascript的基础知识之前就没有了。
MS-AJAX
Microsoft ASP.NET AJAX基本上是ASP.NET Web窗体的一组扩展,它通过在不刷新整个页面的情况下对服务器执行回发来促进AJAX功能。还有更多的东西;它还有一个广泛的Javascript库(微软AJAX库,我相信它被称为,这就是“MS-AJAX”所表示的),它为Javascript提供了许多类似.NET的OOP功能,并且它不需要ASP.NET使用AJAX。 Microsoft AJAX Library(Javascript库)不是一件值得学习的东西,但它没有必要。但是,ASP.NET AJAX基于ASP.NET Web窗体,因此它与ASP.NET MVC不兼容。您可以使用Javascript库,但不能最大限度地使用它;再一次,没有必要,你可以很好地了解Javascript基础知识,并且非常了解jQuery(和jQuery插件)。
简而言之,学习Javascript本身(如果你还没有),学习DOM操作/ DHTML基础知识,然后学习jQuery,我认为你将全部完成。
答案 5 :(得分:2)
不要错过这个: http://ajaxpatterns.org/
它全面涵盖了您在任何 lib中进行AJAX开发时可能使用的所有概念和设计模式。它还包括对所有AJAX库的评论。这个网站将为您提供全局,而不仅仅是教您一个特定的lib。
我个人喜欢ExtJS AJAX Lib http://extjs.com。在审查了市场后,我在研究项目中使用了6个月。我特别喜欢它优秀的UI小部件套件。看看他们的演示。这个库最初是基于Yahoo UI,但现在有更多。他们现在已经将它与谷歌网络工具包集成(我几乎选择了但由于缺乏像样的小部件)。
像jQuery这样的libs看起来很小而且不完整。 Dojo有一些很棒的东西,但没有集成,代码质量也不高(恕我直言)。对于某些人来说,可能是GPL /商业许可条款(在LGPL和转向GPL的过程中引起了一些争议)。
在http://delicious.com/tohagan/ajax查看我剩下的AJAX资源链接...享受!
答案 6 :(得分:1)
首先学习基础知识,然后选择一个框架来学习Ajax的东西 - 有这么多,没有理由再用手工做了。我第二次(第三次?第五次?)学习jQuery;它看起来真的很甜蜜。
答案 7 :(得分:1)
我想向Yahoo User Interface libraries添加一个喊叫声,它提供了jQuery这样的库所做的许多基本的“标准化”层(例如DOM操作,事件处理等)。作为一个相当不错的小部件集合。
它可能没有这种简洁的语法,但它有很好的文档记录 - 包括许多其他值得阅读的优秀材料 - 并且有大量的例子。
我觉得值得指出,只是让人们考虑多种选择。
答案 8 :(得分:0)
我会选择jQuery,最近它会得到更多的关注,你会找到更好的起点/教程/事情。
但如果你更渴望学习Javascript,那么你最好不要担心框架并学习语言基础知识......然后使用框架来帮助你更快更好地完成任务。
答案 9 :(得分:0)
JSON不是库,所以不要担心。
MS-AJAX是一个非常具体的工具,所以我也不会打扰,除非你已经是ASP.NET人员了。
我建议你开始使用纯Javascript,当你对它感到满意的时候尝试类似jQuery的东西,这很棒,还有John Resig的“Pro Javascript技术”,它会以一种好的方式扭曲你的思想。在我读这本书的时候,我每隔两页就说“哇真的很酷”。
但重要的是首先获得基础知识,所以前往w3schools或在商店获得一本不错的javascript书。
答案 10 :(得分:0)
jQuery有明显的好处,它已被微软祝福,所以如果你使用SO技术,这将是一个很好的起点(使用jquery网站教程)。
答案 11 :(得分:-1)
如果你这样做“只是为了好玩”,你应该在这里阅读其他答案。如果您专注于结果,最好从现有的代码库开始,例如, Stacked可以给你。 Stacked是StackOverflow的开源实现,为了更加“灵活”而创建了一些差异。比如支持多个数据库,许多配置等...
顺便说一下,我和Stacked一起工作......