写点什么

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

  • 2017-07-10
  • 本文字数:4773 字

    阅读完需:约 16 分钟

新闻热点

国内国外,前端最新动态

开发教程

步步为营,掌握基础技能

  • Styled-Components 实战:Styled-Components 是由 Max Stoiber 与 Glen Maddern 创建的新的 CSS-in-JS 工具库,能够帮你组织 React 或者 React Native 项目中的样式声明。本文则着眼于介绍 Styled-Components 的设计理念与基本用法,首先介绍了 Styled-Components 的设计目标,然后介绍了如何使用 Styled-Components 来创建可复用的组件或者创建全局样式声明。( https://parg.co/bev )
  • React Redux 概念与工作流清单:本文包含了一张关于 Redux 概念与工作流的清单图解以及较为详细地渐进式 Redux 基础概念介绍。本文首先概述了项目开发中使用 Redux 的意义以及 Redux 相关的技术栈,然后介绍了 Reudx 中 Store 的含义与如何与 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.js 与 Laravel 构建实时仪表盘:本文是来自 Spatie 的工程师,介绍基于 Laravel 与 Vue.js 构建,实时的队伍与事件信息展示面板的实践总结。本文首先介绍了历史项目的不足以及目前项目的设计考量,然后讨论了前端网格布局的解决方案。接下来作者分别介绍了服务端基于 Laravel 与客户端基于 Vue.js 的关键代码的实现;更多 Vue 相关资料参考 https://parg.co/byL 。( https://parg.co/bIJ )

工程实践

立足实践,提示实际水平

  • 接口安全自检清单:本文涵盖了项目接口在设计、测试与发布阶段应该注意的安全事项。本清单首先阐述了应该使用标准的权限控制方式 JWT 或者 OAuth 来替代基础的 Basic Auth,然后分别讨论了 JWT 与 OAuth 的设计要点。接下来本清单还列举了对于接入过滤与防 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 )
  • Basement:蚂蚁 Web 研发流程和基础服务实践:在企业级环境下,Web 研发常常会遇到流程冗长繁琐,依赖升级困难等问题;而研发过程中依赖的各种服务,也总有着迥异的申请流程和使用方式,文档匮乏。Basement 作为一个主要面向蚂蚁前端的 Web 应用研发流程和基础服务平台,因其简单易用,在大阿里也有不少用户。
  • 前端 JavaScript 面试问题总结:本文作者发现目前并没有太多令人满意的前端 JavaScript 面试问题列表,因此他基于自己的面试经历与实践总结出了本文。本文主要包含以下部分,首先是基础概念的认知,譬如对于闭包、EventLoop、REST 等概念的介绍;然后是对于编码能力的考量,譬如对于常见的数据结构与算法的实现、代码调试能力与错误定位的评测等等;最后是对于整体系统设计能力的考量,譬如如何设计全栈的 Twitter 实现架构等等。( https://parg.co/bIL )

深度阅读

深度思考,升华开发智慧

  • 深入 React.js 内部原理:本系列文章详细介绍了 React.js 内部工作原理,作者通过调试整个代码库,分析代码执行调用顺序将整个逻辑以流程图方式清晰地展示出来,并且详细介绍了内部实现中使用到的关键概念与方法。本系列文章会包含 Stack Reconciler 与 Fiber 两个部分,目前完成的 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 )

开源项目

