GithubHelp home page GithubHelp logo

fsd's Issues

第三期:Vue的数据依赖实现原理简析

主要从初始化的数据层面上分析了Vue是如何管理依赖来到达数据的动态响应。
initState的过程中,将props,computed,data等属性通过Object.defineProperty来改造其getter/setter属性,并为每一个响应式属性实例化一个observer观察者。这个observer内部dep记录了这个响应式属性的所有依赖。
当响应式属性调用setter函数时,通过dep.notify()方法去遍历所有的依赖,调用watcher.update()去完成数据的动态响应。

https://segmentfault.com/a/1190000010014281

第六期:iView 一周年了,同时发布了 2.0 正式版

iView 一周年了,同时发布了 2.0 正式版
一周年,两个大版本,很值得称赞的成绩!能跟梁灏这样优秀的前端生态贡献者共事,我感到非常荣幸!
正如标题所言,2.0正式版将会是一个全新的开始,她将随着Vue社区的进步而快速迭代。
期待vue社区和iView能有更好的发展,iView不会止于组件库,更期待iView deign、iView mobile…和更多优秀的开发者参与到开源生态的共建!

第五期:五种事件驱动的API架构

五种事件驱动的API架构
本文会介绍 5 种事件驱动的 API 架构:WebSockets、WebHooks、REST Hooks、Pub-Sub, 以及 Server Sent Events,并分别介绍这几种架构的基础功能、使用方式以及各自的优缺点。
对于 Node.js 开发者来说,我们天生就在使用事件驱动的架构,业界也越来越认可事件驱动架构和异步系统的优势,了解本文介绍的 5 种事件驱动API 架构

第六期:理解 async/await

理解 async/await

async 函数是 Generator 函数的语法糖。使用 关键字 async 来表示,在函数内部使用 await 来表示异步。

想较于 Generator,Async 函数的改进在于下面四点:

  • 内置执行器。

    Generator 函数的执行必须依靠执行器,而 Aysnc 函数自带执行器,调用方式跟普通函数的调用一样

  • 更好的语义。

    async 和 await 相较于 * 和 yield 更加语义化

  • 更广的适用性。

    co 模块约定,yield 命令后面只能是 Thunk 函数或 Promise对象。而 async 函数的 await 命令后面则可以是 Promise 或者 原始类型的值(Number,string,boolean,但这时等同于同步操作)

  • 返回值是 Promise。

    async 函数返回值是 Promise 对象,比 Generator 函数返回的 Iterator 对象方便,可以直接使用 then() 方法进行调用

Javascript模块化编程系列教程共三篇

Edit: 重复提交了,忽略这篇吧。。。
阮一峰的文章最大的好处就是解释的清楚,很多大牛工程师不善表达,自己会但不一定能教得会。
三篇系列文章介绍了:js模块花的基本概念,AMD规范以及require.js的实践

http://www.ruanyifeng.com/blog/2012/10/javascript_module.html
http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html
http://www.ruanyifeng.com/blog/2012/11/require_js.html

第二期:推荐两篇关于浏览器和服务器通信的文章

Server-Sent Events 教程
开发实时web应用的基础协议,基于http协议适用范围更广、性能更好、更轻量。缺点是IE不支持,需要降级为其它方式,但对于一些面向大屏、手机端的应用尤其适合。

WebSocket 教程
相比SSE,WebSocket会更重一些,需要自己实现协议的部分。这两篇文章一起读,就可以很全面的了解现代浏览器和服务器通信技术。

第四期: 《十大经典排序算法》

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等
https://github.com/hustcc/JS-Sorting-Algorithm

第五期:ES6数组的扩展(rest参数和扩展运算符)

ES6的rest参数和扩展运算符
rest参数和扩展运算符都是ES6新增的特性。
rest参数的形式为:...变量名;扩展运算符是三个点(...)。

rest参数

rest参数用于获取函数的多余参数,这样就不需要使用arguments对象了。rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

扩展运算符

扩展运算符可以看做是 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。

console.log(...[1, 2, 3]) // 1 2 3

console.log(1, ...[2, 3, 4], 5) //1 2 3 4 5

第四期:ECharts 统计扩展教程

ECharts 统计扩展教程

ECharts 统计扩展,包含的功能有直方图、聚类、回归、以及常用的汇总统计。通过统计扩展和 ECharts 的结合,可以使大家方便地实现可视分析,也就是将数据分析的结果,通过可视化直观地呈现出来。

第三期:工具推荐

#https://github.com/istanbuljs/nyc
覆盖率工具 istanbul 替换为 nyc,多进程覆盖率的测试速度提升了几倍。都是同一作者的作品,后者目前活跃度高,并支持前端很多新特性。

$ npm i nyc --save-dev
$ ./node_modules/.bin/nyc ./node_modules/.bin/mocha

执行单元测试命令后,还会直观的给出代码覆盖率报告,以Flclover为例:

------------------------------------|----------|----------|----------|----------|----------------|
File                                |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
------------------------------------|----------|----------|----------|----------|----------------|
All files                           |    79.41 |    66.67 |    61.11 |    81.82 |                |
 flclover                           |      100 |      100 |      100 |      100 |                |
  index.js                          |      100 |      100 |      100 |      100 |                |
 flclover/lib                       |    88.52 |    82.35 |    81.82 |    88.52 |                |
  application.js                    |      100 |      100 |      100 |      100 |                |
  flclover.js                       |       30 |        0 |        0 |       30 |... 13,14,17,19 |
 flclover/lib/middleware/bodyparser |      100 |      100 |      100 |      100 |                |
  index.js                          |      100 |      100 |      100 |      100 |                |
 flclover/lib/middleware/logger     |    55.56 |       50 |       50 |    55.56 |                |
  index.js                          |    55.56 |       50 |       50 |    55.56 |... 39,42,45,48 |
 flclover/lib/utils                 |    71.43 |    33.33 |        0 |    83.33 |                |
  index.js                          |    81.25 |    33.33 |        0 |      100 |           7,10 |
  logger.js                         |       40 |      100 |        0 |       40 |         4,9,13 |
------------------------------------|----------|----------|----------|----------|----------------|

第三期:推荐一篇介绍vuex的文章

Vuex 教程
Vuex 类似 Redux 的状态管理器,用来管理Vue的所有组件状态。
一般在你开发大型单页应用(SPA),会出现多个视图组件依赖同一个状态,来自不同视图的行为需要变更同一个状态。
遇到以上情况时候,可以考虑使用Vuex,它能把组件的共享状态抽取出来,当做一个全局单例模式进行管理。这样不管你在何处改变状态,都会通知使用该状态的组件做出相应修改。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.