方应杭知乎回答摘录

目的

看高手是怎么做的,然后照着做就好了

文章转载已经获得作者本人授权
看作者原文更好:
- 方应杭的简书
- 方应杭的知乎内容





### 方应杭的简书文章重点
方应杭的简书
- 找工作的方法论是什么?
联系真人
由小到大,先易后难
学好基础知识,因为工作中会用到
展现你最好的一面
这是一场马拉松,不是百米赛跑
- 所以,请作为前端的你在有时间的时候,多了解几门其他语言。
- 推荐了一本书《代码大全》
- 框架挑选
不谈场景论好坏都是耍流氓。
你要做的应该是该用 Vue 的时候用 Vue,该用 React 的时候用 React,该用 jQuery 的时候用 jQuery。
JSX 适合逻辑多的场景,模板适合逻辑少的场景。


- Declarative Programming 声明式编程
- Imperative programming 命令式编程
你让我干啥,我就干啥。
- 解耦
解耦就是不相关的东西不要放在一起。
耦合性
耦合性低不一定就是好的,反例之一就是 dependency hell
- 英文很重要!
要看规范文档!
不求甚解要不得!

- 对待新技术的态度,我的态度一项都是,管它什么技术,先学会皮毛,再了解原理,最后对其进行吐槽(批判)。

方应杭的知乎内容重点

方应杭的知乎内容

  • 如何掌握所有的程序语言
    学习一门新语言,了解语言特性很重要
    http://www.yinwang.org/blog-cn/2017/07/06/master-pl
  • WebStorm 功能强大,有你想要的任何功能。占内存我就升把内存升到 16G,启动慢我就上 SSD。
  • node的创造者去搞机器学习去了
  • 如何知道自己的价格?应聘,然后不去,直到你遇到最高出价者。
  • PostCSS 就是 CSS 界的 Babel。
  • 怎样扎实自己的 JavaScript 基础?

    这个世界上所有的程序员都会一点 JS,但是只有前端程序员是「只」会 JS。不要做只会 JS 的程序员
    如果你真的想要「扎实」,你就应该把程序员该学的东西都了解一下建议先学一门底层一点的语言,比如
    C 语言;然后学习一门面向对象语言,
    比如 C# 或者 Java;再学一门函数式语言,
    比如 F# 或者 Lisp。再学一门基于原型的语言,
    比如 io 或者 Self。
    再学一个脚本,比如 PHP。
    学 C 是为了了解内存、编译以及烫烫烫烫这个梗。
    学 Java、C# 是为了了解 OOP 、设计模式以及强类型。
    学 io、Self 是为了了解原型。
    学 F#、List 是为了了解函数式。
    学 PHP 是为了了解脚本以及弱类型。
    因为 JS 就是一门混合了 C、Java、函数式和原型的脚本语言。

    作者:方应杭
    链接:https://www.zhihu.com/question/61718461/answer/190357029
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 你经常逛知乎就会知道,学到一些「知识」是会让你有「快感」的。人的大脑天生就喜欢学习,而且可以领会学习的乐趣。

  • 如何考察候选人的react技术水平?
    看他有没有做过 React 项目(没有项目就拜拜)
    深入项目提问,问到他回答不上来为止。
    然后你就知道他对 React 的了解程度了

  • 什么时候选择跳槽最合适?

    有满意的下家的时候
  • 如何才能跨过前端的高级级别,譬如腾讯的t3-1,或者是阿里的p7。平时的前端知识并不足够跨过这个门槛?
    作者:方应杭
    链接:https://www.zhihu.com/question/59747367/answer/168721936
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

不一样在哪里?两个地方

第一点在方法论上。他们做事的方法论(也叫套路)在我看来已经十分完备而且高效了,他们知道这个团队做一个事情是为了什么远期目标是什么近期目标是什么远期目标和近期目标如何衔接团队的目标与部门的部门如何衔接应该让谁去达成目标(不是说谁闲就让谁做)这些东西跟一个人平时积累的经验、思维方法和对问题的洞见能力还有关系,不是说你狂看狂钻研就能达到的。你可能还不知道:有些人天生就是比另一些人更能看清问题的本质。如果你没有类似的远见和洞见,可能做不到下面这一点。

第二点在于说服人。大家在职场,虽然在同一个办公室,但不代表每个人的目标是一样的。而 P8 需要团结大家、统一目标。传统行业统一目标很简单,喊口号、定指标、赏罚分明。但是当你面对的是程序员的时候,这些套路就没什么用了。只有你的洞见是对的,他才会服你,才会超出你的预期。请问,你怎么做到这一点?那就是你每次都是对的(参考乔布斯)。如果你定的方向总是能让大家获益,那么大家自然都服你。你跟之昊聊天你就会发现,他会把你想的东西理清楚(你可能自己都没弄清楚),然后把你没想到的也说出来。这种特质我一直认为是天生的,跟性格有很大关系。

上面是自身方面的原因。还有一些外部原因。

一、方向很重要一般在大公司升级快的人都有一个相同的经历,那就是直接上司非常关照你。至于他为什么关照你,有可能是你职业技能强,但也有可能并不是。说一个常见的原因,那就是你对业绩目标的理解非常到位(有点揣测圣意的意思),于是做了「方向很对」的事情。大家能力差不多,为什么其中有一个非常被上司推荐?因为这一个人有示范作用,他能告诉其他人,应该往什么方向发展。比如这个人特别喜欢分享,比如这个人工作之余倒腾东西然后应用到工作者,再比如这个人推广团队开源项目作出了成绩,再比如他跳出常规解决了一直以来的问题。于是上司为了告诉大家公司鼓励什么样的人,自然会把他提拔起来。

二、上司很重要这跟上司的性格、经历有关。如果他跟你很合拍,你升职自然事半功倍。大家生活中都遇到过吧,你和某个同事就是和聊得来,跟另一个就是聊不来。虽然作为上司应该避免这种偏心的情况,但是这种情况是人之常情,很难完全避免的。好了,你能力到了,方向也对,上司也跟你很有默契,「地利」「人和」凑齐了,就能晋升了吗?不一定……

