全栈工程师修炼指南
熊燚(四火)
Oracle首席软件工程师
立即订阅
2286 人已学习
课程目录
已更新 43 讲 / 共 40 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 从成长角度看,为什么你应该成为全栈工程师?
免费
学习路径 | 怎样成为一名优秀的全栈工程师?
导读 | 如何学习这个专栏?
第一章 网络协议和 Web 接口 (6讲)
01 | 网络互联的昨天、今天和明天:HTTP 协议的演化
02 | 为HTTP穿上盔甲:HTTPS
03 | 换个角度解决问题:服务端推送技术
04 | 工整与自由的风格之争:SOAP和REST
05 | 权衡的艺术:漫谈Web API的设计
06 | 特别放送:北美大厂如何招聘全栈工程师?
第二章 欢迎来到 MVC 的世界 (7讲)
07 | 解耦是永恒的主题:MVC框架的发展
08 | MVC架构解析:模型(Model)篇
09 | MVC架构解析:视图(View)篇
10 | MVC架构解析:控制器(Controller)篇
11 | 剑走偏锋:面向切面编程
12 | 唯有套路得人心:谈谈Java EE的那些模式
13 | 特别放送:选择比努力更重要
第三章 从后端到前端 (7讲)
14 | 别有洞天:从后端到前端
15 | 重剑无锋,大巧不工:JavaScript面向对象
16 | 百花齐放,百家争鸣:前端MVC框架
17 | 不一样的体验:交互设计和页面布局
18 | 千言万语不及一幅画:谈谈数据可视化
19 | 打开潘多拉盒子:JavaScript异步编程
20 | 特别放送:全栈团队的角色构成
第四章 数据持久化 (7讲)
21 | 赫赫有名的双刃剑:缓存(上)
22 | 赫赫有名的双刃剑:缓存(下)
23 | 知其然,知其所以然:数据的持久化和一致性
24 | 尺有所短,寸有所长:CAP和数据存储技术选择
25 | 设计数据持久层(上):理论分析
26 | 设计数据持久层(下):案例介绍
27 | 特别放送:聊一聊代码审查
第五章 寻找最佳实践 (6讲)
28 | Ops三部曲之一:配置管理
29 | Ops三部曲之二:集群部署
30 | Ops三部曲之三:测试和发布
31 | 防人之心不可无:网站安全问题窥视
32 | 和搜索引擎的对话:SEO的原理和基础
33 | 特别放送:聊一聊程序员学英语
第六章 专题 (7讲)
34 | 网站性能优化(上)
35 | 网站性能优化(下)
36 | 全栈开发中的算法(上)
37 | 全栈开发中的算法(下)
38 | 分页的那些事儿
39 | XML、JSON、YAML比较
40 | 全栈衍化:让全栈意味着更多
全栈工程师修炼指南
登录|注册

14 | 别有洞天:从后端到前端

四火 2019-10-11
你好,我是四火。
前两章我们分别介绍了网络协议和 Web 接口的知识,以及网站等应用的 MVC 架构和其衍生发展而来的各种设计模式。以上希望你已经充分消化吸收了,今天我们将迈入第三大基于 Web 的全栈技能领域——前端。

为什么要学习前端技术?

