上一篇文章中让你安装的软件安装好了没?那些操作都尝试做了一遍没?没有的话,赶紧回头去再看一遍文章,动起手来吧。学编程,如果说有捷径的话,实操就是最好的捷径!
至此,我们在自己的电脑上为学习JS全栈开发安装好了开发环境,并在这一环境下,运行了两个你可能还看不太懂的前、后端代码。可能在你做这些操作的过程中,会有这样的疑问,为什么要分成这样的两种方式、两种代码?
如何来理解这个问题,我想归根结底,是要理解我们的代码是要在什么地方运行,要利用谁的计算资源。
前端(客户端)
前端,是一个软件和这个软件的用户最贴近的部分,它负责直接和用户产生交互,收集用户的指令,并反馈给用户结果。前端代码,总是运行在用户能直接控制的那个设备上,比如用户的手机、笔记本、台式机,或是智能手表等等。我们的前端代码,是要利用用户设备的计算能力和资源来做事情。
我们JS全栈开发者,会更加关注用户设备中的网页浏览器或是基于浏览器的中间件技术(如Electron, NW.js或Cordova等),因为我们的前端代码开发的过程,主要就是围绕这些浏览器,充分挖掘和利它们开放出来的能力,进行按需组合和编排,开发出符合我们功能需求的客户端来。
而这些网页浏览器,它们能运行的是使用HTML,JS,CSS这些技术所开发出来的程序。所以,了解这一前提条件,我们就更清楚我们在前端部分所要进行学习和掌握的内容了。
后端(服务器端)
前端的运行环境(即用户的设备),在计算资源方面,是存在欠缺的。比如低价低配置的电脑或手机,就和高价高配置的手机在性能方面会有很大差距。同一款软件,要让其在不同配置的设备上运行良好,表现尽量一致,有两个办法:
第一个方案,是针对不同的设备进行专门的优化。这种方式,实施起来难度大,需要耗费的时间精力多。而且电脑或手机的型号和版本那么多,要顾及大部分或全部,是一件非常困难的事情。
第二个方案,是尽量降低我们的前端代码对用户设备的要求。尽量减少在用户设备上进行复杂耗费资源的计算工作,以保证在性能比较差的设备上,也能正常的运行我们的前端代码。那这样一来,我们的软件的功能不就变弱了么?确实,如果只是这样的话,我们的软件功能就会变弱,这不是我们的初衷。所以,为了弥补在前端环境中用户设备计算能力的不足,我们会使用比用户设备拥有更强大计算能力的服务器端资源,来完成没有完成的工作。
服务器端的运行环境一般是建立在性能比较强、扩展性比较好的专门的服务器电脑,或者云主机之上的。它们在理论上来说,拥有无限的计算资源(哈哈,当然是在有钱的情况下)。
我们会把在前端中不适合、不擅长的工作,转移到服务器端程序中进行,让软件的整个表现更佳、最终用户的体验更好。
JS全栈开发者用来开发服务器端所使用的技术,主要也是以JS语言为主,我们就是要做到一种语言,前后端通吃的效果。当然,JS语言目前来说也不是万能的,由于一些固有的缺陷,在服务器端,也有它不擅长的场景。所以以后你还可以学一些其他的语言来与之互补(比如Java),但是这是后话,先忘记这些吧,JS对大多数人来说,已经是非常非常够用的了。
在服务器端,我们的JS不在浏览器中运行,而是在一个叫做Node.js的运行时环境中运行,其实跟浏览器一样,它也给我们开放了许多的能力,我们通过使用这些开放的能力,来命令服务器完成我们需要执行的任务。
前端和后端的异同
JS在前端和后端中的写法,几乎是完全一样的(即使有不一样,我们也有手段让它们变得都一样,哈哈)。
不同点是,由于前端的浏览器
和后端的Node.js
开放给我们的能力不同,就有了完全不同的功能接口(我们叫做API,以后会经常提到,记住这个词哦)。
但是万变不离其宗,不管是前端还是后端,我们都只是在使用JS语言去调用浏览器API
或是Node.js API
,组合出我们需要的功能而已。
理解清楚了这些概念点,将对你学习JS全栈开发有一个更加清醒的认识。
多动手,多思考,编程其实很容易。
欢迎关注一斤代码的系列课程《从编程小白到全栈开发》