三、天时很重要在一个稳定运行的环境中,一般不会有某个人晋升特别快或特别慢。你可以看到之昊在腾讯的经历,一般都是大环境的变化导致你的变化,如果你的准备足够充分,那么你就会得到好变化;否则可能得到坏变化。阿里 B2B 接近一百多个前端,P8 也没多少个吧(具体数目我哪知道~)。所以这件事情,可能不是你努力,就能达到的。

说句不好听的,可能就算你努力了,大部分时候都会失败。世界上很多事情,都不是靠努力达到的。我的建议短答案:开心就好。长答案:由于晋升的因素里,个人的努力占比可能连50%都不到,所以其实你没必要盯着晋升不放。就像很多的诺贝尔奖的人都没想过要得诺贝尔奖一样。你应该了解自己的强项,强化自己的强项。就比如我吧,我的个人特质决定我不适合做管理,但是我适合讲课啊……我从大学到腾讯到阿里基本讲课就没中断过。不过靠讲课晋升估计够呛。另外我吐槽和喷人是强项,因为我其实是一个说话很刻薄的人。刻薄的同义词是什么知道么——犀利。然后我就在知乎强化我的强项。现在知乎的前端(以及想学前端的人)基本想到「靠谱的前端培训」都会联想到饥人谷吧(就算你不喜欢饥人谷,你也会第一个想到饥人谷)。说实话目前我培训赚到的钱并没有在阿里的多,但是千金难买我乐意啊。我不是劝你也辞职做自己的事业,而是搞清楚自己的强项和兴趣点,然后深入进去,把它做好。至于公司认不认可,那就看缘分了。人生最重要的就是开心嘛,你说是不是?引用 Linus 大神的一句话:Just for fun!

  • 你错就错在用「前端」两个字把自己给限定死了。
  • 我面试一般考虑下面几点:

    让我每天跟这个人合作,我愿意不意愿。
    把事情交给他,我放不放心。
    至于这个人对 TS 的看法,与我的观点不一样,又有什么关系呢?

  • 各位觉得主流编程语言中哪个编程语言最容易学习?
    利益相关:使用过 JS、Ruby、Python、C#、PHP、Groovy、Bash Script,入门学的是 C 语言。比较下来,觉得从 C 语言入门性价比最高。语法又少,又能了解数据类型、算法、数据结构、内存,同时由于没有面向对象教条的束缚,所以更能直白地理解机器的运行逻辑。

  • 一个函数,不要超过五行。

  • 个人 Github 上面有哪些项目会赢得 HR 青睐?

    具体可参考我的笨办法造轮子系列,每个轮子都能给你简历加分。
  • 如何评价 Airbnb 发布的 React Sketch.app 工具?
    这种东西要求使用者即会代码又会设计。
    终究小众。

  • 当我们学一门编程语言的时候,实际上是在学习什么?

    1. 学习语法

    2. 学习这门语言能做什么

    3. 学习这门语言不能做什么

    4. 使用这门语言做你想做的东西

  • 初级前端工作怎么这么难找呢?大牛们的第一份前端工作都是怎么找到的?

    把书扔了,以做真实的项目为主吧。

    没人指导的话就仿站,仿个饿了么,仿个网易云音乐,做到以假乱真也是挺腻害的。

    编程这一行,真的是一分耕耘一分收获(除了智商超群的人)

  • 只要代码经了你的手,你就应该把代码变得更「不烂」一点。
  • 计算机科班出身的优势是什么?
    我感觉优势就是:你被强迫学习一些枯燥而且看起来无用的东西,这些东西你在离开校园之后很难再捡起来学,但是这些看起来无用的东西实在是很有用的东西。比如我以前搞不懂我一个写代码的为什么要学习电路理论、线性代数、离散数学、面向对象程序设计(纯理论,不写代码的那种)、操作系统原理、编译原理、计算机网络、计算机组成原理(现在就记得一个加法器)、软件需求文档写作、计算机专业英语……现在我知道了……非科班的,几个有耐心学这些?时间成本太大了。而我,已经被强制要求学习了……

    作者:方应杭
    链接:https://www.zhihu.com/question/57746751/answer/155392312
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 如何评价微博吐槽『面试了一个前端,成长靠业务驱动、自身积累为0……』以及『风气坏了』的评论?
    通过这些经历我想跟前端新人说这么几个事情:

    1. 用 side project 学习如果你对加班不满,那么不应该只是抱怨,而是努力提升自己的开发效率,减少加班。用多余出来的时间学习更多的东西、做 side project。如果公司依然没有节操,给你更多的工作,然后没有付出相应的报酬(加薪),那么你已经有资本跳槽了。如果你只是等着公司业务来提升你的技能,那基本等于自我放弃了。你看我在腾讯用的是 jQuery,在阿里用的还是 jQuery,我用你这种态度能提升、能学会其他东西吗?不要陷入「加班-抱怨-加班」的恶性循环,应该是「加班-提升-少加班-多提升」的良性循环。
    2. 不要指望公司,要让公司指望你公司给你钱就是让你出力的,不是请你来学习新技术的。有几个公司是经常用新技术的?你指望公司教你真的不如靠自己。你应该给公司带来好处,然后公司会跟你更多报酬和个人时间。当然大公司的导师制度真的很有用,如果有一个比你早入行三五年的人带你,那么你学习起来真的会快很多。这种事情,可遇不可求。

    作者:方应杭
    链接:https://www.zhihu.com/question/55861090/answer/155389960
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 前端工程师如何完善自己的知识体系?
    教别人。

    备课的过程中你就会知道自己的知识盲点。

    然后完善自己的知识体系。如此反复,周而复始。

    我讲课有一个特点,就是同样的知识点,我每次讲得都不一样。下一次讲得比上一次好。

    这是因为我也在学习。

  • 2017年web前端开发岗位,年薪30W以上占比是多少?
    我工作第二年结束时大概就是年薪30万,税前。(但是借钱付了首付之后工资基本只够还钱还贷了,所以依然是月光族)我按照这几年的经历来回答下吧。
    一 技能期望基本就是要求能独当一面,该技术选型就能选个合适的,遇到难题能给出解决方案,遇到不靠谱的产品经理能引导,能自己决定的事情就不要麻烦上级。一句话概括就是靠谱的执行者。这种人想升职加薪就要往“带节奏的人”发展。
    流动性互联网企业的流动性一直比较高,但是随着工作年限的上升,流动性是降低的。在本公司混的好的为何要流动呢,混的不好的又怎么流的动呢?没有那么多怀才不遇的人的。一般流动都是因为自己成长了但是公司不成长。整体比例真不好说。而且这个比例也没有什么参考意义。
    三 面试录用比我相信没有哪个公司会在意这个比例。一般面试都是在一段时间内面试的人越多越好,遇到合适的就会要。不合适的人录用率是0,合适就是接近百分之百了。而且越是高级职位,找到合适的就越难。

    作者:方应杭
    链接:https://www.zhihu.com/question/56745551/answer/155347165
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 新人自学最忌讳在一些无关痛痒的地方耗时间。

    1. 先快速过一遍基本教程

    2. 然后做一个一个的小 Demo

    3. 最后才是看自己哪些地方没弄懂,进阶一下