“前端”简简单单两个字,背后却有着纷繁的故事和复杂的情感。这也促使我产生了想多聊一聊这个话题的想法,一般的技术在“为什么要学”的方面我往往简言述之,但对于前端技术我想为此破例。
前端一直以来是一个颇具争议的领域,有人极其喜爱,有人避而远之,和多数“天下太平”的技术相比,这确实有些令人费解,但我认为这其中的原因至少包括这样两点。
第一,某些技术人员或管理者单项技术进步,但思想却依然陈旧迂腐,停留在“前端就是改改页面”这样老旧的思维程度,认为前端没有技术含量且无法创造显著价值。
第二,相对于软件领域的通用技术,前端极低的入门门槛,导致号称“懂前端”的工程师技术水准严重参差不齐,这反向影响了整个技术群体的形象。
如果你志在学习全栈工程,前端就自然是你无法避开,且还需努力驾驭的领域。但即便你的长期目标不在此,也应该学习前端技术,因为它能给你带来的好处是多方面,且是别的技术所不可替代的。具体包括这样几个方面。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《全栈工程师修炼指南》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(8)

  • CC
    Javascript 是单线程+事件驱动,单线程就是主线程。Javscript 必须让主线程一直处于运行当中,才能实现事件驱动。它无法通过简单的 sleep 主线程来达到 sleep 后继续执行某件事目的。

    以上是我的理解,不确定是否有误。

    作者回复: 👍

    2019-10-11
    3
  • 丁丁历险记
    一个讨厌js 的后端路过。。。
    2019-10-21
  • pyhhou
    1. 我现阶段做的东西比较杂,写后端,也写点前端,前后端都用 JavaScript 来写。感觉自己对前端技术的认知还只停留在表面,仅仅可以使用一些框架,照着 doc 来实现指定的页面而已,前端的基础并不牢固,很希望跟着老师学习前端中的思想层面的东西,特别是 DOM 树和页面的具体关联,HTML、CSS、JS 这三驾马车如何相互关联,进行信息传递和页面的展示的,以及前端上一些类似后端 MVC 一类的经典设计模式等等,很是期待这一章的内容。

    2. 这是一个很好的问题,这个问题说到了 JavaScript 和传统语言的区别。JavaScript 设计的初衷仅仅是解决页面上的事件的驱动和响应,这里举个例子,假设在一个页面上有输入框、下拉框、勾选框、取消按钮,用户可以在页面上任意操控这 4 个东西,这 4 个东西之间并不存在任何的先后顺序和逻辑关系,任何一个事件都可以发生在其他事件之前,这取决于用户的实际操作,如果把这四个组件的实现放在一起,你可以看到对应的代码并不是顺序执行的,我们想要看到的是一个组件的执行不会影响到其他组件,这在传统的语言中可以用多线程来做到,但是文章中也提到了 JavaScript 是单线程的,如果使用 sleep,那么唯一的线程会被阻塞,一个组件的执行会影响到其他组件执行,因此不可取。而消息队列的方式,让我们把程序的最小运行单元看成是一个个的事件,程序的运行顺序是和事件的发生顺序相关联,而不是我们传统观念中认为的 “代码行顺序”。

    作者回复: 第二点说得非常好,👍

    2019-10-15
    1
  • 不记年
    思考题的第二个, 我觉得应该是因为js是单线程的,如果设置sleep的话,就是阻塞唯一的线程,而又没有一个监视线程去pull。而且按照事件驱动编程的逻辑,如果想sleep当前正常执行的事件的话,应该也使用事件回调的方式,这样就只阻塞事件而不是线程。

    作者回复: 👍

    2019-10-12
  • 不记年
    我所理解的js 执行过程分为两部分,第一部分是做一些初始化的工作, 初始化工作包括初始化一些参数之类的,以及告知浏览器事件以及触发的逻辑。第二部分是事件循环,不断地往事件队列中抓取事件执行。在这整个过程中。
    2019-10-12
  • joker
    他是执行哪段代码出的underfined

    作者回复: console.log("4");

    2019-10-11
    1
  • tt
    我一直从事后端开发,但是经过了几个Web项目后,对前端的认识发生了转变,真的就像老师文中所说的那样。这个感触在直接面向用户时尤其明显,感觉连原有的部门开发流程都不适应了。

    至于为什么没有sleep,是不是因为sleep里指定的时间只对事件分发线程有效,而真正被JavaScript执行线程从事件对列中取出来执行时,时间已经非常不准确了。

    作者回复: 第二问不太正确,你可以联系文中介绍的 event loop 再想想。

    2019-10-11
  • 許敲敲
    Web developer ,工作中就是开发公司的组件库,客户报defect 去fix 。想说前端水好深, WebGL ,tensorflow.js ,webassembly 这些技术都好强悍
    2019-10-11
收起评论
8
返回
顶部