・・・・・・ 之 ・・・・・・
过去、现在和未来
My Company
and Myself
www.baixing.com
Send your resume to 简历请投 [email protected]
zhihu: 贺师俊
weibo: @johnhax
1998年第一次写网页, 2003年某网站技术总监, 2005年某外企软件架构师, 2007年某外企网站系统甲方, 2010年盛大创新院研究员……, 盛大电子书Web框架研发工程师, 2012年百姓网唯二的前端工程师, 2016年百姓网架构组Web前端之一
Title不重要, 重要的是:
找到自己, 真正想做的事情
Job, 差事
Career, 职业
Vocation, Calling
事业, 使命
调用、呼叫, 呼唤、召唤
前端 JS
johnhax.net/events zhihu answers timeline github public activity
・・・・・・ 之 ・・・・・・
过去、现在和未来
追溯到最早
十年之前,
我不认识你,
你不属于我,
我们还是一样,
切页面写前端
build
build, compile, link, IDE, make
写页面, 刷新, 调样式, 刷新, repeat
不过……
压缩, 合并, JSMin (2001)
压缩 => 减小体积 合并 => 减少请求
文件名替换
资源永久缓存, Facebook (2005)
资源内容变更 => URL变更
版本号 时间戳 hash值
技术难点,
- 版本管理
- 依赖
树有向图 - 变更spread
开山之作, 必须自动化
历史局限性, 技术门槛高, 缺少开源版本, 前端工具缺乏统一平台
目的:性能优化, 只在部署步骤做 不影响开发流程 但影响代码习惯
CSS预处理器, SASS (2007)
第一次,
- 在核心环节引入编译
- 将构建引入开发流程
- 通过构建解决兼容性
- 通过构建提升开发效率
- 通过构建降低开发难度
历史局限性, 绝大部分前端 抗拒, 前端工具缺乏统一平台
前端库的定制化,
- Modernizr
- Dojo
- jQuery
鸡肋, 前端工具缺乏统一平台
前端模块加载器, RequireJS (2009) Sea.js (2011)
开发时传统模式 部署时编译打包
开发时传统模式 与构建演化矛盾
前端工具缺乏统一平台
前端工具缺乏统一平台
Node.js (2009)
Less (2010) Browserify (2011) Grunt (2011)
JS编译器, Babel (2014/9)
GWT (2006)
历史意义, 证明了编译 到JS的道路, Production
历史局限性, 最早仅用于Ajax接口, 面向后端开发 归属于后端构建 对前端影响很小
JSVM (2004)
先驱
没有对业界产生 实质性影响
CoffeeScript (2009)
历史意义, 第一门流行的 AltJS, 必然依赖构建
Babel (2014/9)
改变生态, 正向反馈
JavaScript The World's Best Programming Language
必须用Babel, 必须上构建
自动化构建工具 Grunt (2011) Gulp (2013/6) Broccoli (2013/11)
前端构建的集大成者 Webpack (2012)
基于Loader, 分析依赖, 模块打包
十年之后,
我们是朋友,
还可以问候,
今天你上全家桶
用Vue 2.0了吗?
React/Vue2等 应用框架本身 就需要构建
问题
流程长
编译慢
配置复杂
npm小模块方法论
开发效率下降
性能优化 Hold不住了
HTTP/2
减少请求
ServiceWorker
永久缓存
构建是静态的
运行时才能决定
按需加载
chunk策略
polyfill
又十年之后, AGI出现, 程序员从此下岗……
再十年之后, ASI出现, 世界大同
若干年后, 人类灭亡
THE END
THE END
画风不对……
去年我做了 预言
似乎太乐观了?
拭目以待, 创造未来
QA
zhihu: 贺师俊
weibo: @johnhax
THE END