乐于分享,共推前端发展

  • Ink :Ink 允许我们以类似于编写 React 组件的方式编写命令行交互界面,最大的区别在于 Ink 会将组件渲染为输出到标准控制台的字符串。笔者觉得阅读 Ink 的源代码也是不错地了解简化版的 React 内部运行机制的方式,可以了解基本的 JSX 转换、虚拟 DOM 渲染与比较、批次更新等内容。( https://github.com/vadimdemedes/ink )
  • real-world-react :本仓库搜集了一系列基于 React 开发的真实环境下的开源应用代码库,能够帮助初学者从资深开发者的代码中逐步学习了解 React;应用涵盖了基于 Redux 的各种资讯类应用、常见的音乐播放器等等多个方面。( https://github.com/jeromedalbert/real-world-react )
  • icaro :icaro 是轻量、高效地 JavaScript 对象观察者实现,能够自动监测 JavaScript 中对象的变化并且进行相应地譬如 DOM 更新等操作。icaro 使用了大量的 ES6 的特性,譬如 Proxies、WeakMaps、Maps 以及 Symbols,是非常不错的可以用来学习利用最新的语言特性实现 JavaScript 响应式框架的开源库。( https://github.com/GianlucaGuarini/icaro )
  • titanic :titanic 为我们提供了一系列有趣的可变的 SVG 图标,这些图标能随着用户的点击或者其他操作做出相应地动画反馈。titanic 提供的动画图标包括了单选框、邮箱、笑脸等等。( https://github.com/icons8/titanic )
  • formik :React 中的表单处理一直是痛点所在,而目前很多的表单处理库添加了太多的抽象,不仅不易于理解而且会造成许多额外的性能损耗。而 Formik 则提供了简便易用的高阶组件来帮你处理将 Props 转化为扁平的 React 状态、自动化字段验证并且进行错误提示、将扁平地 React 状态转化为接口可用的对象这三个任务。( https://github.com/jaredpalmer/formik )

巅峰人生

微软顶级代码女神给年轻程序员的一些宝贵建议:本文是微软公司全球资深副总裁潘正磊(Julia Liuson)女士做客大咖说的视频回顾和要点总结文。

Julia 目前领导微软全球开发平台工程团队,负责 Visual Studio,. NET 开发框架,C# 语言……是担任驱动微软开发工具与开发技术大规模开源化的幕后推手,以及带领全球部门的几千名资深开发者完成迈向 DevOps 的成功转型,让微软从一个三年磨一剑的套装软件公司,成为现在能够在云端上高速迭代交付,与新兴豪杰们匹敌的互联网公司。本文分享了 Julia 的一些观点:面对日新月异的技术,如何学习与取舍?微软从封闭到开源,转变为哪般?程序员跟年龄关系大吗?如何从程序员迈向领导者?女性程序员应该如何看待自己的职业发展?

前端之巅

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


感谢韩婷对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-07-10 19:003210
用户头像

发布了 60 篇内容, 共 17.8 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

涨薪50%,从小厂逆袭,坐上美团L8技术专家(面经+心得)

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

智能时代的轴承与齿轮:工业互联网如何真正“工业化”?

脑极体

用AI走出“沙丘”

脑极体

JavsScript基础篇之函数定义的几种不同方式

你好bk

JavaScript 大前端 数组 html/css

linux之realpath命令

入门小站

Linux

首个沉浸式云原生 Serverless 技术实践营开启报名

阿里巴巴云原生

阿里云 Serverless 云原生 KubeMeet 线下活动

黄峥、张一鸣、李斌都曾上榜!100个未来独角兽:超越估值看见星辰大海

创业邦

函数计算 GB 镜像秒级启动:下一代软硬件架构协同优化揭秘

阿里巴巴云原生

阿里云 云原生 函数计算

区块链如何赋能农村金融服务?

CECBC

[Pulsar] 一个消息的生命历程(二)——Batch和消息重复处理

Zike Yang

Apache Pulsar 11月日更

JavaScript 数组方法 splice() 的 3 个示例

devpoint

JavaScript splice 11月日更

干掉 XML Mapper,新出的 Fluent Mybatis 真香

AI乔治

Java sql 架构 mybatis

如何使用FL Studio效果器制作镶边音效

懒得勤快

NodeJs深入浅出之旅:理解Buffer 🐰

空城机

大前端 Node 11月日更

官方:陆续清退比特币“矿场”

CECBC

能耗能源管控平台开发,能源管理云平台搭建

电微13828808271

22 K8S之ConfigMap配置

穿过生命散发芬芳

k8s 11月日更

【死磕Java并发】-----J.U.C之AQS:CLH同步队列

chenssy

11月日更 死磕 Java 死磕 Java 并发

圆梦腾讯之路!6面阿里、5面字节、4面腾讯,终斩腾讯Offer

热爱java的分享家

Java 架构 面试 编程语言 经验分享

三顾茅庐,七面阿里,25k*16offer,还原我的大厂面经

热爱java的分享家

Java 程序人生 编程语言 经验分享 大厂面试

声网Agora 实时音视频服务正式上线 HTC VIVE Sync App,支持非 VR 用户

声网

人工智能 音视频 vr

在线数值列表求和工具

入门小站

工具

您有一份阿里云云原生直播攻略待查收

阿里巴巴云原生

阿里云 Kubernetes 云原生 线下活动

啥是ElasticSearch全流程,看这篇我也懂了

热爱java的分享家

Java 程序人生 编程语言 经验分享 ES

Prometheus Exporter (七)ClickHouse Exporter

耳东@Erdong

Prometheus exporter 11月日更 ClickHouse Exporter

互联网+质量基础设施服务平台,NQI一站式线上平台开发

电微13828808271

90后女博士谈反内卷,称科研不应攀比论文数,“唯论文论”何时休?

百度开发者中心

开发者 内卷化

12.04 深圳站 | Serverless Developer Meetup 开放报名啦!

阿里巴巴云原生

阿里云 Serverless 云原生 深圳 线下活动

在Vue项目里使用ECharts图标库

石云升

Vue 学习笔记 11月日更 Echar

spring的默认事务传播是什么?

卢卡多多

Spring Framework 事务传播行为 11月日更

Python Qt GUI设计:QLineEdit和QTextEdit文本框类(基础篇—13)

不脱发的程序猿

PyQt GUI设计 Python Qt QLineEdit QTextEdit

前端每周清单第 21 期:JS 项目开发样式指南;基于 Vue 的分角色权限验证;深入 React.js 内部原理_语言 & 开发_王下邀月熊_InfoQ精选文章