自学,要讲究性价比。
  • vuejs 开发中, 有必要把button, input封装成组件嘛?
    优化原则:

    1. 重复代码出现第三次时再封装

    2. 有特殊的逻辑就封装一下

  • 有哪些新手程序员不知道的小技巧?

    1. 百度坑你没商量
    2. 程序员的工作中有 50%。的时间不是写代码
    3. 学会调试比什么都重要,比使用语言本身还重要
    4. 加班大部分原因是咎由自取,真的
  • 为什么node出现之后,各种前端构建工具和手段才如雨后春笋般层出不穷?
    作者:方应杭
    链接:https://www.zhihu.com/question/35427358/answer/153840550
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    前端:帮我写个脚本,把 js 文件合并成一个文件
    后端:没空。你自己用 bash 写一个吧,遍历然后 cat 一下就行了,用 makefile 也行啊
    前端心想,妈的听不懂,我只会 JS。Node.js 一出,前端终于可以用 JS 合并文件了。看出来了吗?一部分前端除了 JS 啥都不会,不用 Node.js 用啥?(少部分前端早就用 PHP、ruby、Java 做工程化了)工程化需求一直存在,只是 Node.js 之前前端写不出工具而已。

    JS 所谓的工程化,在初期基本就是拼字符串、算个MD5、lint 一下,后来有了 AST 分析,直到 TypeScript 出来,才像那么回事。所以说还是微软的工程师牛逼。这些工程化,跟Java、C++的工程化比起来,弱爆了好吗?别整得好像很高大上似的,工程化是软件工程的必备项好吗?以前没条件写,现在有条件了就补上。别老玩概念。你觉得为什么 gruntfule gulpfile 要叫做 xxxfile,明显就是从 makefile 抄过来的好吗,当然 makefile 抄谁我就不知道了,我水平太差。

    你觉得为什么后来前端又说工程化应该用 npm scripts 作为启动脚本。因为终于搞清楚命令行的工作原理了。你说现在的前端为什么言必称函数式?几年前的面向对象怎么不提了?还不是因为终于多看了两本书了,知道面向对象只是面向对象而已,不是圣经。函数式才是圣经嘛。你觉得前端新技术出现得那么快是为什么?因为旧的没写好就发布了,用一用发现还是不好用,得再写一个新的呗。再者说,那些前端东西真的「新」吗?不就是抄 WPF、coffeescript、Python、C# 和 Rails 吗?当然抄并没有什么错,现在新出来的语言都是集大家之所长,但是你因此觉得「壮哉我JS」那就是你中二了。

    前端预编译之风居然是从 Ruby 社区刮起来的,知道前端社区有多弱了吗?Node.js 半边天 TJ 也是从 Ruby 社区过来的,知道前端有多尴尬了吗?人家一个人抵得上整个前端社区,科科,前端好意思吗?TJ 在前端潇洒了一圈觉得高处不胜寒跑去跟 golang 社区交流,前端社区依然没有发现自己的窘境。

    还有去年前年炒的同构JS。想得很美,做起来知道不容易了吗?外国的前端社区我不是很熟我可能说错了,但是国内的前端社区我可熟了。大家比着造轮子打知名度,今天这个会议明天那个会议,一片繁华。但我作为一个前端从业者咋这么心虚呢?我们国内前端社区有那么成果吗?需要开这么多会来歌颂?后端语言的社区为什么说前端浮躁啊,你说呢?还有比前端社区更浮躁的社区吗?这么多年了,前端的组件化才搞出点眉目,好意思说工程化?哪个语言像 JS 一样搞个组件化这么难的?(可能有,但是不要在意这些细节,重要的是气势)。为什么难?很大因素就是 JS 没设计好。

    但是没设计好你就等设计好了再用好嘛,非要整 commonJS、AMD,还来了个 CMD,搞得最终不得不搞一个 UMD。而且明明知道是临时方案,还把自己整得跟标准似的。最后还是得搬标准出来救命。怎么前端还是没从二十年前的浏览器大战中吸取教训似的?幸好有 es modules啊,没有 es modules的话我真的不好意思承认 JS 是现代语言。有人肯定会说我们不搞这些事,标准怎么会引入 es modules 呢,这些都是必要的。我并不否定这些东西作为临时方案的意义,但是你们该消停了好吗?

    能把一个东西玩好了再去玩下一个吗?别见一个爱一个。那不叫博爱,那叫没见识。不是现在的前端太难,而是以前的前端太没技术含量。你一定发现我跑题了,我也发现了,但是一跑就刹不住了。利益相关:我是一名前端程序员。本科学的是软件工程。

  • 难道不是「做出好产品」&「升职加薪」吗?

    尽特么推翻以前的框架和工具有价值吗?

    给用户带来价值,给自己带来价值,才是重点。
  • 最近看脉脉上说“前端”就业困难,大量的培训机构出来的学员造就了前端市场供大于求?
    作者:方应杭
    链接:https://www.zhihu.com/question/56917705/answer/150967479
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    我也是做前端培训的,你们这样呼唤我,会不会给人感觉是我雇的水军呀?我为了避嫌,回答一句「无可奉告」,但是你们也不高兴,我怎么办?我说多了,你们说我给饥人谷打广告,我又怎么办?我还是说一些吧。大量的培训机构出来的学员造就了前端市场供大于求从数量上来说,是的,供大于求。从质量上来说,不是,供给的质量完全没法满足企业需求。一些不负责任的机构没有让学员真正用心于技术,却在简历上做起了手脚以某内为代表的一大批培训机构(这种培训机构的特点是线下开班、价格高、销售人员众多)确实是这样,

    究其原因:他们利用信息不对称,忽悠学生,把一些明显学不了编程的人也拉进来,认钱不认人。学生不懂技术,喜欢跟风,好忽悠。贷款误终生。你一个学生贷款了,学得再烂也得找个工作才能还贷款吧,所以只能硬着头皮造假简历骗个工作先了。所谓上贼船容易下贼船难。讲师水平低下。

    饥人谷这两年来,找到的优秀而又受学员喜爱的老师,不到六个。我们招讲师的标准,那是比 BAT 的招聘标准还高。我们都知道讲课过程中是存在「损耗」的,我讲 100%,你听懂 60% 就不错了,所以我们培训出来的学员,是符合用人单位的要求的。

    而某内呢,他们的讲师有参与过大型项目吗、有实战经验吗、实战经验是最近一年内的吗?肯定不是。他们的讲师大部分就是 HTML 标签、CSS属性一个一个地照本宣科。用「包就业」来过滤智商较高的人,留下的自然是智商较差的……包就业你妹啊,你以为是计划经济啊?这也让一些真正具备相应年限工作的前端工作者的工作带来了困扰,一些真正具备两年或者三年以上的前端工作者工作不好找甚至连面试的机会都没有。简历数量多了,每个人被查看的机会自然少了。不过这一部分有经验的前端没有面试机会也是有自身原因的。前端发展这么快,有些「经验」会变成「没用的经验」。大浪淘沙,不进则退。看到这么多前端方面的负面消息,我也觉得有些绝望,我一个初级的前端,工作经验不满一年,原本还想在前端方面继续努力 可是看到这些却深感无力与悲伤!这是历史的必然,「前端」这个职位自从 2010 年左右在中国出现,一直都处于程序员鄙视链中的底层,为何会这样?

    因为没有技术含量呀,会个 HTML、CSS 就敢自称「前端」的人多了去了。现在呢,前端终于有点儿技术含量了,你现在要做前端至少要知道什么是模块化、工程化、部署和持续集成等概念。虽然我也觉得前端很乱,但是方向上肯定是对的,JS 越来越不像一个「玩具语言」,而是一门现代化语言了。

    所以不管有没有这些培训生,这批有「经验」的前端都有可能找不到工作。说实话,这批有「经验」前端可能也是需要大神来培训一下的。没有饱和培训出来的前端,如果没有自学能力,会在半年内被快速发展的前端技术淘汰,因为前端新技术出现的速度远远大于这些人的自学能力。即使现在饱和了,半年后这批人就得退出前端圈咯。但现在即使是前端的中低端市场,也是招不到人。为啥?因为这些培训生和自学者(没错,包括自学前端的人)学得东西大多脱离实际:要么太浮于表面,要么就是过时的知识。企业喜欢怎样的培训,不就是把工作中要用到的东西提前教好吗?

    如何鉴别你想淘汰不靠谱的面试者很简单,就问那些老生常谈,但是培训机构又不会教、教不会的东西就好啦。比如什么是字符编码Unicode 和 UTF-8 的区别HTTP 请求长什么样子AJAX 是啥Promise 是啥保证过滤掉这些假简历。

