【问题标题】:Web Application front-end and back-end misunderstandingWeb应用前后端误区
【发布时间】:2016-07-17 17:54:17
【问题描述】:

我需要一些指导/建议。我决定构建一个 Web 应用程序,但我很难将所有组件放在一起。

我过去做过基本的网站,但已经忘记了很多。我过去学习过 JavaScript 和 Java,但我有点生疏,所以如果你决定回复,请把我当作一个对这一切都不熟悉的人。

基本上,我很难理解整个 Web 应用程序的后端和前端,以及我到底需要什么。我做了一些研究,发现我需要 MySQL、Tomcat 服务器还是 Apache? (这部分我没看懂),Spring Tool Suite,前端的Java和AngularJS知识。我有基本的 SQL 知识。我很难将所有这些结合在一起。

我正在尝试创建的应用程序是一个原型,而不是一个完整的应用程序。我希望能够将数据输入到文本框中,然后在图形/图表上直观地表示。我知道 AngularJS 能够做到这一点。 AngularJS 和 JavaScript 一样吗? Java 在这一切中从何而来?我认为需要一种 Web 编程语言,那么为什么要使用 Java? Java 是否用于后端? MySQL 将用于什么以及 Tomcat 或 Apache 服务器也将用于什么?如果可能的话,我更喜欢坚持使用 JavaScript/Angular 和 Java,因为我没有学习过任何其他语言,例如 PHP 或 C。

如果有人想知道,我正在使用 Mac。我的机器上已经安装了以下内容:

  • 最新的 JDK
  • Spring 工具套件
  • MySQL

谁能尽可能地为我澄清这一点?我认为我理解这一切不需要太多,因为我确实有计算知识,但我有点生疏,因为我上次使用它已经有一段时间了。

非常感谢任何帮助!

【问题讨论】:

  • 很高兴您提出这个问题。第一次做的人可能会感到困惑。
  • 我猜这个问题太笼统了。首先尝试创建一些有角度的应用程序。你不需要 tomcat、spring 或 java。只是浏览器。
  • @Petr 我不同意。盲目编码是个坏主意。他们首先需要看到大局。如果他们让这个问题变得不那么笼统,那就不会展示大局了。
  • @4castle +1 先看大局。快速学习新事物的主要关键是从大局开始,然后慢慢缩小范围。

标签: angularjs spring-mvc


【解决方案1】:

这个问题包含了很多内容。我会尽力回答这一切,但请耐心等待。因为我希望涵盖这么多的内容,请记住,我所说的很多内容都是不准确的,您绝对应该阅读更多关于这些主题的内容。如果您喜欢它,您即将进入一个充满编程可能性的全新世界,所以请慢慢来,尝试按照自己的步调沉浸其中。

首先,关于网络技术的一些基础知识。在这里要理解的最基本的事情可能是 clientserver 之间的分离。这些术语在软件讨论中广泛使用,指代处理、存储和提供数据的事物(服务器)以及允许用户请求、查看、交互和更改该数据的事物(客户端)。客户端和服务器的具体内容会根据您所谈论的上下文类型而有很大差异,但在 Web 开发的世界中:

  • 通常假定客户端是 Web 浏览器。有许多不同的网络浏览器(例如 Chrome、Firefox、Safari、Internet Explorer/Edge、Opera ……),它们都有自己的怪癖,但总的来说,如果你不尝试任何太花哨的东西,你就会坚持对于最新版本的浏览器,无论您使用哪种浏览器查看网页,您的结果都将基本相同。

  • 在谈论“服务器”时,您可以根据使用它的句子来指代一些东西:您编写的服务器端代码(稍后会详细介绍),处理您的服务器端代码并​​为您的网页提供服务的软件(这将是 Apache 或 Tomcat),或运行上述软件的铝、硅和塑料的物理集合(即计算机,任何东西,从您的笔记本电脑到专用机器)。出于本次讨论的目的,我们将坚持前两个。

