7.2-Frontend

前端每周清单第21期:JS项目开发样式指南;基于Vue的分角色权限验证;深入React.js内部原理

前端 前端每周清单

前端每周清单专注前端领域内容,分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。关注【前端之巅】微信公众号(ID:frontshow),及时获取前端每周清单。

新闻热点

国内国外,前端最新动态

  • Let’s Encrypt宣布将在2018年一月提供通配符证书服务:自从2015年上线以来,Let’s Encrypt已经服务于数百万的在线站点,并且大幅度提升了整个Web的加密流量占比。近日Lets Encrypt宣布将会在来年一月份提供通配符证书服务;某个通配符证书能够应用于某个根站点下的任意数目的子站点,从而帮助网站管理者更加方便地使用单证书来为多个子站点添加HTTPS部署支持。( https://parg.co/bIp )

  • 百度Web生态构建:发布基于VuePWA解决方案LAVAS;将全面支持Web AR :在Baidu Create 2017 Web生态分论坛上,百度搜索正式对外发布基于VuePWA解决方案LAVAS,同时宣布将全面支持Web AR,此外,百度还对MIP的架构与原理、HTTPS等技术进行了深度解析。( https://parg.co/bIZ )

  • Webpack import即将支持异步导入CSS:一个月前Tobias Koppers撰文讨论了Webpack对于CSS处理的考虑,计划将CSS代码与JS同等考虑;即开发者可以利用代码分割插件构建的动态代码块来异步加载CSS代码。而本文则是详细讨论了该方案以及对于未来代码分割、首屏加载可能造成的影响,并且提出了目前状态下基于React Universal ComponentWebpack Flush Chunks可以实现的异步CSS加载方案。( https://parg.co/bI8 )

  • MobX 3.2.0版本发布MobX内置了一些全局状态来辅助追踪与调度Observable或者Reaction,在近日发布的3.2.0版本中,MobX能够自动监测应用内是否存在多个MobX实例,并且给出响应的告警;更多MobX相关资料参考 https://parg.co/bVC 。( https://parg.co/bIk )

开发教程

步步为营,掌握基础技能

  • Styled-Components实战Styled-Components是由Max StoiberGlen Maddern创建的新的CSS-in-JS工具库,能够帮你组织React或者React Native项目中的样式声明。本文则着眼于介绍Styled-Components的设计理念与基本用法,首先介绍了Styled-Components的设计目标,然后介绍了如何使用Styled-Components来创建可复用的组件或者创建全局样式声明。( https://parg.co/bev )

  • React Redux概念与工作流清单:本文包含了一张关于Redux概念与工作流的清单图解以及较为详细地渐进式Redux基础概念介绍。本文首先概述了项目开发中使用Redux的意义以及Redux相关的技术栈,然后介绍了ReudxStore的含义与如何与Immutable协同使用;接下来本文介绍了React Redux应用中组件的层次划分,如何定义使用Action、ActionCreator、Reducer等等;更多Redux相关资料参考 https://parg.co/bVQ 。( https://parg.co/bej )

  • 基于Vue.js 2的分角色权限验证:本文作者因为Vue.js平滑的学习曲线与易于理解的官方文档而倾向于使用Vue.js进行前端开发工作,本文即是作者介绍如何利用Vue.js 2来为项目添加基于角色的权限控制功能。作者在本文中首先介绍了基于角色的权限控制的概念与设计,然后讨论了如何使用vue-cli来构建基础项目架构并且按特征划定目录层次,最后介绍了关键部分的代码实现以及如何使用Vuex来管理应用状态;更多Vue相关资料参考 https://parg.co/byL 。( https://parg.co/bIs )

  • 试用新的Angular HTTP Client:在Angular 4.3.0-rc.0版本在,HTTP Client API得到了极大的改造与提升,本文即是介绍新版本的Angular HTTP Client的用法。在新版本的HTTP Client中,其默认假设以JSON格式进行返回值解析,并且引入了灵活的Interceptor以动态操作请求头或者响应体;同时新版本的HTTP Client API为上传与下载这些耗时操作提供了实时进度反馈回调,以方便开发者进行调试或者反馈给用户。( https://parg.co/bIV )

  • 基于Vue.jsLaravel构建实时仪表盘:本文是来自Spatie的工程师,介绍基于LaravelVue.js构建,实时的队伍与事件信息展示面板的实践总结。本文首先介绍了历史项目的不足以及目前项目的设计考量,然后讨论了前端网格布局的解决方案。接下来作者分别介绍了服务端基于Laravel与客户端基于Vue.js的关键代码的实现;更多Vue相关资料参考 https://parg.co/byL 。( https://parg.co/bIJ )

工程实践

立足实践,提示实际水平

  • 接口安全自检清单:本文涵盖了项目接口在设计、测试与发布阶段应该注意的安全事项。本清单首先阐述了应该使用标准的权限控制方式JWT或者OAuth来替代基础的Basic Auth,然后分别讨论了JWTOAuth的设计要点。接下来本清单还列举了对于接入过滤与防DDoS攻击、使用合适的HTTP方法并且对用户输入进行有效校验、避免关键资源外泄、设置合理的响应头等等内容。( https://github.com/shieldfy/API-Security-Checklist )

  • JavaScript项目开发样式指南:开启新的项目就好像在绿地上肆意撒欢,此时的开发者拥有极大的自由;不过如果缺乏良好的基石,未来的项目维护可能会成为你的梦魇。本文即搜集了来自 Hive 研发团队的JavaScript项目开发指南,涵盖了Git、文档规范、环境变量控制、依赖管理、测试、文件结构与命名、代码样式、日志、API设计等多个方面;更多JavaScript工程实践资料参考 https://parg.co/bIO 。( https://github.com/wearehive/project-guidelines )

  • 大型应用开发中使用Redux的五个建议Redux是非常优秀的应用状态管理工具,单向数据流结构允许开发者专注于业务逻辑的开发。本文作者从自身实践出发总结出了大型项目中Redux的使用建议,包括建立数据索引并且使用选择器来访问数据、将标准状态独立于可变的界面状态与用户编辑状态、在界面之间合理地共享数据、提取公共地Reducer函数以及如何较好地连接React组件与Redux状态树等等;更多Redux相关资料参考 https://parg.co/bVQ 。( https://parg.co/bIi )

  • 前端JavaScript面试问题总结:本文作者发现目前并没有太多令人满意的前端JavaScript面试问题列表,因此他基于自己的面试经历与实践总结出了本文。本文主要包含以下部分,首先是基础概念的认知,譬如对于闭包、EventLoop、REST等概念的介绍;然后是对于编码能力的考量,譬如对于常见的数据结构与算法的实现、代码调试能力与错误定位的评测等等;最后是对于整体系统设计能力的考量,譬如如何设计全栈的Twitter实现架构等等。( https://parg.co/bIL )

深度阅读

深度思考,升华开发智慧

  • 深入React.js内部原理:本系列文章详细介绍了React.js内部工作原理,作者通过调试整个代码库,分析代码执行调用顺序将整个逻辑以流程图方式清晰地展示出来,并且详细介绍了内部实现中使用到的关键概念与方法。本系列文章会包含Stack ReconcilerFiber两个部分,目前完成的Stack Reconciler部分分为十五个小节,包含了从渲染函数调用开始介绍JSX转化为DOM的流程、内部事务处理到组件挂载于与更新流程等等内容;更多React相关资料参考 https://parg.co/bM1 。( https://parg.co/be2 )

  • 利用WebGL释放GPU的计算潜力:随着大数据时代的到来,计算能力日渐成为性能的关键瓶颈之一;而众所周知GPU相较于CPU有着更为强大的计算能力,本系列文章即是介绍如何利用WebGL实现GPGPU(General Purpose Computing on Graphics Processing Units)高性能计算。本系列文章首先讨论了利用WebGL进行GPGPU计算的可行性,然后介绍了具体的实施步骤;主要步骤包括矩阵初始化、矩阵计算、结果回传、条件控制、不稳定性处理、样例实践等几个部分。( https://parg.co/bIQ )

  • Vue直出内存泄露问题的追查实践:近期,作者遇到了Vue直出内存泄露问题,并进行了追查。其项目背景是,作者在一次规模较大的运营活动中正好碰到了内存泄漏的问题,技术背景和业务背景分别如下:技术背景:node直出项目,直出用到了Vue的直出方案;业务背景:一次PV最高达到1400W的运营活动qps的压力下,后期使得服务出现一定错误率。本文将回顾整个追查的实践过程。( https://parg.co/bIN )

  • JavaScript开发中常用的十大数据结构详解:数据结构是软件开发的重要组成部分之一,也是求职面试中常见的主题之一;本文将回顾介绍JavaScript中常用的十大数据结构,并且给出详细的教程与在线实践链接。本文涉及到的数据结构包括链表、栈、队列、集合、映射、哈希表、二叉搜索树、Trie树、二叉堆、图等;更多数据结构与算法相关资料参考 https://parg.co/bIt 。( https://parg.co/bIC )

开源项目

乐于分享,共推前端发展

  • InkInk允许我们以类似于编写React组件的方式编写命令行交互界面,最大的区别在于Ink会将组件渲染为输出到标准控制台的字符串。笔者觉得阅读Ink的源代码也是不错地了解简化版的React内部运行机制的方式,可以了解基本的JSX转换、虚拟DOM渲染与比较、批次更新等内容。( https://github.com/vadimdemedes/ink )

  • real-world-react:本仓库搜集了一系列基于React开发的真实环境下的开源应用代码库,能够帮助初学者从资深开发者的代码中逐步学习了解React;应用涵盖了基于Redux的各种资讯类应用、常见的音乐播放器等等多个方面。( https://github.com/jeromedalbert/real-world-react )

  • icaroicaro是轻量、高效地JavaScript对象观察者实现,能够自动监测JavaScript中对象的变化并且进行相应地譬如DOM更新等操作。icaro使用了大量的ES6的特性,譬如Proxies、WeakMaps、Maps以及Symbols,是非常不错的可以用来学习利用最新的语言特性实现JavaScript响应式框架的开源库。( https://github.com/GianlucaGuarini/icaro )

  • titanictitanic为我们提供了一系列有趣的可变的SVG图标,这些图标能随着用户的点击或者其他操作做出相应地动画反馈。titanic提供的动画图标包括了单选框、邮箱、笑脸等等。( https://github.com/icons8/titanic )

  • formikReact中的表单处理一直是痛点所在,而目前很多的表单处理库添加了太多的抽象,不仅不易于理解而且会造成许多额外的性能损耗。而Formik则提供了简便易用的高阶组件来帮你处理将Props转化为扁平的React状态、自动化字段验证并且进行错误提示、将扁平地React状态转化为接口可用的对象这三个任务。( https://github.com/jaredpalmer/formik )

巅峰人生

前端之巅

前端之巅是InfoQ旗下关注前端技术的垂直社群,加入前端之巅学习群请关注前端之巅公众号后回复“加群”。投稿请发邮件到 editors@cn.infoq.com,注明“前端之巅投稿”。

前端之巅微信底图-5.jpg

上一页
下一页