说起来,这么面试官连假简历都看不出来,是不是自身知识也要补充一下呢?真正有基础、有经验的前端,根本不虚,就喜欢跟面试官刚正面。为什么饥人谷不坑讲师水平强啦,随时退款啦,不鼓励向银行贷款啦,知识贴近用人单位需求啦……说实话,我们现在不需要打广告,学生比讲师多多了,我们在招讲师,讲师太少,而且我们又是小班教学,每年能培训的名额有限,打广告吸引太多人来报名反而忙不过来。如果你自觉前端知识扎实,有丰富的大中型项目经验、口才还行,那么请联系我。今年我们会着重推出 Vue / React / Node.js 方面的课程,因为用人单位需要嘛。但是,这个课不好讲,我直接上来就讲 Vue 保证大部分学员会懵逼。你自己去慕课找个视频看看就知道了,看完视频照样不会,必须自己动手,然后在遇到问题的时候请教老师。这也是为什么我们要小班教学,我们要保证老师可以跟每个学员私聊传授经验。那么饥人谷的就业情况如何呢?今

年我们确实受到了海量简历的影响,但是问题不大,我们会帮学员另辟蹊径,换一些别人不知道的渠道投递简历。不要问我是什么渠道,我不会说的。只要得到面试机会了,他们基本都能通过面试。自学者该怎么办一手抓基础,一手抓流行框架。基础就是英语、HTTP、三门语言、AJAX。流行框架就是一些套路和模式。说起来简单,其实内容挺多的。看我以前的回答吧。

其实就算不是培训出来的前端都不好过,不要看着高薪就来。对工作一两年、心有余力不足的人,提两个建议提高效率,减少加班,该怼产品经理的时候多怼,把需求变更减少,留出个人时间。个人时间充充电,看看我推荐的那些书。