正如我之前所说,客户端/服务器区别的最重要部分是在呈现和启用与客户端上的数据交互处理和存储之间的关注点分离 em> 服务器上的数据。尽可能将它们分开;从长远来看,这将使您的生活更轻松。客户端代码不应该知道数据是如何存储或处理的;这是服务器的工作,客户端不需要知道。同样,您在服务器上编写的代码根本不应该关心数据是如何格式化并呈现给用户的。相反,它应该尝试以易于以多种不同方式处理的格式提供数据。

但我正在超越自己。首先,我们需要谈谈您提出的技术问题。因此,让我们深入研究一下。

客户

通常,服务器和客户端使用不同的编程语言1。浏览器中使用了三种主要语言,每种语言都有一个独特的目的,与其他两种语言的目的相辅相成。如果我踩到你已经走过的地方,请原谅我(随意略读或跳过);我在这里为初学者写作,所以我想确保涵盖所有基础。

HTML

HTML(超文本标记语言)是构建网页的绝对基础。 HTML 的工作是描述页面的结构和其中呈现的数据。 HTML 将内容分成多个部分,包括页眉、页脚、文章、段落、旁白和其他此类容器。 HTML 还告诉浏览器有关图像、视频和 Flash 游戏的信息,哪些文本或图片应该是指向网络中其他地方的链接,哪些文本应该强调或者你在哪里制作强项。它可以包含包含各种输入设备的表单,并且当您提交表单时,它可以告诉浏览器将该表单的内容发送到哪里。换句话说,它描述了文档的组成、内容部分之间的关​​系,以及在某种程度上,文档某些部分的目的2

HTML 看起来像这样:

<html>
  <head>
    <title>A Sample Web Page</title>
  </head>
  <body>
    <header>
      <h1>Sample Code FTW!</h1>
    </header>
    <main>
      <section id="introduction">
        <h1>Introduction</h1>
        <h2>Where it all begins...</h2>
        <p>
          This is the first paragraph of the intro.
        </p>
        <p>This is the second one.</p>
      </section>
      <section id="picture-show">
        <h1>Pictures</h1>
        <h2>They're fun!</h2>
        <p>Here is a cat:</p>
        <img src="https://i.imgur.com/MQHYB.jpg" />
        <p>Here are some more (the internet is full of these things):</p>
        <img src="https://i.imgur.com/sHQQJG5.gif" />
      </section>
    </main>
    <footer>
      <small>&copy; KenB 2015; All rights reserved. (just kidding, do what you want with it)</small>
    </footer>
  </body>
</html>

这里是查看上述内容的链接:http://codepen.io/kenbellows/pen/GZvmVy

正如您点击该链接所见,从技术上讲,您可以仅使用 HTML 制作整个网页。问题是,这很无聊。首先,它非常简单;这是因为 HTML 不包含格式信息。它有结构,但没有布局、颜色、字体、边框或任何其他与演示相关的信息;这就是 CSS3 的工作。其次,它完全是静态的;这是因为 HTML 不是用来描述动态内容或行为的。 HTML 是故意静态的。如果您想移动、更改或对用户交互做出反应,如果您想根据动态计算显示任何动态内容,那么您需要 JavaScript。

在此处了解有关 HTML 的更多信息:https://developer.mozilla.org/en-US/Learn/Getting_started_with_the_web/HTML_basics

CSS

CSS(层叠样式表)解决了格式问题。如果您正在编写一个静态页面,每次加载页面时只显示相同的内容,并且不需要任何用户交互,例如博客文章,那么您可能只需要 HTML 和 CSS。

这只是我在那里发布的那个 HTML 的一个小 CSS:

body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: #333;
  background-color: #ccc;
}
header, main, footer {
  margin: 1em auto;
  width: 60%;
  padding: 1em;
}
header {
  text-align: center;
}
header > h1 {
  font-size: 4em;
}
main {
  background-color: #fff;
}
main h1 {
  font-size: 2.5em;
  margin-bottom: 0;
}
main h2 {
  font-size: 1.5em;
  margin-top: 0;
}

还有一个链接:http://codepen.io/kenbellows/pen/wGqewE

