首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.开篇:聊聊前端工程师的成长话题
2.设计模式的“道”与“术
3.创建型:工厂模式·简单工厂——区分“变与不变”
4.创建型:工厂模式·抽象工厂——理解“开放封闭”
5.创建型:单例模式——Vuex的数据管理哲学
6.创建型:单例模式——面试真题手把手教学
7.创建型:原型模式——谈Prototype无小事
8.结构型:装饰器模式——对象装上它,就像开了挂
9.结构型:装饰器模式——深入装饰器原理与优秀案例
10.结构型:适配器模式——兼容代码就是一把梭
11.结构型:代理模式——一家小型婚介所的发家致富之路
12.结构型:代理模式——应用实践范例解析
13.行为型:策略模式——重构小能手,拆分“胖逻辑”
14.行为型:状态模式——自助咖啡机背后的力量
15.行为型:观察者模式——鬼故事:产品经理拉了一个钉钉群
16.行为型:观察者模式——面试真题手把手教学
17.行为型:迭代器模式——真·遍历专家
当前位置:
首页>>
技术小册>>
javascript设计模式原理与实战
小册名称:javascript设计模式原理与实战
即使是在瞬息万变的前端领域,也存在一些具备“一次学习,终生受用”特性的知识,比如[前端性能优化](https://juejin.im/book/5b936540f265da0a9624b04b/section/5b936540f265da0aec223b5d#heading-4)的核心思路,再比如我们这次要展开来讲的JavaScript设计模式。 > 在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。 ——维基百科 烹饪有菜谱,游戏有攻略,每个领域都存在一些能够让我们又好又快地达成目标的“套路”。在程序世界,编程的“套路”就是设计模式。 授人以鱼,不如授人以渔。在尝试学习一门知识之前,最重要的事情是搞清楚这块知识本身的意义(为什么要学?)、作用(学了它能干嘛?)和特性(怎么学比较好?),从而建立起自己的全局观 —— 这个过程和知识本身同样重要,也正是这一节我们要着重解决的两个问题。 此外,作为小册作者,更是作为大家的同行,我也想借这个机会,在这个有点冷的春天里,跟大家聊一些更实在的东西——聊聊我们前端工程师怎么变秃变强的话题,这部分内容位于本节的“前言”部分,如需跳读,大家直接往下拉到第二小节即可。 ## 变与不变 前端这个职业确实不轻松,尤其是移动互联网大热的这几年,技术革命就没消停过。单说框架/库吧,我相信屏幕前一定有跟我一样从原生 JavaScript 开始写,然后写 jQuery,写 zepto,写 Angular,写写写,一直写到现在的 Vue/React 等等。就算是刚刚入行、没有经历过技术变革摧残的的新同学,也能被当下纷繁复杂的前端生态给迷了眼。很多同学刚刚掌握了一门技术,以为settle down了、可以沉淀一下了,结果又冒出一个新玩意儿,没办法,继续追!所以说我没见过哪个前端写代码、学东西是不卖力的 —— 不卖力早掉队了。 但大家现在需要冷静下来思考这么一个问题:我很拼,别人也很拼,**所有人都在拼的时候,我特别的地方、或者准确地说——我的核心竞争力在哪里**? 能够决定一个前端工程师的本质的,不是那些瞬息万变的技术点,而是那些**不变的东西**。 什么是不变的东西? 我给大家举个例子。两年前某厂有个团队发了一则招聘广告,说重金求 Node 玩家,愿意给很高的 P 级,薪资什么的不用说自然非常丰厚。完了没过几天,这则招聘信息的截图竟然出现在了一个培训机构的招生广告里,附的文案是“ BAT 砸 xx 万招 Node 工程师,而你却还在学 PHP?!”。这事儿作为一个段子流传了很久,因为它足够滑稽——大家想想,Node的语法难不难?不难,准确地说,足够友好了!我相信每个团队都不缺会用 Node 或者说用任何一门语言去写 Hello World 的同学 —— 缺的是能够驾驭这门语言、能凭借自己深刻的架构思想和工程思想去支配这门语言、利用它去创造牛逼产出的人。 所谓“不变的东西”,说的就是这种**驾驭技术的能力**。 具体来说,它分为以下三个层次: * 能用健壮的代码去解决具体的问题; * 能用抽象的思维去应对复杂的系统; * 能用工程化的思想去规划更大规模的业务。 这三种能力在你的成长过程中是层层递进的关系,而后两种能力可以说是对架构师的要求。事实上,在我入行以来接触过的工程师里,能做到第一点,并且把它做到扎实、做到娴熟的人,已经**堪称同辈楷模**。 ## 前端工程师,首先是软件工程师 > 基础理论知识是一个人的基线,理论越强基线越高。再为自己定一个目标和向上攀附的阶梯,那么达到目标就是时间问题,而很多野路子工程师搞了半辈子也未达到优秀工程师的基线,很多他们绞尽脑汁得出的高深学问,不过是正规工程师看起来很自然的东西。—— 吴军 过去,人们对软件工程的理解比较狭隘,认为前端就是页面,和软件是两回事儿。随着前端应用复杂度的日新月异,如今的前端应用也妥妥地成为了软件思想的一种载体,而前端工程师,也被要求在掌握多重专业技能之余,具备最基本的软件理论知识。 技术人之间的口水战,每次但凡想上升一点高度,便要拿”架构“这样高大上的话题出来晃晃眼。但事实上,**很多人缺乏的并不是这种高瞻远瞩的激情,而是我们前面提到的“不变能力”中最基本的那一点——用健壮的代码去解决具体的问题的能力**。这个能力在软件工程领域所对标的经典知识体系,恰恰就是设计模式。 所以说,**想做靠谱开发,先掌握设计模式**。
下一篇:
2.设计模式的“道”与“术
该分类下的相关小册推荐:
KnockoutJS入门指南
Javascript-ES6与异步编程
WebSocket入门与案例实战
零基础学JavaScript
Javascript编程指南
web前端开发性能优化实战
经典设计模式Javascript版
Node.js 开发实战
剑指javascript
JavaScript面试指南
深入学习前端重构知识体系
ES6入门指南