新書推薦:
![定鼎中原之路:从皇太极入关到玄烨亲政](http://103.6.6.66/upload/mall/productImages/24/31/9787108062819.jpg)
《
定鼎中原之路:从皇太极入关到玄烨亲政
》
售價:HK$
101.2
![财之道丛书·如何让人投资你:股权激励融资全揭秘](http://103.6.6.66/upload/mall/productImages/24/31/9787213115257.jpg)
《
财之道丛书·如何让人投资你:股权激励融资全揭秘
》
售價:HK$
101.2
![PyTorch深度学习与计算机视觉实践](http://103.6.6.66/upload/mall/productImages/24/30/9787302665144.jpg)
《
PyTorch深度学习与计算机视觉实践
》
售價:HK$
90.9
![新任经理 100 天实战指南](http://103.6.6.66/upload/mall/productImages/24/29/9787566923387.jpg)
《
新任经理 100 天实战指南
》
售價:HK$
89.7
![日本百鬼画谱](http://103.6.6.66/upload/mall/productImages/24/31/9787201199009.jpg)
《
日本百鬼画谱
》
售價:HK$
71.3
![大明拐点 : 天启党争](http://103.6.6.66/upload/mall/productImages/24/30/9787507559408.jpg)
《
大明拐点 : 天启党争
》
售價:HK$
66.7
![纲鉴易知录评注(布面精装 全8册)](http://103.6.6.66/upload/mall/productImages/24/31/9787101166378.jpg)
《
纲鉴易知录评注(布面精装 全8册)
》
售價:HK$
572.7
![官商跃迁:中国古代政商关系简史](http://103.6.6.69/upload/mall/productImages/y24/8/9787523410707.jpg)
《
官商跃迁:中国古代政商关系简史
》
售價:HK$
101.2
|
內容簡介: |
开发JavaScript库是入门前端领域的重要一步。本书旨在帮助前端开发者掌握现代JavaScript库的开发技术,让每个人都可以开源自己的现代JavaScript库。本书系统介绍了现代JavaScript库开发涉及的技术、原理和最佳实践,以及将库开源后如何做好维护工作。在最佳实战部分,本书选取了9个典型库作为案例,展示开发流程,代码清晰、完善。 本书既适合对现代JavaScript库开发及开源感兴趣的前端开发者阅读,也适合想要学习前端项目开发技术的初学者阅读。
|
關於作者: |
颜海镜,知名技术博主,微信公众号“颜海镜”作者。拥有十年以上开源经验,在GitHub上拥有关注者(followers)5100余名,维护了jsmini、jslib-base、template.js、zepto.fullpage等多个开源项目,获得了6500个以上的GitHub Star。具有多年一线大厂从业经验,曾先后就职于金山、百度、美团等知名企业,负责前端开发工作。著有《React状态管理与同构实战》。侯策,就职于某内容社区类互联网上市公司,具有多年海内外工作经验,曾先后就职于法国ENGIE集团、Google、百度等知名企业。擅长前端工程化体系搭建及基础建设架构设计。著有《React状态管理与同构实践》《前端开发核心知识进阶:从夯实基础到突破瓶颈》《前端架构师:基础建设与架构设计思想》等多部技术图书。
|
目錄:
|
目录第1章 从零开发一个JavaScript库11.1 如何开始11.2 编写代码21.3 本章小结5第2章 构建62.1 模块化解析62.1.1 什么是模块72.1.2 原始模块72.1.3 AMD82.1.4 CommonJS92.1.5 UMD92.1.6 ES Module102.2 技术体系解析112.2.1 传统体系122.2.2 Node.js体系132.2.3 工具化体系142.3 打包方案172.3.1 选择打包工具182.3.2 打包步骤192.3.3 添加banner232.3.4 按需加载242.4 兼容方案262.4.1 确定兼容环境262.4.2 ECMAScript 5兼容方案282.4.3 ECMAScript 2015兼容方案302.5 完整方案332.6 本章小结35第3章 测试363.1 第一个单元测试363.2 设计测试用例393.2.1 设计思路393.2.2 编写代码403.3 验证测试覆盖率423.3.1 代码覆盖率423.3.2 源代码覆盖率443.3.3 校验覆盖率463.4 浏览器环境测试483.4.1 模拟浏览器环境483.4.2 真实浏览器测试493.4.3 自动化测试513.5 本章小结53第4章 开源544.1 选择开源协议544.2 完善文档564.2.1 README574.2.2 待办清单594.2.3 变更日志594.2.4 API文档604.3 发布614.3.1 发布到GitHub上614.3.2 发布到npm上624.3.3 下载安装包664.4 统计数据664.4.1 GitHub数据664.4.2 npm数据674.4.3 自定义数据694.5 本章小结70第5章 维护715.1 社区协作715.1.1 社区反馈725.1.2 社区协作765.1.3 社区运营775.2 规范先行795.2.1 编辑器795.2.2 格式化825.2.3 代码Lint885.2.4 提交信息965.3 持续集成1025.3.1 GitHub Actions1035.3.2 CircleCI1115.3.3 Travis CI1145.4 分支模型1155.4.1 主分支1155.4.2 功能分支1165.4.3 故障分支1195.4.4 Pull request1205.4.5 标签与历史1215.5 本章小结123第6章 设计更好的JavaScript库1246.1 设计更好的函数1246.1.1 函数命名1246.1.2 参数个数1256.1.3 可选参数1266.1.4 返回值1266.2 提高健壮性1276.2.1 参数防御1276.2.2 副作用处理1296.2.3 异常捕获1306.3 解决浏览器兼容性问题1316.3.1 String1326.3.2 Array1326.3.3 Object1346.4 支持TypeScript1346.5 本章小结137第7章 安全防护1387.1 防护意外1387.1.1 最小功能设计1387.1.2 最小参数设计1407.1.3 冻结对象1417.2 避免原型入侵1427.2.1 面向对象基础知识1427.2.2 原型之路1437.2.3 原型入侵1457.3 原型污染事件1477.3.1 漏洞原因1487.3.2 详解原型污染1487.3.3 防范原型污染1517.3.4 JSON.parse补充1527.4 依赖的安全性问题1527.4.1 库的选择1537.4.2 正确区分依赖1547.4.3 版本问题1567.4.4 依赖过期1577.4.5 安全检查1587.5 本章小结160第8章 抽象标准库1618.1 类型判断1618.1.1 背景知识1618.1.2 抽象库1668.2 函数工具1698.2.1 once1708.2.2 curry1708.2.3 pipe1718.2.4 compose1728.3 数据拷贝1748.3.1 背景知识1748.3.2 最简单的深拷贝1768.3.3 一行代码的深拷贝1788.3.4 破解递归爆栈1788.3.5 破解循环引用1808.3.6 性能对比1838.4 相等性判断1878.4.1 背景知识1878.4.2 抽象库1958.5 参数扩展2008.5.1 背景知识2008.5.2 抽象库2028.6 深层数据2058.6.1 背景知识2058.6.2 抽象库2098.7 本章小结214第9章 命令行工具2159.1 系统设计2159.2 标准命令行工具2179.3 交互界面2259.4 初始化功能2349.4.1 代码架构2369.4.2 公共逻辑2379.4.3 模块设计2429.5 命令行颜色2499.6 进度条2519.7 发布2569.8 本章小结257第10章 工具库实战25810.1 问题背景25810.2 代码实现26010.2.1 字符串操作26010.2.2 数组操作26210.2.3 对象操作26510.2.4 URL参数处理26810.3 搭建文档26910.4 ESLint插件27410.4.1 type-typeof-limit27610.4.2 type-instanceof-limit28110.4.3 no-same-function28210.4.4 recommended28410.4.5 发布28510.5 数据统计28510.5.1 统计接入项目28510.5.2 下载量28610.5.3 包和函数被引用的次数28710.6 本章小结292第11章 前端模板库实战29311.1 系统搭建29311.1.1 背景知识29311.1.2 搭建项目29511.2 解析器30011.3 即时编译器30511.4 预编译器30911.5 webpack插件31711.6 VS Code插件32311.7 发布32911.8 本章小结330第12章 未来之路33112.1 全景图33112.1.1 知识全景图33112.1.2 技术全景图33212.2 下一代技术33312.2.1 TypeScript33312.2.2 Deno33412.2.3 SWC33412.2.4 esbuild33512.2.5 Vite33512.3 本章小结336
|
|