看看简单的样式可以为文档做什么?

了解更多关于 CSS 的信息:https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started

JavaScript

JavaScript 为网页的所有动态部分提供动力4。这是您所谈论的图表中最重要的部分。与 HTML 和 CSS 不同,JavaScript 是一种真正的、适当的编程语言,图灵完备和一切,具有您期望从现代语言中获得的所有常见的分支、循环、函数和面向对象的结构。正因为如此,它比 HTML 或 CSS 复杂得多,掌握它所需的时间与掌握任何其他成熟的编程语言一样长。

在此处了解有关 JavaScript 的更多信息:https://developer.mozilla.org/en-US/Learn/Getting_started_with_the_web/JavaScript_basics

框架

与任何其他现代语言一样,JavaScript 具有大量 为它编写的库和框架,可帮助您处理编写 Web 应用程序中许多更杂乱、更模板化的部分。 Angular.js,你提到的那个,是目前特别流行的框架,但你应该知道它只是众多框架中的一个。不过,不要误会我的意思,这是一个很好的。但有一点需要牢记:如果您刚开始使用 JavaScript 作为一门语言,那么首先跳入框架可能不是最好的主意。一方面,您只是在增加启动和运行所需的知识量;另一方面,这一点非常重要,您可能应该在开始使用框架之前学习该语言本身,以避免依赖该框架。我认识太多的开发人员立即开始使用 Angular,然后一年后并没有完全理解为什么代码会这样,因为他们没有花时间去深入理解的语言基础。 Angular 很棒,我一直都在使用它,但是,再次帮自己一个忙,至少阅读我上面链接的关于 JavaScript 的 MDN 教程,并在开始使用 Angular 之前尝试编写几个玩具应用程序。

关于您的应用创意的想法

我实际上认为,就您的应用程序而言,您根本不需要服务器,如果您决定将其发布到 Web 或公司的 Intranet 或其他东西上,则可以托管它。我将在下面简要讨论服务器以回答您的问题,但实际上,如果您只需要获取一些用户数据并以图表的形式实时显示,您只需使用一些 JavaScript 即可。 Angular 肯定会有所帮助,因为您听起来像是想要实时更新图表。您应该研究一些基于 Angular 的图表/图形库,例如https://jtblin.github.io/angular-chart.js/

服务器

