这些问题其实会困扰很多新手程序猿,每一个人的想法也是不一样的。

        通常情况下,我们说的前端,都是指浏览器这一端,浏览器这一端,又在通常情况下,都是用JS来实现的,所以又会引申为,用JS写的大部分程序都是前端,包括App,小程序,H5等。而NodeJS出现之后,用NodeJS写的后端部分,也会被人归类为前端,为了区分之前的前端,就给他们起了一个名字,叫做“大前端”。

但,这种以语言为分界点去区分前后端,真的合理么?

在过去,我们是不分前后端的,无论是Java还是JS,全都是一个人来写。

倒底是什么原因让我们开始区分前后端了?

        第一个,是可以并行开发。前后端的进度互不影响,在过去,前后端不分离的情况下,前端的工作量相对较少,一个前端可以对四个后端。 可以理解为,前端花了一周时间写好了静态页面,只需要调几个Ajax接口,不需要路由,也不需要渲染,所以他可以把时间继续在下一个项目里。

        第二个,是成本问题。在过去,后端的成本还是比前端要高一些。同样的工作,如果能拆给两个人做,一个成本高一点,一个成本低一点,能接受。

        第三个,CSS太难了。JS还好,和后端语言在对技能的训练上相差不大,可是。。CSS是什么鬼?记住那么多的属性,和Hash算法有关系吗?

所以才分成了前后端,而Html+CSS+JS,都是在浏览器端执行,统一称之为前端

而Java,C,Python,PHP这些可以运行在服务器端的,统一称之为后端

        所以前后端的定义,不应该是以语言来定义,而是应该以它的运行环境,如果是在服务器端,就应该被称之为后端,代表着你看不见,摸不着。而如果运行在用户端,就应该被称之为前端,代表你是可以看得到的。

按照这种说法,前端和后端就分的很清楚了。