如果你司有牛人就多跟牛人交流。编程本来就是一件很难的事情,没有那个毅力和兴趣的话,很难存活。所以饥人谷招学员有两个要点:

第一,必须是你主动来学的,我们的广告只投了一家,就是阮一峰的博客,其他基本没有了。因为我们需要的是主动学习、有上进心的人。那种仅仅看中高薪的人,别来。

第二,爱退款就退款。你如果觉得你不是这块料,赶紧另谋它路。不要为了还贷款而造假,扰乱了前端人才市场不好。所以基本坚持下来的学员,都是自学能力不错、对前端有兴趣的人。这种人,不就是企业需要的人吗?—-这个问题太大,我还没有想好,先胡乱写一些吧。我个人能力有限,就做了一点微小的工作,每年培养一些靠谱的前端而已。

  • 初级前端:做事需要人带。
    中级前端:能自己独立做事。
    高级前端:能自己独立做事的同时,还能带人做事。

    有些公司没有高级前端,就赶鸭子上架,让中级前端带人。这个不算。

  • 强调 HTML/CSS/JS 基础的前端教程是否存在误区?
    作者:方应杭
    链接:https://www.zhihu.com/question/55355244/answer/144161696
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    你对「效率」的理解太狭隘了。效率分为

    1. 上手效率
    2. 开发效率
    3. debug 效率
    4. 运行效率
    5. 等你说的 react、vue、angular 只在「开发效率」上有提升,在其他几个方面都是降低效率的。

    只有在规模特别大的项目,这些框架才能追回这些降低的效率。你下次用这些框架的时候遇到 bug 就掐表,看看你用多少时间解决 bug。程序员一半的时间不都是在与 bug 作斗争嘛?为什么你会觉得用这些框架写代码很简洁?因为上手门槛高,那些新手没机会来捣乱。一旦一个半吊子插手你的项目,我保证任何框架都救不了你。回到楼主的问题:强调前端基础的教程是否存在误区?我认为存在。但跟你的观点正好相反。应该再基础一点。
    首先应该了解一点计算机的运行原理,非科班的同学我推荐《编码》这本书(书中没有代码)。
    还要了解一些内存和数据结构方面的知识,我推荐学习 C 语言。
    还要了解命令行,我推荐装个 Linux 作为日常工作使用。
    还要了解一点计算机网络方面的知识,目前没有找到比较通俗的科普书。
    还要了解「软件工程」方面的知识,我推荐《代码大全》这本书。
    最重要的是了解 HTTP。前端怎么能不了解 HTTP!最后才是最简单的编程语言知识——HTML+CSS+JS但是啊,你哪有这么多时间。科班生用一个大学的时间也就学这么几门课。所以有些人就贪快,直接去学 React呵呵,这是在骗自己。根基不稳,走不远哒。

  • 询问1年经验15k的可能性?
    你去拉钩、哪上班、boss直聘,按照 30K / 月的要求和标准去学,认真学半年就能拿 15k / 月。
    站着说话不腰疼

  • 国内公司前后端分离的最大意义只有一个:好招聘。
  • 请问学习前端最有效的办法是什么?

    回到正题:请问学习前端最有效的办法是什么?我不太确定你说的有效是指「质量高」还是「效率高」。某种程度上,你不可能同时做到「质量高」和「效率高」。(如果你天赋异禀,那还是可能的)我就当你说的是「效率高」。你用了一年时间,还不能仿站,显然效率是低的。如果纯从理论上来说,想要「效率高」是可能的。
    原则一:追求学习的性价比学习性价比 = 你所学到的有用的知识 / 你花费的时间要想要性价比高,就要做到两点:

    1. 尽量学有用的知识,暂时用不到的可以放在后面学。
    2. 尽量快,能一下午开完的知识点就坚决不要拖两个下午。我们来看看前端哪些知识是有用的。而且我们要精简精简再精简,因为我们要追求性价比。1. 英语2. HTML + CSS + JS3. HTTP4. 浏览器 API这四个我实在没法再精简了,那这就是我们最需要学的了。英语怎么学?因为编程基本就是在写英文单词,什么 if else while for var new this 之类的,好多单词。HTML 中的 <a>标签的全称是 anchor,很多人不记得,这个 a 好记,不记得全称不要紧。但有些标签你不记得全称就不好办了,比如 <abbr> <aside> <blockquote> <caption>。我见过不少人由于不知道这些
      单词的意思而放弃使用这些标签 - - |||CSS 里英语就更重要了,比如 transition、transform、translate,你在不了解英语含义的情况下,很难把这些记下来。

      对于英语,我的建议是:
      a) 电脑装个有道词典,哪里不会点哪里。
      b) 抓住一切可以学单词的机会。比如多用英文软件,少用汉化版。比如用英文操作系统,不用中文版。这样你每天都在记单词了。

      HTML + CSS + JS 怎么学?免费教程很多:HTML 入门CSSJavaScript看完你就入门了。还记得我学五笔的经历吗,你成功的前提是你能「坚持得下去」。其实现实生活中有很多前端并不怎么会 CSS(我在阿里和腾讯见到过不少这样的前端),所以如果你想更快,CSS 可以囫囵记一下语法,就直接实践吧!实践是解决坑的唯一办法。

      HTTP 怎么学?墙裂推荐《图解HTTP》,但是看书就慢了是不是,怎么办呢?你还是自己坚持看教程吧,还免费呢:HTTP浏览器 API比较重要的就是 文档对象模型 (DOM) 和 Window(BOM)。如果你想直接学 React / Vue,其实 DOM 都不用看了。学了上面四个,然后呢?如果你坚持下来了,就可以按照轮子哥说的做咯,去做出些东西吧!

    原则二:尽量学点难学的东西。有很多新人说,「webpack 好难啊,看不懂」知道为什么你觉得难么?因为你没见过更难的东西。你知不知道有两种编辑器分别叫做 vim 和 Emacs。很多极客都在使用这两款编辑器。(我在用 vim)。去学学这两个货,比 webpack 难学多了。学完他们,回头看 webpack,不跟玩儿似的。所以,别老是学习一些简单的东西,多挑战难一点的东西。

    原则三:你需要导师。不知道轮子哥有没有受人指导过,反正我在学编程的路上有很多位导师。
    导师的作用:

    1. 防止你走偏。甚至告诉你捷径。
    2. 帮你理清知识脉络。
    3. 解答你的疑问,在你有多个方案但是不确定哪个是最好的的时候,教你怎么权衡。当然,走偏也有走偏的好处,每条路有每条路的风景嘛。但是如果你想要高性价比的话,还是别走偏吧。我就说到这里了,不然又有人说我打广告咯。你都看到这儿了,不赞一下?
  • 开发团队大对前端来说可能有以下好处:

    • 更多的学习资源。你能接触更多资深大牛,并与他们面对面交流。你能得到公司组织的培训,比如腾讯的腾讯大讲坛、阿里的芝士会等。
    • 你能接触规模较大的业务比如你在天猫团队就可能接触到对页面性能要求极高的团队,你的技术也就相应的需要提升。业务会倒逼你成长,这是很多开发者渴望的。
    • 你能接触到更规范的开发流程。小公司用 QQ 传代码的事情屡有耳闻,在大公司里这是绝对不可能的。大公司对立项流程、开发流程、测试流程、部署流程都有一套自己的逻辑,了解这些知识对你很有帮助。
    • 光环大公司的名气对你有光环加成,别人听说你是从阿里腾讯出来的,自然就认为你的技术不会太差。因为这些公司的招聘门槛也是比较高的。

    作者:方应杭
    链接:https://www.zhihu.com/question/54936035/answer/141826268
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    • 怎样才算精通javascript
      作者:方应杭
      链接:https://www.zhihu.com/question/19657253/answer/141821299
      来源:知乎
      著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

      1. 「精通一门语言」是个伪命题从业多年的程序员都知道,我们只会说「精通一个领域」,而不会说「精通一门语言」。比如「精通前端开发」,意思就是对浏览器端的开发很熟练比如「精通Web开发」,意思是对 Web 服务器领域很了解,这种人一般会偏重一门语言,比如 PHP / Java / Python,但他不会说我「精通 PHP」这样的话。同时他一般至少会写两种编程语言。不过有一个特例,那就是你擅长的领域就是「开发一门语言」,或是「实现一门语言」。那么你可以说你「精通 JS 这门语言」,也就是说你对这门语言本身的各种细节很了解。

      2. 「精通」是个伪命题拿面试来说:你比面试官知道得少——就叫「了解」;你和面试官知道得差不多——就叫「熟悉」;你比面试官屌——就叫做「精通」。在你不熟悉面试官水平的情况下,你自诩「精通」那么就是在「挑衅」面试官。知道只有谁能说「精通 JS」吗,那就是 JS 之父——布兰登·艾克 纠正完了之后,我来回答题主的问题:怎么样才算是精通 JavaScript?现在 JS 比较火的领域有三个方面:1. 浏览器端页面开发2. 服务器端开发3. 命令行工具。所以我认为要精通 JS 应该是同时精通这三个领域(有点难哦)

      3. 精通浏览器端页面开发
        1.1. 你需要非常熟悉 HTML CSS JS 这三门语言。
        1.1.1 HTML通读 HTML 规格文档,用纯 HTML 做动态网站应该不在话下,了解 HTML 各种历史问题和兼容性问题。
        1.1.2 CSS通读 CSS 2.1 规格文档、CSS 3 各模块的规格文档,对浏览器排版规则很熟悉,甚至读过这部分的源代码,对 CSS 各种 Tricks 很熟悉,能用最少的 CSS 写出适应更多需求的代码。
        1.1.3 JS通读 ECMAScript 各版本规格文档,熟悉 JS 常用的第三方库,包括 jQuery、D3.js、Three.js……对 JS 内置对象的使用非常了解,能用原生 JS 写出一个兼容各浏览器的MVC/MVVM/类FLUX框架。
        1.2. 你需要对浏览器的工作原理非常了解
        1.3. 你需要对 HTTP 非常了解
        1.4. 你需要对中国的网络环境非常了解
        1.5. 上面都是基础,如果你对某一方面有单独的研究,那么你会对那个领域的知识也非常了解,比如数据可视化、VR、AR、2D、3D、游戏等。

      4. 精通服务器端开发
        2.1. 你需要计算机网络非常熟悉
        2.2. 你需要对数据库知识非常熟悉
        2.3. 你需要对缓存技术非常熟悉
        2.4. 你需要对多门 server 开发语言非常熟悉
        2.5. 你需要对网站架构非常了解
        2.6. 其他请后台大神补充,我的服务器端开发经验有限。
      5. 命令行工具开发
        3.1. 你需要对 Linux 命令行非常了解
        3.2. 你需要对现存的前端命令行工具非常了解,比如 Grunt、Gulp、Webpack
        3.3. 你需要对前端开发工作流非常了解
        3.4. 你需要对前端性能优化非常了解
        3.5. 请继续补充
  • H5 就是手机上的 PPT。

  • 你自学的时候一定需要一个导师!而且是靠谱的导师!
  • 如果一句话放在那里都是对的,那这句话就是废话。
  • javascript里强制每秒刷新页面?
    <font color=red><meta http-equiv="refresh" content="1">
    用 HTML 就能做到啊。
    所以说很多人 HTML 没学好。

  • 跟一群以学前端为乐的人一起学,不要一个人闷头学(一个人学很容易放弃)。

    1. 解决问题的方式就是先去着手解决这个问题。尤其是写代码。你写着写着就知道自己写的是错的,正确的思路就有了;但是如果你光想,不写,怎么也想不出来。
    2. 「问人」比「看书」靠谱。尤其是发展快的行业(比如前端)。书上大部分东西都是过时的。看书比不上问人(比如到群里来问我)
    3. 掌握/理解一个东西「不一定」要知道其原理真的。你去冥思苦想那些原理,不如做 Demo 做测试,理解得快。(请问我什么时候说过不需要懂原理,亏你还是工程师。不懂原理我怎么教课?)(我的理念是,用一周学会使用,用一年搞清所有原理)(另外不要死扣字眼,以为我说一年就真的是一年)
    4. 超过五条的忠告/总结/规则,都不要看因为你记不住。
    5. 我加上第五条吧:不要去看全面的观点,去看偏激的观点。综合多种不同偏激的观点,你就会有「自己的观点」。我当然知道上面几条忠告都有不足,那又如何?

    作者:方应杭
    链接:https://www.zhihu.com/question/53140844/answer/133603200
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 你把 CSS 玩得再溜,很多公司都是不要的。
    你会 React,你看多少公司抢着要吧。
    小孩子才分对错,成年人只看利弊。
  • 不写测试就无法重构,无法重构代码就会变烂,所以不写测试代码就会烂掉。
  • 前端开发者为什么放弃了对旧版本IE的兼容?
    你让手机端程序员兼容一下诺基亚试试?
  • 如果你真的想全栈,一定一定,不要吊死在 JS 这一棵树上。去看看 Python Rails GoLang PHP .NET。没有一个比 Node 差。嗯,我没有提 Java,因为我不会 Java(笑)
  • 零基础开始学 Web 前端开发,有什么建议吗?
    前四节课的主要知识命令行基础vim 基础HTTP 基础用 Node.js 写简单命令行程序用 Node.js 写简单服务器程序推荐的书《编码》学员们表示虽然没讲语法就搞东西有点慌,不过做得挺有意思的。基础保证讲,谁能把基础讲得比我好啊(这句话你就当真的听,哈哈)。待续想知道前端学习线路的请关注我。

    作者:方应杭
    链接:https://www.zhihu.com/question/19637373/answer/148567885
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 国内哪些网站的前端是比较优秀的,有学习参考价值?
    比如 dribbble 和 codrops

  • 好看的前端博客
    https://github.com/FrankFang/best-chinese-front-end-blogs/blob/master/README.md
  • 我在二十出头就做好了「我这辈子不会有特别大的成就,或者赚特别多钱」的心理准备。
    所以目前的目标就是做自己擅长的事情。

  • 穷人思维就是看重存量,富人思维就是看重增量
  • 如果提问者的意思是问 html 如何引入另一段 html 的话,答案是 iframe

  • 随着各种前端MVVM,MVC框架的流行,jQuery等传统JS库是否有走向边缘的趋势?
    不会,而且在未来五年依然是主流。为什么会是主流?因为一,「绝大部分」程序员的主要工作就是「维护旧项目」。去看看淘宝首页,还是在用 KISSY,你看有没有人愿意用 Vuejs 等等框架重写淘宝,为什么早就入土的框架淘宝还在用?回到我前面说的——「绝大部分」程序员的主要工作就是「维护旧项目」。加几十行代码我的工作就完成了,为什么要去重写淘宝?二,世界PV排在前十万的网页,有百分之七十以上在用 jQ。你还好意思说 SPA 框架是主流吗?你能想到几个大众常用的网站是用 SPA 框架做出来的,掰着指头就数完了。所以 SPA 才是小众。最后纠正提问者的话:前端想要炫技,必须学会这些 SPA 框架(注意我并没有说学会这些框架就是为了炫技),jQ 在炫技方面已经被边缘化了,因为 jQ 是前端的基础知识,基础知识怎么用来炫技?完。

    作者:方应杭
    链接:https://www.zhihu.com/question/51468164/answer/130872613
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 前端开发中有什么经典的轮子值得自己去实现一遍?
    作者:方应杭
    链接:https://www.zhihu.com/question/29380608/answer/130729912
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    注意题目问的是哪些轮子值得实现一遍。问的不是你造过哪些轮子呀。(光感谢不点赞是什么情况。。)你只要去实现那些每年被重新实现过一遍的轮子就行了。

    UI 轮子轮播、Tab、懒加载……照着饿了么UI库、Bootstrap 挨个实现就好。做这种轮子比较考验 CSS 功力,你需要用尽量少的代码适应尽量多的场景。流行 UI 模式的实现瀑布流、视差滚动、fullpage等。原理简单又炫酷,何乐不为。

    DOM 操作的轮子实现得最好的当然就是 jQuery。
    由于 jQ 这么流行,所以你实现的结果很可能跟 jQ 的 API 一模一样。因此现在很少有人造这个轮子,但是在十年前,大家都是在早 DOM 轮子。这要求你对 DOM 和 API 设计有很多经验。至于 Virtual DOM,你可以在某种程度上认为是一种 DOM API 的封装,不过它的难点其实不在这里。

    JS 缺失的标准库的实现Date 很烂,所以有了 Moment,Array 很烂,所以有了 Underscore LodashJS, 没有加载器,所以有了 require.js 等JS ,自定义事件不好用,所以你可以自己造一个有的浏览器不支持 ES5,所以有了 es5shim。移动设备需要滑动事件,你来造一个轮子吧。模板引擎……就一个正则替换还好意思叫引擎,实现这种轮子的第一要务是如何给出漂亮的 debug 信息,至于渲染速度的,我认为只能排在第二位。

    框架轮子MVC 可以造轮子,虽然不流行了,但对老项目很有用。MVVM 在不考虑 IE 的前提下造一个轮子也绝非难事。FLUX 单向数据流的轮子就更好造了。工程化轮子现在搞前端不会工程化怎么行。基于 Gulp 做一套自动化构建尽显逼格。

    所以你看,前端搞了这么多年,只不过就是每年把上面轮子重新造一遍而已(逃
  • 前端就是这么痛恨和 DOM 打交道。

  • 前端构建工具是什么?
    手机打字,错别字各位自行脑补。就是因为以前的前端太low了,没学过C啊Java啊,所以不知道有 make、Ant 这种东西,甚至连命令行都不会用。一直都是写什么运行什么,不编译不打包。直到 Node.js 出现之后,终于有素质不错的前端看不过去了,说不能再这么裸着写JS了,至少检查下分号有没有少加吧,于是用JS写了一些字符串检查的工具,用来检查代码。顺便把一直看不顺眼的Java打包工具 Closure Compiler用JS来改写。但是由于前端 bash 水平薄弱,不会用 .sh,于是有人搞出 Grunt Gulp,方便前端用 JS 来配置。对的,你发现了,现在的前端除了JS,什么都不会,都不喜欢。你说前端搞一大圈,最后还不是回到 npm script,这是为啥。就是见识太少,看到JS社区出个什么都觉得是好东西,却不知道是炒其他语言的冷饭。我只说偏激的观点,你自己判断对错。

    作者:方应杭
    链接:https://www.zhihu.com/question/35595198/answer/130024380
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 中国程序员是否过多?

    以下每一句都能过滤一大批不靠谱程序员:
    「会」翻墙。看英文文档。
    「会」命令行。
    完整读过 XX 入门经典。(或者看 Learn XX The Hard Way 也行)平时对技术有总结(博客)等。
    学习新技术。
    有过、贡献过开源作品。(或者有能拿掉出手得作品。你们程序员真是抠字眼,不开源也行,好了吧。问题是你不开源我怎么知道你靠不靠谱?Show me the code)
    每一句话剔除50%,你觉得还有多少靠谱程序员?

    作者:方应杭
    链接:https://www.zhihu.com/question/51359754/answer/126717245
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 大厂的内部代码管理系统,很多都是 SVN 和 GitLab,很多人不知道怎么添加 Code Review 机制(不 Review 就不能发布)。既然不 Review 也能发布,我为什么要去做 Review

  • vue.js不支持IE8你们是怎么做的?

    if(document.all)alert(‘你的浏览器太旧了,恕不奉陪’)

    实际情况:
    1. 首先统计你用户有多少人在用 IE 8,淘宝某些网站 IE 8 用户已经不到 15% 了。
    2. 如何可能的话,统计一下这些用户对公司有没有贡献(钱),没有贡献直接让他们升级。
    3. 当 IE 8 用户低于5%,直接提示不支持。
    4. 如果非要兼容,请一定告诉某些傻逼产品经理:IE 8 上的体验没必要做到跟 Chrome 一样。具体表现: Chrome 上有阴影有圆角有渐变,IE 8 上直接去掉。Chrome 上用原生 API,IE 8 上用 Polyfill。Chrome 上运行流畅,IE 8 上必须卡,没卡你也要把 IE 8弄卡!这样用户才会知道『IE 8 垃圾』。
    以上,就是一个生命有限的前端工程师对 IE 8 应有的态度。

    作者:方应杭
    链接:https://www.zhihu.com/question/51468145/answer/125984111
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • Bootstrap 只适合两种团队:
    没有设计师的团队;
    没有前端的团队
  • 如何提高写代码的水平?
    大神就是大神,学个编程简直易如反掌。我们来领会一下大神的主体思想:你要提高的不是编程水平!而是了解「程序是怎么运行起来的」!!!

    比如前端需要了解:浏览器是怎么下载页面的?浏览器是怎么展示页面的?页面是怎么有样式的?页面是怎么与用户交互的?页面是怎么更新的?用户是怎么提交内容的?服务器是怎么运行起来的?服务器做些什么?你不了解这些,写再多代码也没用!!!

    作者:方应杭
    链接:https://www.zhihu.com/question/50990553/answer/123618422
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 重构页面时,什么样的代码才算是好的代码?
    HTML、CSS、JS 代码越少越好。

  • 我想问下fis3和webpack有什么区别?

    别跟国内大公司走!尤其是在这个前端飞速发(zhe)展(teng)的年代,紧跟开源社区是你唯一的出路。社区内部肯定是互相兼容的,你要让百度去兼容开源社区?先问问他们 Leader 同不同意拿出资源来做这件事吧。业务都忙不完,还做这?KPI 完不成就没年终奖啦!

    作者:方应杭
    链接:https://www.zhihu.com/question/50829160/answer/122919635
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 有人知道腾讯IMWeb是一个什么样子的团队么?在腾讯主要做什么的?求科普~?
    我实习的时候在 IMWeb 团队,第一份工作也是在 IMWeb 团队。后来由于要回武汉结婚,离开了 IMWeb ,现在回想起来,第一份工作就遇到了一个如此好的团队,我的运气实在是太好了。2011 年我还是一个前端菜鸟,有幸,@HenryGuo 是我的导师,我在实习的前三个月(共实习近一年,之后转正),前端技能有了飞速的提高。首先是我能直接接触到上亿用户的业务。任何一个小问题在遇到上亿用户,都不是小问题。虽然我作为实习生,只是打打杂,但我也从这个团队知道了国内一流前端团队的工作流程和质量评判标准。

    当时 IMWeb 做 QQ 内嵌页面,对页面性能有很多硬性要求,我印象深刻的有两个要求:
    一是 ready 时间不能超过一秒,
    二是不能有内存泄露。性能要求如此之高,以至于我之后到别的前端团队之后,对他们的性能测试标准从内心都是鄙视的,很久之后才渐渐接受降低标准。
    其它诸如 XSS 漏洞之类的,也必须非常注重,毕竟,有这么多用户,你的责任心油然而生。回到题主的问题,这是一个什么样的团队。我的答案是,这是国内屈指可数的几个优秀前端团队之一,在这里你可以得到在最好的锻炼。

    作者:方应杭
    链接:https://www.zhihu.com/question/41434202/answer/121450617
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • Sublime 已经被 VSCode 甩出一条街了(前端方面)
    不要使用 Windows 自带的记事本!说记事本是垃圾,一点不为过。