通常,服务器处理数据处理和存储。让我直接回答您的问题,而不是像我为客户所做的那样深入理论:

  • Tomcat 和 Apache - Tomcat 和 Apache HTTP Server 是 Web 服务器的两个选项。 (这些人符合我上面给出的“服务器”的第二个定义。)它们绝对是流行的选择,尽管 Apache 往往更流行于生产服务器,而 Tomcat 更流行于开发设置(根据我的经验;人们一直在争论这个问题)。

  • Spring - Spring,包括其所有各种模块和工具(SpringMVC、Spring Security、Spring Tool Suite 等),是一个 Java 框架,可帮助您编写服务器代码(服务器定义#1)。在我个人看来(物有所值),Spring 非常适合具有大量移动部件的大型复杂应用程序,但对于像您描述的那样简单的应用程序来说却是不必要的复杂。

  • MySQL - MySQL 与所有 SQL 风格一样,是一个数据库程序。它将数据存储在表中,并为您提供一个界面,以各种方便的方式查询该数据。数据库很棒,MySQL 是一种流行的选择,但重要的是要弄清楚您的项目是否需要数据库。您是否打算存储用户输入的数据以备后用?如果没有,请跳过数据库。

  • 其他语言 - Web 服务器代码可以用任何可以在命令行上运行的语言编写。如果您喜欢 Java 并且擅长它,请坚持使用 Java。如果你想冒险,不妨看看 Node.js,一个 JavaScript 服务器解决方案;无论如何,你正在学习 JavaScript,对吧?这完全取决于个人喜好以及什么可以为您完成工作。无需学习 PHP(绝对无需学习 C,天哪;请不要用 C 编写您的服务器代码),只需为像您这样的简单应用程序编写后端得到。听起来你已经为这个项目学到了很多东西;无需在您的盘子中添加更多内容。



1.(最好在完成上述所有操作后再次阅读此脚注。)一个越来越流行的值得注意的例外是在服务器端使用 @ 987654328@。如果您在客户端尝试 JavaScript 并坠入爱河(就像我们中的许多人一样),不妨试试 Node。

2.了解 HTML 工作原理后,请继续阅读 semantic markup

3. 更准确地说,HTML不应该包含任何此类信息,尽管它在技术上可以包含其中一些信息.这是 90 年代末/2000 年代初 CSS 之前的遗留物,当时大量的大小、字体和颜色信息都存储在标记中。请帮自己一个忙:将格式留给 CSS。

4. 除了一些更高级的 CSS 规则之外,您可以使用这些规则来获得非常基本的悬停效果和简单的动画。 JavaScript 对于任何涉及计算、迭代、逻辑,基本上任何不平凡的事情仍然是必需的。

【讨论】:

  • 这是一个很棒的答案。可能是矫枉过正,但有些人甚至可能会说这是矫枉过正。我希望在我刚开始的时候有人告诉我这一切。 +1
  • 谢谢!这几乎肯定是矫枉过正,但有时我刚开始就很难停下来,哈哈
  • 非常感谢您的帮助。我真的是。我正在尝试制作的应用程序基本上是用于向一群人展示的演示文稿。演示后不会使用该应用程序,但我认为它是学习 Web 开发的重要一步。我可以用什么来代替 Spring 来让事情变得更容易理解。我在 Spring Tool Suite 中玩耍并安装了一些插件。我必须打开/关闭 Tomcat 服务器,然后去 localhost 看看我做了什么。我会把它分成两个 cmets。
  • 您的数据来自哪里?它是在页面加载后由用户输入,还是存储在某个地方并在页面打开时立即加载?
  • 第 2 部分:当您在网页上查看它时,我安装的插件看起来像带有按钮和表格的基本 HTML。它基本上允许我在文本框中输入数据,然后将其存储在数据库中。当我打开终端并登录 MySQL 时,我可以看到我在 localhost 页面上输入的内容。它会自动输入到数据库中。现在我的问题是如何获取我输入的这些信息并从中制作图形或图表?如果您需要屏幕截图,请告诉我。再次感谢。
【解决方案2】:

您正在构建的通常称为“全栈”Web 应用程序。

Apache 与 Tomcat 一起用于在应用程序的前端和后端之间传输数据。具体来说,Tomcat 是您的 Java 代码以 Servlet 和 JSP(Java 服务器页面)形式存在的地方。 Java(如 PHP)只能在后端找到,用于将网页“粘合”在一起。后端负责与数据库 (MySQL) 连接和交谈,以存储数据以及将数据从一个地方移动到另一个地方。

您的前端是应用程序的所有 HTML、CSS 和 JavaScript。它向后端发送 HTTP 请求,以便向后端发送/接收数据。通常,您只需要在用户提交表单或需要加载更多信息(使用 AJAX)甚至只是一个全新的页面时引用后端。

AngularJS 是一种特殊的生物。它 JavaScript,所以它存在于前端并做前端类型的事情,但是(除了与数据库通信)它几乎取代了后端-以现代 Web 应用程序结束。 AngularJS 是一个用于创建“单页应用程序”的工具。这意味着当您通常从后端请求新页面时,您将请求修改当前页面。

【讨论】:

  • 我的目的不是要全面解释这些主题,而只是为您提供足够的信息,让您大致了解所有这些部分是如何组合在一起的。
  • 谢谢。我最终想做的是将数据添加到文本框中,然后在图形或绘图图表上实时可视化,如果您知道我的意思,则无需刷新页面。 AngularJS 有能力做到这一点吗?
  • 是的,这基本上就是它的设计目的。
猜你喜欢
  • 2011-02-21
  • 2017-03-12
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 2015-07-01
  • 1970-01-01
相关资源
最近更新 更多