学习Web开发时我应该使用框架吗?

时间:2009-06-27 03:52:23

标签: frameworks

我意识到这可能是主观的,但我真的需要一个答案,我似乎无法在论坛的其他部分找到足够接近它的东西。我读过一些人说,框架(任何MVC框架)可以掩盖太多的东西,而其他人则说它可以促进良好的实践。我意识到框架对于某个级别的程序员来说是很好的,但是个人的开始呢?是否应该专注于语言或一起学习?

7 个答案:

答案 0 :(得分:7)

我认为网络开发比任何人第一次开始进入时都要强大!阅读本文并了解它是完全可选的......但需要非常擅长你的工作。

我建议您先花时间学习语言。我建议学习C#只是因为它更具市场价值,并且通常直接支持大多数MS产品。通过学习C# - ASP.NET中的编程,控制台应用程序,服务器,服务,桌面应用程序等都将在您的掌控之中。您可以为大多数MS产品以及许多Linux类型平台编程。

一旦你有了这个,那么你可以转向网络编程,因为网络编程有一些复杂性,大多数其他环境没有。诸如会话,缓存,状态管理,跨站点脚本,样式,客户端与服务器端编程,浏览器支持,HTTP如何工作,获取与发布,表单如何工作,cookie等概念都位于单独学习的内容列表,更不用说学习ASP.NET基础框架和命名空间了。

一旦你掌握了编程语言,然后是网络编程的概念,我建议你暂停并学习数据库设计。不要担心性能......尝试先学好设计。接下来将有表现。 Access(我知道亵渎)是一个很好的开始。初学者很容易使用。它可以轻松转换为更强大的SQL Server平台。至少学习一些SQL ...但我建议你学习胃可以处理的东西。我听说有人说SQL就像是数据库的汇编语言。减缓应用程序停顿的首要问题是糟糕的数据库设计和糟糕的查询。一旦你掌握了这些知识 - 把它塞进你的脑海,然后看看一个好的ORM。 NHybernate目前可能是最好的,但基本学习者需要的更复杂。出于这个原因,我目前建议启动和运行LINQ to SQL,因为它非常容易使用。然后看看实体框架(虽然我仍然认为它很糟糕......你应该等到EF 2.0 ...... ERRRRR ...现在4.0用.net 4.0发布)。然后是NHybernate。

现在是时候开始了解Web开发所需的基础架构了。当你学习一些网络编程的东西时,你可能会碰到这个。但您需要了解DNS,IIS,负载平衡器,粘性路由,循环,群集,容错,服务器硬件设置,Web场,缓存场(MemCached Win32,Velocity),SMTP,MSMQ,数据库邮件排队等基础知识,很多人可能会说你不需要这个。那将有一些知识渊博的网络管理员来帮助你在这里。然而,他们通常知道影响他们的事情......不是你。你知道的越多,你对雇用你的公司就越有价值。

现在您可以了解最佳实践和设计模式的详细信息。了解基础知识,例如存储库模式,工厂模式,外观模式,模型视图演示者模式,模型视图控制器模式,观察者模式以及各种其他内容。请关注Martin Fowler和其他人的建议。看看控制反转,依赖注入,SOLID原理,DRY,FIT,测试驱动设计和域驱动设计等概念。在进入下一步之前,尽可能多地学习。

现在你可以考虑一下框架!首先使用ASP Classic创建一个基本应用程序(免费提供IIS!)。这将为您提供一个没有多余装饰的Web开发环境的味道。看看ASP.NET网络表单(简要),看看MS如何通过隐藏所有复杂的东西(现在你知道如何通过阅读上述材料来自行管理!!!)来试图让事情变得更容易。现在您不再需要ASP.NET Web窗体。立即移动到ASP.NET MVC。 MVC框架为您提供了创建易于管理的Web应用程序所需的全部功能。如果你构建了一些非常大的东西,那么纯粹的web开发框架就无法处理你需要的东西了。但是,对于此类UBER自定义方案,MVC更具可扩展性。

现在您已经完成了通往ASP.NET MVC的旅程,您可以查看微软企业应用程序块(例如他们在MySpace上使用)等内容。看看Elmah错误记录(必须具备)。看看如何为您的MVC站点构建custom SiteMapProvider。如果您需要了解搜索内容,请了解Lucene.NET

如果你做到这一点......你准备好了解它自己的其余部分! 玩得开心。对于对上述所有概念有所了解的人来说,这个空间有很大的空间。

答案 1 :(得分:3)

Web开发需要一定程度的组织,因为它非常依赖于关注点的分离。例如,浏览器旨在显示数据并与用户交互。它不是用于从数据库查找数据或执行分析。因此,Web开发框架可以帮助提供使浏览器体验实用所需的服务。

使用平台的好处在于,它将提供制作任何您不会(也不应该)考虑的Web应用程序所必需的核心组件,例如用户成员资格。关于如何实现这些服务的许多设计决策和深入思考已经为您完成,使您可以专注于您实际希望应用程序执行的操作。

在可用的框架中,我发现实现MVC(模型 - 视图 - 控制器)模式的框架非常实用。它们清楚地组织了Web开发的不同功能,同时让您完全控制呈现给浏览器的标记。

总而言之,无论您是否使用平台,您都需要一些基本技能来完全实现Web开发,例如HTML,CSS和实际底层程序的核心编程语言。

答案 2 :(得分:3)

您将使用某种框架。问题是,你想在什么级别学习?

