最近一段时间都在关注开源,开源也是现在的趋势。可以从 GitHub 上的项目看出。
在 GitHub 上看到很多 Start 的项目都是前端项目,而且利用前端可以做很多事情,比如 Electron 已经可以使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用了。利用前端的技术可以实现很多现实当中的需求,这在前几年来看是根本不可能的。
在未来,像这些前端的技术会不会也能做出很复杂的应用呢?
前后端的界限是否已经不是那么明显,后端是否还要再往后靠呢?
谢谢。
我并没有说JS会一统天下,在这里不谈语言好坏之分,语言之争一直都是没有结果的。也不讨论一门技术或者岗位挣不挣钱。我也不是说用一门语言就能做什么事。静下心来往深入讨论。
我们口中所说的趋势,其实也是现实数据支撑起来的。这里只探讨一门技术所应用的场景,在现实场景下,随着社会的发展,技术可能会发展成什么样?人的精力也是有限的,自己应该把精力如何分配?(谢谢不断纠正我提问的人,让我对想问的问题更加清晰)
有人指出,我对GitHub上的Star可能也是个人主观性太强,我觉得说的很对,我在找找相关新闻和资料再研究一下。有人能提供《前端项目的Star数据》就更好了🙏🏻
1
cyril4free 2018-11-27 09:53:51 +08:00
前端语言后端化,后端语言前端化,js 一统天下
|
2
abeford 2018-11-27 10:01:47 +08:00 4
等哪天前端能操作数据库了,我就回去种地
|
3
d1n910 2018-11-27 10:03:00 +08:00
emmmmmm,你想必不是做后端的吧?
|
4
lifeintools 2018-11-27 10:03:34 +08:00 1
任何能用 Js 实现的功能,最终都会用 Js 来完成
|
5
yoshiyuki 2018-11-27 10:03:39 +08:00
go 语言已经开始 wasm 化,做 web 3D 了,你了解过吗?
|
8
Mithrandir 2018-11-27 10:06:52 +08:00
你可能对后端有什么误解
|
9
jingyulong OP @d1n910 我在职业分叉路口,对这个有点疑问,想探讨一下,如果你有什么想法,可以说出来,大家一起讨论一下嘛
|
10
johnnyNg 2018-11-27 10:11:47 +08:00
我是前端,想做后端,因为前端太繁琐,知识点繁琐,开发也繁琐
|
11
jingyulong OP @Mithrandir 可能有误解,所以在这里问了,愿闻其详🙏
|
12
jingyulong OP @johnnyNg 个人理解技术的根本不会变,比如算法数据结构,每个技术出现总会有他要解决的问题,所以抓住本质,就能看到新技术其实也不算“新”。
|
13
jingyulong OP @cyril4free 我也是这么认为的😄
|
15
SakuraKuma 2018-11-27 10:20:35 +08:00
@abeford 你可以开始选地了:D
|
16
mayne95 2018-11-27 10:26:36 +08:00
"Google 和 Mozilla 开发 Writable Files API 让 Web 应用能编辑文件",前天的新闻。
|
17
ianva 2018-11-27 10:28:31 +08:00 1
挺正常的,12,13 年就有人提 nobackend 的架构,现在 Serverless 也越来越多了,特别是 BaaS 基本上交给端去做了,毕竟现在要面对多设备,多端开发,而 web 依然是在端里面开发效率和覆盖平台最广的,所以前端会做很多东西
|
18
feikeq 2018-11-27 10:29:34 +08:00
17 年我早就说过后端是弱化的过程,听过我的课的应该都有印象。后端以后都是大公司做的事,像什么大数据人工智能等,小公司只要做业务交互层就可以了。
|
19
Raymon111111 2018-11-27 10:30:53 +08:00
认为做后端就是用语言干活很明显从来没做过后端
|
20
FrailLove 2018-11-27 10:30:56 +08:00
java 占了这么大市场 该用 c c++ 的也还是轮不到 java
|
21
aalikes95 2018-11-27 10:32:10 +08:00
前端很吃香
|
22
jingyulong OP @Raymon111111 可以告知一下你的想法吗
|
23
Neojoke 2018-11-27 10:43:34 +08:00 4
😂
改变一下这种分类思想吧 后端往后靠?往哪靠啊~ 那搞操作系统的,算不算后端的?搞运维的,算不算搞后端的? 哪有什么前端吃后端的,前端搞数据库的? 前端发展这么快,是因为人类跟界面打交道的地方越来越多,才导致了所谓的前端这个工程范畴,越来越专业化,越来越分工细化 App 开发算前端吗?大型的 App 也有底层和界面开发之分,开发 App 界面的算前端开发吗? 服务器,有操作系统,有数据库,有网络相关的通讯设施,后段的不断发展,导致后端的相关工程人员,逐渐分工细化,出现 web 业务开发人员,操作系统运维人员,DBA 开发人员等等, 前端随着技术越来越复杂,也会出现分工非常明确的工种啊 比方说桌面 PC 的客户端开发,如果项目足够庞大,也会有 GUI 开发,客户端数据库开发,网络开发等等啊 职位上听起来好像跟后端重叠,但是还是有区别的,但没有谁吃掉谁的问题。 从业务划分上来讲,很多业务需求,可能不需要放在后端做,比方原来浏览器性能很弱、手机性能很弱,很多计算放到后端去做,现在手机性能好了、浏览器性能好了,单页面应用可以在本地渲染了,不需要服务端渲染了,手机性能很强了,很多功能可以做到手机里了,这也没有谁吃谁的问题。 如果您要说的是,前端开发的语言,现在能做服务器开发的事情,那就是另外一件事情了,那叫是否有一门语言以后能够统筹前后端的开发 但作为一个软件工程师来说,有一门语言,能够为你听过 GUI 开发的能力,能够为你提供 Http 等网络协议的 web 开发能力,又能够调用操作系统的功能和连接数据库,当然是一件很不错的事情。 |
24
shore507 2018-11-27 10:45:43 +08:00
你大妈已经不是你当初的大妈了,你大爷永远是你大爷,:)
|
25
codingKingKong 2018-11-27 10:50:20 +08:00 1
当你用 js 写起了数据存取, 资格认证, 数据分析, balabala, 恭喜你, 你就是一个后端人员了~ [:doge]保命
前后端的叫法是用来区分职责的嘛~ |
26
guolaopi 2018-11-27 10:51:52 +08:00
看以后有朝一日再出现例如像 Redis Mq Elastic 之类框架的时候,作者会不会出 js 的 sdk 吧
|
27
lovelybear 2018-11-27 10:59:20 +08:00
技术没有优劣之分,这是首先要明确的
不论前端与后端,也不论底层开发还是应用开发,其根本目的都是为了解决我们遇到的各种问题,换言之,技术的宗旨是用来解决问题的,不是用来装逼的,更不是用来赚钱的。 前端这几年比较火是不争的事实,但是没必要去跟风非得去学前端,首先扪心自问,自己真的喜欢前端吗?如果不喜欢的话,又何苦去强迫自己呢?当然,项目中如果需要前端的话,那自然另当别论。但是自己的编程之路应该有自己的想法,不宜跟风。一件事情如果你压根不喜欢做,那又何必浪费时间去做呢? 前端很火不假,但是后端显身手的场合绝对也很多。况且技术不分前后端,只要想学,都可以学,技多不压身。但是如果实在不喜欢前端,那就千万不要强迫自己学。 学技术,学编程,不仅仅是为了在工作中拿到一个不低的薪资,而且也是给你在人生中一个可以长期发展甚至终生发展的事业。特别是开源事业,值得你花费一生的时间去钻研。与其把自己的人生白白浪费在车子房子票子孩子,不如给自己找一个可以为之奋斗的目标,这样的人生才是有价值,有意义的! |
28
jingyulong OP @Neojoke 谢谢你的回复。赞同你说的行业精细化划分,没有谁吃掉谁的问题,也没有一门语言可以统一一切。
我的帖子描述不是太清楚。我想表达的观点主要是对于 Web 开发来讲。对于运维,服务器,数据库之类的暂时就不谈了。 因为我们没有那么多精力去学所有的东西,所以才要在行业的某个方向上来发展。目前的技术来讲还没到达那么复杂的地步,才有了网上“前端”和“后端”的分类。不可能谁吃掉谁,但是这个比例肯定是有很大变化的。 所以,我担忧的是未来职业发展,要抓住趋势才不会被淘汰。 |
29
keepeye 2018-11-27 11:09:43 +08:00
事情分前端后端,程序员不分
|
30
Macolor21 2018-11-27 11:12:55 +08:00 1
楼主的语气听起来有点怪怪的,你问的前端发展很快,后端怎么发展,会容易给人误解:前端很厉害了,可以 不用后端了。
但是我看帖子,你好像是咨询,后端程序员如何在前端功能往后台延伸的时候,保证自己的技术不会被前端技术淘汰。 那就很简单啊,提高自身的后端技术。你深入后端就知道,后端不只是连接数据库.....例如小程序有云开发啊,你可以试试复杂的业务。就有点吃力了,例如定时任务。 |
31
jingyulong OP @lovelybear 非常赞同,我也是这么想的。前几个星期读了 Linus 的自传《只是为了好玩》,深受启发,对开源有非常大的兴趣,对技术和职业也有了新的改观和想法。我个人也是想为自己的事业奋斗,不仅仅是钱。现在的兴趣很多,所以感觉精力没那么多,所以跟你们探讨下,再深入,看看最适合自己的是那个方向。谢谢你的回复,很有收获。
|
32
Neojoke 2018-11-27 11:25:03 +08:00 3
@jingyulong
如果是出于这个目的。 我想提出一个大家要思考的问题。 如果某门技术或某个趋势到来,人总是要去学习新的技能去满足未来发生的变动,那么是担心要学什么有价值,还是思考如何在发生变的时候,能够短时间内深入地专业地掌握新知识有价值,还是学习更耐用的知识更有价值。 这是个很耐人寻味的问题 对于程序员来讲 我们都知道,经常发生变动的代码需要抽象 也许,人的能力也是这样,经常要更新的知识和学习能力,也要抽象。 那么, 去开始思考怎么样提高自己的认知能力,去发现自己学习新知识的瓶颈,去锻炼自己学习一门新技术由浅入深的能力,这样能够做到,无论学习未来要发展的哪一个技术,学习能力的显著提高,是没有任何问题的。我们都是终生学习者。 去学习较为低层次的知识,以便在未来发生变动的时候,这类知识依然有效,且很少人能够掌握,这类知识往往都是构建上层知识的基础,除非推倒整体体系,否则一直会有价值。所谓的万变不离其宗的东西。 从这两方面,我们能得出什么呢? 学习能力的提高: 1. 学习一门编程语言,怎么样能够快速的由浅入深,掌握核心编程思想,怎么样总结出自己的一套学习套路,适用于大多数场景 2. 怎么样提升自己的编程能力,能够迅速的使用新语言新技术新框架,投入生成级别的应用,仿写?看源码?做开源项目贡献者?等等,要有一套写在纸面上的指导原则 3. 怎么样保持较新的技术视野,如何管理技术细节和技术方向,如何确定宏观的知识体系构建还有微观的技术能力锻炼? 耐用知识的学习: 1. 通讯技术 2. 操作系统 3. 数据库 4. 安全相关 5. 编程思想 6. 工程化系统化理论与思想,包括大型系统构建思想、分布式系统设计、devops 思想、rest 思想、GUI 组件化、GUI 布局系统等等 .... 注意,抽象你的学习能力、抽象你的知识,能够全面控制自己的能力和知识,能够熟练运用和实践自己的知识,并作出在客观世界中有价值的东西,才能抵消你的焦虑。要有目的性的, |
33
grewer 2018-11-27 11:58:39 +08:00
前端现在优势就是跨平台
|
34
trait 2018-11-27 12:02:38 +08:00 via iPhone 1
等前端能写出真正堪用的桌面应用再说吧,一个核心部件不过几 M 的应用偏要拖个几十 M 的尿袋再占用上 G 内存,真的辣鸡
|
35
Beme 2018-11-27 12:34:01 +08:00 via Android
JavaScript 的优点是可以写任何东西,缺点是你真的会用它写任何东西~
|
36
feverzsj 2018-11-27 12:37:34 +08:00
前端是现在最紧缺的职位,同样年资,工资是超过后端的
|
38
xxx749 2018-11-27 12:41:04 +08:00 via Android
js 天下第一!
|
40
jingyulong OP |
41
jiangruilove123 2018-11-27 13:58:37 +08:00 1
因为后台是做基础的,前台是做展示交互的,可以类比成重工业和轻工业,轻工业普遍赚的钱比重工业容易来的快,但是真正有技术含量有技术壁垒赚钱多的还是重工业,比如大飞机、高铁、高端医疗器械这类。当然你要是挖煤的或者炼钢的,自然是比不上造衬衫的前台了
|
42
Neojoke 2018-11-27 14:05:22 +08:00 2
@jingyulong 不要客气,我也处在这样的学习过程中,大家都一样,我只是把我微薄的,能想到的,跟大家分享。
我最开始遇见的困难就是不知道具体要做什么。其实要想心不慌,就着眼于你目前所在的技术栈,将你目前技术栈的耐用知识,核心思想,罗列在纸上,无论是你自己想出来的,还是看到别人的,列一个列表 然后再思考以前自己的学习方法,在具体的学习过程中,有哪些具体的困难,比方说,资料不好找,文档不好看,demo 不好写,项目不好练,开源不好维护,实际项目与学习内容脱节,把这些问题都写下来,面对这些问题,自己思考,得到答案,或者请教他人,最后总结出来一个自己的学习手册,每次再学新东西的时候,再总结,再回顾,慢慢把自己的学习手册丰富,同时学习能力就会显著提高,因为你正在一个,发现问题,留心问题,解决问题,验证反馈的良心循环中,当你跳出目前所陷入的焦虑处境,从更高纬度,去俯瞰你的生活、工作和学习,你将无比清晰的知道你接下来应该怎么做 |
44
bhaltair 2018-11-27 14:11:33 +08:00
all in js
|
45
pengfei 2018-11-27 14:25:01 +08:00 1
我是 java 程序员,后来学了 typescript,然后在 angular 中用 java 的思想写 ts 代码,感觉就很舒服
|
46
yamasa 2018-11-27 14:29:27 +08:00 1
做前端的先停掉从 OS,后端抄 pattern 过来旧瓶装新酒,大肆吆喝的行为再来担心后端的路子走不走得下去,谢谢。
|
47
YenvY 2018-11-27 14:55:02 +08:00 via iPad
在这种敌视前端的地方你是得不到论据的
|
49
publicvoid 2018-11-27 15:51:25 +08:00
实际上楼主是想问 js 会不会取代 java 成为第一语言?
|
50
ren2881971 2018-11-27 15:59:47 +08:00 1
复杂的业务离不开后端的支持!
|
51
abc635073826 2018-11-27 16:17:39 +08:00
后端走☁️啊,我们还在种地呢🚜
|
52
amumu666 2018-11-27 16:20:44 +08:00
我觉得你的问题有问题?
你想表达的是 js 已经可以写后端了,传统后端语言何去何从? 确实没明白是 前端 VS 后端 OR js VS others |
53
galikeoy 2018-11-27 16:24:08 +08:00
@lovelybear 老哥,你说的太对了,找个能为之奋斗一生的目标,这样的人生才有意义!
|
54
xuhaodong66 2018-11-27 16:32:21 +08:00
@abeford 小程序云开发可以在前端操作数据库
|
55
wolfie 2018-11-27 16:41:28 +08:00
前端迭代快,不过单轮广度还是觉得后端东西多。
|
56
yksoft1 2018-11-27 16:45:12 +08:00 1
Emscripten,直接把完整的桌面应用和游戏跨平台到浏览器中,可以抛弃 DOM,网络会被 Emscripten 直接变成 WebSocket,最终可以像写桌面应用和端游一样写前端。
|
57
petelin 2018-11-27 16:46:15 +08:00 1
前端发展得快,只是因为 js 一开始太垃圾了, 当然现在也很垃圾, 要不然也没那么多衍生变种, 后端的发展是前端的不知道多少倍. 云, 大数据, 分布式, 模型 /系统, 随便搞好一个就牛逼的不行了
|
58
sethverlo 2018-11-27 16:47:49 +08:00
咦?你们都看不到这个吗?
|
59
realkenshinji 2018-11-27 16:47:55 +08:00 via iPhone
Electron 不是都出来好几年了么
|
60
yksoft1 2018-11-27 16:49:41 +08:00
@amumu666 然而 Emscripten 真正强大起来后,你可以用 C/C++写前端,甚至根本不用管什么 DOM,像端游一样直接自己在 Canvas 上画界面,自己用标准 socket 写网络协议。
|
61
gongzili456 2018-11-27 16:53:53 +08:00 2
很多外行人喜欢使用前端,后端来描述程序员,我认为那是他们不懂这个群体。很多程序员自己也习惯使用前端或后端程序员来给自己定位,我认为这是给自己设限,是在自己的舒适区周围筑起高强。我认为只有解决问题的程序员,没有只解决一类问题的程序员。
|
62
pockry 2018-11-27 17:18:47 +08:00
说个题外话,我现在有个点很奇怪,JS 拓展领域很快,但为什么连个好用的爬虫框架都没有,目前说爬虫,最多的还是 Python Scrapy,但明明 JS 更适合做这事啊,解析 html、json 都是天生具备的,抓动态页面也必须要 phantomjs 或者 headless chrome 啊,有的还要 JS 模拟登陆啊,为啥到现在还干不过 Python 呢?
连爬虫都写不好,用 JS 做后端开发我觉得是想多了。 |
63
jsun 2018-11-27 17:47:39 +08:00 2
术业有专攻,一个人不可能精通所有领域,前后端还有各种框架,算法,数据库优化,底层渲染优化等等,随着系统的复杂性,工作细分一直都是一种趋势。
|
64
xnby 2018-11-27 17:54:32 +08:00
前端做后台的难度比后台撸前端代码难多了
|
65
passerbytiny 2018-11-27 18:03:47 +08:00 1
本段比较长,建议先看到底。
如果你要说是上层开发,那么前端吃掉后端是必然的,也是合理的。随着分工更细化,Java 和 C#,已经不再定位成全栈语言了,以后可以更专注于中层和底层的开发。 先说一下我理解的开发层次: 上层,主要是客户端、终端或者人机交互界面,另外也包括直观数据的增删改查、简单文件操作等,基本都是可以看见的(或者简单的说,就是非程序员——例如画图经理——也能告诉你要干什么的) 中层,数据建模、业务处理、工作流等等,基本都是不可见的,小规模程序基本用不到; 底层,语言、算法、通用(例如 Apache Common、Hibernate、Netty )工具等等,基本都是业务无关的,可见但是仅黑盒可见。 本着简化开发的目的,上层使用的技术应当是单一的,最好是所见即所得的。这一点以前的 PHP ( HTML+脚本)就很好,JavaEE 带了歪路,ASP.NET 跟着也歪进去了。(请注意,此时 PHP,以及只用来做增删改查的 JaveEE、ASP.NET ,都算作前端)现在只不过是 ES、TS、Node 等,替换掉了他们,并没有实质性的变革。JavaEE 原本的目的也是简单化——单一语言就跨平台的提供页面展示、数据模型、业务处理、底层工具等全栈功能,然而现实很骨感,大杂烩吃力不讨好,最终还是被抛弃了。 回到楼主说出来的现象和两个问题: star 多,并不代表总体高。例如:富士康员工比苹果多,并不表示富士康赚的比苹果多。而且本身你也没给出来数据,受主观观点的影响,star 多这个结论也不一定对。 前端的技术肯定能做出复杂的应用,然而能做不代表就要用他。技术选型的唯一标准是好不好做,“能不能”是必要条件,但永远也不会是首要条件。 前后端压根就没有过界限。以前 PHP、JSP、ASP 开发要从 HTML 到数据库通吃,以后上层开发也要从 JS 到数据库都通吃,现在只不过是个过渡阶段。 楼主眼里的“后端”,肯定是要消失了,要么转为上层开发,要么深造后转成中层开发。不过,最大的可能还是转成管理或者转行。 |
66
keventseng 2018-11-27 18:21:26 +08:00
总有专攻的地方~~~知识点越广越好,但是保命技能还是专攻吧。
|
67
tailf 2018-11-27 18:32:31 +08:00
前端才是没什么发展的岗位,后端能够随着公司业务不断发展,不停涨薪。前端的可替代性强。
|
68
SoulGem 2018-11-27 18:35:38 +08:00 via iPhone
前端圈真乱:doge
|
69
supuwoerc 2018-11-27 19:50:41 +08:00
不敢说话(前端
|
70
jingyulong OP @Neojoke 最近看的书是过去的好多倍,对于你说的这些话也深有感触。学习的确是一个不断发现问题,不断解决的过程。而且要有可以量化的目标,朝着目标努力的同时,不断的去改进。如果以前多看点书,或者早一点有人跟我讲这些话,其实可以少走很多弯路。唯一能做的就是把以后做的更好。共勉💪🏻
|
71
jingyulong OP @YenvY 我也是学术探讨,不想引起语言之争😂不管你说的再小心,也无法避免的,鄙视链摆在这里
|
72
jingyulong OP @sethverlo 这个星星是啥意思
|
73
azh7138m 2018-11-27 20:20:46 +08:00
@trait office online 虽然跑在 web 上面,但是比一众桌面应用强不少了,还有那个 Auto CAD 的 web 版本
|
74
sudoz 2018-11-27 20:27:25 +08:00
妄言 js 一统天下,前端取代后端的,说明对后端的了解还停留在 CURD 上
|
75
jingyulong OP @passerbytiny 老哥的开发层次很有见解。我想问的也是这个,而且很赞同你说的技术选型逻辑关系。每个语言肯定有它的使用场景,定位也不同。在某种程度上,是现实中的需求决定者技术的发展规模及应用。你说的结论也很中肯,我觉得我会选择往中下层走。谢谢你。
另:一般程序员所说的到一定年纪就有瓶颈,要转管理或者转行这个观点我是非常不赞同的。现在的人功利心太强,而少了静下心来做事的人。工作和事业还是有很大区别的。 |
76
karllynn 2018-11-27 20:30:32 +08:00
问这个问题就是没水平的一种表现
|
77
66beta 2018-11-27 20:31:23 +08:00 via Android
说出来可能不信,我司 Java 基本就是 CRUD
而且一般来说 Java 工资都比前端高,只恨当初站错队苦(TT) |
78
jingyulong OP @karllynn 不想引起争议,如果有什么建设性的意见,欢迎提出。
|
79
jingyulong OP @66beta 不讨论技术,讨论职业发展,没有永远的”站错队“,比 CRUD 做的更多,就有更多可能性。
|
80
66beta 2018-11-27 21:11:24 +08:00 via Android
@jingyulong 道理大家都懂,我只是说说真实的环境,夸张得说 99 %的码农就是流水线工人,项目架构工具智能化一点,可以淘汰掉一半人
不会 Java,但我有信心我去写不会比他们差,其实我也正在谋划把 API 层先接过来... |
81
jingyulong OP @66beta 从道理到实践还有很多路要走,光执行计划不够,还要有成果
|
82
trait 2018-11-27 21:58:22 +08:00
@azh7138m 额 web-cad 是用 C++ => wasm 写的,原有的 C++ codebase 通过 emscripten 直接转化为浏览器可识别的 binary,cad 团队不需要学习 js 类语言就能部署
|
83
wdlth 2018-11-27 22:06:12 +08:00
不如说前端越来越像后端了……
|
84
lsgjwkr 2018-11-28 04:16:23 +08:00 via Android
谁能告诉我怎么用 JavaScript 写数据库?
|
85
xuanbg 2018-11-28 08:19:06 +08:00
前端 /后端的分法不是很准确,客户端 /服务端这种分法更加准确一点。目前所谓前端的工作,只是客户端中的一小部分而已。侵入服务端?不存在的!与其惦记别人的领域,不如向老前辈桌面应用多学学套路,先把自己的事情整明白了再说别的。
|
87
abbatuu 2018-11-28 09:01:24 +08:00
不论如何发展 35 岁以后的你 前后端都有压力
要么管理 要么运维 要么转行 |
88
scalaer 2018-11-28 09:27:51 +08:00
学习分布式都还是用的 03 年的 mapredue,gfs 论文, 不知道你担心个啥
|
89
fy 2018-11-28 09:29:08 +08:00
后知后觉,2016 年就已经前端一统天下了。
而最早在 2012 就有人提供了无后端的通用 API 服务,最近几年的 GraphQL 了解一下? |
90
mingyun 2018-12-15 14:15:18 +08:00
前端是赶不上了
|
91
abeford 2019-10-08 22:35:46 +08:00
。我回来了
大家好我们公司前端真的可以操作数据库 现在老板在让我们集体整改(。 |