{ "err_no": 0, "err_msg": "success", "data": { "booklet": { "booklet_id": "7053736179887243267", "base_info": { "id": 0, "booklet_id": "7053736179887243267", "title": "初探前端工程化", "price": 2990, "category_id": "6809637767543259144", "status": 1, "user_id": "1538971967685032", "verify_status": 2, "summary": "将工程化和前端开发结合,让开发事半功倍", "cover_img": "https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/db170489dd5c40b5a42ba61bfc8ac4ed~tplv-k3u1fbpfcp-watermark.image?", "section_count": 18, "section_ids": "7053736180017266721|7053775103619760132|7053775103753977894|7053775103514902560|7053801025311866912|7053837093335892001|7053837093474140164|7053846538509877287|7053846650791395331|7063010840965808128|7063010841292963880|7063018998459269161|7063025863863992335|7063025393049010216|7063026708789592079|7063027498438623232|7063029862688096291|7063029303344103465|7064193285396365346", "is_finished": 1, "ctime": 1642348392, "mtime": 1655694912, "put_on_time": 1645002025, "pull_off_time": -62135596800, "finished_time": -62135596800, "recycle_bin_time": -62135596800, "verify_time": -62135596800, "submit_time": 1655694912, "top_time": -62135596800, "wechat_group_img": "https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1c00ca63f9e14812b3cf79c3cbc3f2f8~tplv-k3u1fbpfcp-watermark.image?", "wechat_group_desc": "", "wechat_group_signal": "前端工程216", "read_time": 17716, "buy_count": 1374, "course_type": 1, "background_img": "https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a9c85360228e43c4afb806d59caec370~tplv-k3u1fbpfcp-watermark.image?", "is_distribution": 1, "distribution_img": "https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c0c85d5a74dc45a4b93ff19818a0722b~tplv-k3u1fbpfcp-zoom-1.image?", "commission": 598, "can_vip_borrow": false, "is_sign": false }, "reading_progress": { "id": 0, "booklet_id": "7053736179887243267", "user_id": "3210229681503629", "status": 1, "buy_type": 1, "reading_end": 0, "reading_progress": 5, "last_section_id": "7053775103514902560", "has_update": 1, "last_rtime": 1645061009, "ctime": 1645060799, "mtime": 1658225139, "valid_begin_time": 0, "valid_end_time": 0, "borrow_times": 0 }, "user_info": { "user_id": "1538971967685032", "user_name": "sunshine小小倩", "company": "饿了么", "job_title": "资深前端工程师", "avatar_large": "https://p3-passport.byteacctimg.com/img/user-avatar/bb68979f992ac426cbd75574d25702ab~300x300.image", "level": 6, "description": "", "followee_count": 65, "follower_count": 18454, "post_article_count": 44, "digg_article_count": 516, "got_digg_count": 20402, "got_view_count": 834867, "post_shortmsg_count": 6, "digg_shortmsg_count": 19, "isfollowed": false, "favorable_author": 1, "power": 28657, "study_point": 0, "university": { "university_id": "0", "name": "", "logo": "" }, "major": { "major_id": "0", "parent_id": "0", "name": "" }, "student_status": 0, "select_event_count": 0, "select_online_course_count": 0, "identity": 0, "is_select_annual": true, "select_annual_rank": 0, "annual_list_type": 0, "extraMap": {}, "is_logout": 0, "annual_info": [], "account_amount": 0, "user_growth_info": { "user_id": 1538971967685032, "jpower": 0, "jscore": 799.1, "jpower_level": 0, "jscore_level": 5, "jscore_title": "先锋掘友", "author_achievement_list": [], "vip_level": 0, "vip_title": "" }, "is_vip": false }, "event_discount": null, "is_buy": true, "section_updated_count": 18, "is_new": false }, "introduction": { "id": 85933, "section_id": "7053736180017266721", "title": "小册介绍", "user_id": "1538971967685032", "booklet_id": "7053736179887243267", "status": 1, "content": "
sunshine小小倩,某一线互联网公司资深前端开发工程师。平时在工作中除了业务之外,还从事和前端基础建设相关的工作内容,包括团队 SOP 制定、内部组件库的搭建和维护,以及其他为开发提效的工作。同时,也有一些前端性能提升等工程化的实践。
\n平时热衷于将自己的经验和踩过的坑跟大家分享,希望能给大家带来帮助。
\n现在的前端开发已经和 5 年前的前端开发有着截然不同的要求。在 5 年前我刚毕业找第一份工作的时候就问了我一个问题:“页面上有一个 button,你能把上面的文案给改了吗?” 相信 5 年后的今天,你只会修改一个 button 的文案是找不到工作的。时至今日,大家在找工作的时候基础问题都是:“Vue 实现双向绑定的原理是什么?Webpack 是怎么进行打包的?plugin 和 loader 的区别是什么?……”
\n前端开发最开始只是嵌入在模板引擎中对页面样式进行修改再加上一些简单的 DOM 操作,后来慢慢发展为可以处理复杂交互和业务逻辑。特别是随着 Ajax、Node 等新技术的发展,前端开发也逐渐具备了开发中大型业务的能力,这无疑标志着前端已经步入工程化的阶段。
\n这也意味着对我们的要求已经不再是“前端开发”,而是 “前端工程师”,时代要求我们要有工程化的思维和工程化解决问题的能力。
试想一下,某一天一个线上问题反馈说有的用户出现了白屏,你一通查找,结果发现是一个最新的语法在旧的浏览器上不支持。但是明明你的项目中用了 Babel 呀!打开编辑器,对着 babel.config.js 文件看了半天也没看出来个所以然来。于是你又打开 Google 搜索“怎么配置 Babel?”,会搜索到要安装一大堆 npm 包,配置 transform-runtime、babel-polyfill……按照第一篇文章配置之后,发现不生效,又换一篇文章,接着更改配置。终于,在快则 2 个小时,慢则一天的尝试之后,终于解决白屏问题了!此时,虽然你也不知道是改动的哪一行代码生效了,也不知道为什么要这么配置,但是知道要赶紧按下保存按钮,生怕修改了配置又出问题!并且祈祷下次千万不要有类似的问题报过来了!! 然后又匆匆忙忙重新回到项目中赶工期,至于出问题的原因,下次一定……下次一定……
上面这个场景你是不是很熟悉?估计也戳到了很多技术人的痛处。这可能就是我们某些技术人开发的日常,被繁琐的 webpack 或者其他的 babel 、ts 的配置文件搞得一头雾水。总结来说,就是:
\n以上的种种现象说明:你前端工程化的知识欠缺。
那么本小册将着重就现代前端开发,来详细介绍前端工程化的相关内容,并且带领大家用专业知识来解决前端工程问题,包括如何进行模块化、如何设计组件、如何提高代码的复用性、如何提升打包效率、如何做性能优化等。毕竟,现如今,只是会 HTML、CSS、JS 写写静态页面的时代已经过去了。
本小册主要是从开发、构建和部署这三大阶段来构思的,整体的思维导图可参考如下:
\n期望大家学习完本小册之后,能够有以下收获:
\n本小册适合工作 1~3 年的初级前端工程师。比如,存在以下这些“症状”:
\n