您可能不会关心异步I / O和多线程与Web服务器的选择/轮询样式。

那么,您选择的语言将在此基础上提供一个层,语言首选“Web界面”API。对于Java,它是Servlet,是服务器端Web应用程序通常编码的最低级别。

您应该找到您的语言中的“低级”图层,并至少学习API。你应该知道基本的HTTP,如状态代码,cookie,重定向,POST与GET,URL编码,以及可能的一些更重要的标题。

然后,您将会了解这些更高级别的框架带来什么,并能够更好地评估您的需求/项目的适当抽象级别。

答案 3 :(得分:3)

我认为我不同意安德鲁。我不认为学习C是Web开发的先决条件。事实上,学习Javascript,Action-script或PHP之类的东西通常更容易,这在很大程度上归功于大量的网站和教程,并且足以让您了解几乎所有编程语言的基础知识。变量,条件,循环和OOP。我只是觉得学习C#引入了许多与Web开发无关的学习,例如指针和内存管理。

至于你应该先学习一个框架吗?当然不。永远不能。你需要能够先站在自己的双脚上,对HTML / CSS,服务器端脚本(PHP / ASP / Python / Ruby等)感到满意并喜欢它或厌恶它,但你必须拥有它对Flash和Action脚本的理解。

您了解这些的顺序完全取决于您。但是我的学习计划会像这样......

从HTML开始。获得基础知识大约需要半个小时(它由带有属性的标签组成,第1课结束)并且最好先将其取出。

然后开始学习CSS。你会很快再次获得基础知识。但CSS是一个雷区,所以期待你的余生可以把它搞清楚。

下一步动作脚本。大多数人都不同意我,但请耐心等待。 HTML和CSS不是编程语言。动作脚本是。并且第一次学习编程语言既困难又乏味。 Action-script相对于大多数其他语言的优势在于结果非常直观。与您一起工作很愉快,您可以坐下来,定期为自己的成就感到自豪。这对于服务器端脚本语言或Javascript来说是不可能的,并且您需要学习一大堆东西才能​​使服务器端脚本启动并运行。例如,您无法使用PHP构建空间入侵者。

我在这里改变了我的想法。我鼓励初学者忽略ActionScript并专注于Javascript。我仍然认为能够快速查看屏幕上的内容是一个很好的激励因素,但我鼓励人们查看canvas标签教程和框架。自2009年以来,Javascript已经走过了漫长的道路,现在已成为编程的通用语言,因此它非常有用。关于HTML和CSS不是编程语言的初步观点仍然存在。

然后,您可以从服务器端语言开始。与此同时,你将不得不弄清楚数据库的东西。我推荐PHP和MySQL,因为它是免费的。

再次,我在这里改变了我的想法。我鼓励初学者在后端使用Javascript(Node.js),并在关系数据库和noSql解决方案(如Mongo)之间拆分数据库学习。

然后......学习你的框架。或者更好的是,滚动你自己。这就是我一直在做的事情,它增强了我的学习能力。

如果您正在进行Web开发,您必须知道这些构建块是如何工作的。您不必是所有领域的专家,但您应该尝试成为至少其中一个领域的专家。如果你在获得基础知识之前就开始学习框架,那么你就会陷入困境,在那里你不明白为什么事情不起作用会激怒你,以及任何与你合作的人。

答案 4 :(得分:1)

你应该学习如何使用框架,因为它对你来说会有所帮助,也更容易学习。

MVC会帮助你很多..相信我......我正在开发不使用mvc的web项目,它就像一团糟......(过去没有很好的mvc,我从来没有听说过)< / p>

答案 5 :(得分:0)

简短版本:是,然后是一些。

答案 6 :(得分:0)

FWIW:这个更通用的答案可能对那里的人有用。

什么:框架一次又一次地消除了使用样板代码的繁琐。它们隐藏了向导和约定下的复杂性和设计问题。他们还使用特殊的库,设计模式等,对初学者来说远非显而易见。

因此,使用框架有助于完成工作,而无需确切知道如何使用ATM,而无需了解内部结构。您只需在某些地方添加代码位,然后“正常工作”。

HTML&gt; CSS&gt; Ruby&gt; SQL&gt; Rails / Javascript框架&gt;图书馆将成为一个良好的学习轨道。休息时,你会因为好奇,在论坛上闲逛或在需要时进行扩展学习而学习。

如何:问题在您走出简单的教科书示例(即当您尝试让它做一些甚至有点不同的事情)时开始。

当看起来你已经做好了所有事情但事情仍然无效时,解码了神秘的错误消息。在论坛中搜索错误字符串可能有所帮助。或者只是从头开始重新开始。

阅读文章和书籍,视频,反复试验,努力工作,搜索引擎,stackoverflow /论坛,本地大师,设计文章,使用库,源代码浏览是攀登学习的好方法在需求的基础上轻轻地弯曲。

反对框架是初学者的头号问题。了解框架所期望的是在此阶段避免白发的关键。有足够的洞察力来手动执行框架自动化可能有助于减少这种猜测的努力。

为什么:对于更高级的调试/设计,最好知道框架在幕后做了什么。当事情不像你计划的那样工作。最初,你可以得到已经完成了艰苦工作的本地大师或论坛专家的帮助。随着你的深入,你可以承担更多的角色。例如,有一本“重建轨道”一书,它在Ruby on Rails的引擎盖下。

注意:一些提示面向Ruby / Rails,但您可以轻松替换您喜欢的语言/框架。