随笔分类 - JavaScript相关
摘要:有时候,所见并不是所得,有些包,你需要去翻他的源码才知道为什么会这样。 <! more 背景 今天调试一个程序,用到了一个很久之前的NPM包,名为 "formstream" ,用来将 表单数据转换为流的形式进行接口调用时的数据传递。 这是一个几年前的项目,所以使用的是 +`co`实现的异步流程。 其
阅读全文
摘要:使用 已经有了一段时间,这的确是一个好东西,虽说在使用的过程中也发现了一些 ,不过都是些小问题,所以整体体验还是很不错的。 之所以叫 ,和它的强类型是分不开的,这也是区别于 最关键的一点,类型的声明可以直接写在代码中,也可以单独写一个用来表示类型的描述文件 。 <! more 常用方式 首先在 中是
阅读全文
摘要:适配器设计模式在JavaScript中非常有用,在处理跨浏览器兼容问题、整合多个第三方SDK的调用,都可以看到它的身影。 其实在日常开发中,很多时候会不经意间写出符合某种设计模式的代码,毕竟设计模式就是老前辈们总结提炼出来的一些能够帮助提升开发效率的一些模版,源于日常的开发中。 而 其实在 中应该是
阅读全文
摘要:最近的一段时间一直在搞 ,一个巨硬出品、赋予 语言静态类型和编译的语言。 第一个完全使用 重构的纯 项目已经上线并稳定运行了。 第二个前后端的项目目前也在重构中,关于前端基于 的`TypeScript`套路之前也有提到过: "TypeScript在react项目中的实践" 。 但是这些做完以后也总感
阅读全文
摘要:前段时间有写过一个 "TypeScript在node项目中的实践" 。 在里边有解释了为什么要使用 ,以及在 中的一个项目结构是怎样的。 但是那仅仅是一个纯接口项目,碰巧赶上近期的另一个项目重构也由我来主持,经过上次的实践以后,尝到了 所带来的甜头,毫不犹豫的选择用 +`React`来重构这个项目。
阅读全文
摘要:首先,JavaScript是一个单线程的脚本语言。所以就是说在一行代码执行的过程中,必然不会存在同时执行的另一行代码,就像使用alert()以后进行疯狂console.log,如果没有关闭弹框,控制台是不会显示出一条log信息的。亦或者有些代码执行了大量计算,比方说在前端暴力破解密码之类的鬼操作,这
阅读全文
摘要:接上次挖的坑,对koa2.x相关的源码进行分析 第一篇。不得不说,koa是一个很轻量、很优雅的http框架,尤其是在2.x以后移除了co的引入,使其代码变得更为清晰。 express和koa同为一批人进行开发,与express相比,koa显得非常的迷你。因为express是一个大而全的http框架,
阅读全文
摘要:koa源码阅读[0] Node.js也是写了两三年的时间了,刚开始学习Node的时候,hello world就是创建一个HttpServer,后来在工作中也是经历过Express、Koa1.x、Koa2.x以及最近还在研究的结合着TypeScript的routing-controllers(驱动依然
阅读全文
摘要:TypeScript在node项目中的实践 TypeScript可以理解为是JavaScript的一个超集,也就是说涵盖了所有JavaScript的功能,并在之上有着自己独特的语法。最近的一个新项目开始了TS的踩坑之旅,现分享一些可以借鉴的套路给大家。 为什么选择TS 作为巨硬公司出品的一个静态强类
阅读全文
摘要:最近新开了一个Node项目,采用TypeScript来开发,在数据库及路由管理方面用了不少的装饰器,发觉这的确是一个好东西。装饰器是一个还处于草案中的特性,目前木有直接支持该语法的环境,但是可以通过 babel 之类的进行转换为旧语法来实现效果,所以在TypeScript中,可以放心的使用@Deco
阅读全文
摘要:纯原生的组件化、模块化的一次小小的尝试,用到了如下几个新特性:shadown-DOM 对HTML标签结构的一个封装,真正意义上的组件,能保证 shadow-DOM 中的DOM元素不会被外界影响,内部也不会影响到外部的行为,变成了一个独立的模块。custom-elements 可以在浏览器中注册自定义
阅读全文
摘要:这里安利两款我认为开发中能够极大的提高生产力的工具,Charles 和 Postman。 P.S. Charles(查尔斯)。。不要再读查理斯了,金刚狼中被老铁扎心的博士就叫 CharlesP.P.S. 多图慎点 两者的作用 首先,这两个工具重叠的功能并不多,两者一起使用效果绝对是1 + 1 > 2
阅读全文
摘要:其实浏览器原生模块相关的支持也已经出了一两年了(我第一次知道这个事情实在2016年下半年的时候) 可以抛开webpack直接使用import之类的语法 但因为算是一个比较新的东西,所以现在基本只能自己闹着玩 :p 但这并不能成为不去了解它的借口,还是要体验一下的。 首先是各大浏览器从何时开始支持mo
阅读全文
摘要:这两天针对一个Node项目进行了一波代码层面的优化,从响应时间上看,是一次很显著的提升。一个纯粹给客户端提供接口的服务,没有涉及到页面渲染相关。 背景 首先这个项目是一个几年前的项目了,期间一直在新增需求,导致代码逻辑变得也比较复杂,接口响应时长也在跟着上涨。之前有过一次针对服务器环境方面的优化(n
阅读全文
摘要:Proxy是什么 首先,我们要清楚,Proxy是什么意思,这个单词翻译过来,就是 代理。可以理解为,有一个很火的明星,开通了一个微博账号,这个账号非常活跃,回复粉丝、到处点赞之类的,但可能并不是真的由本人在维护的。而是在背后有一个其他人 or 团队来运营,我们就可以称他们为代理人,因为他们发表的微博
阅读全文
摘要:最近突然想做一些好玩的东西,找来找去,想到了之前曾经在网上看到过有人用box-shadow画了一副蒙娜丽莎出来感觉这个挺有意思,正好趁着周末,自己也搞一波 前言 在线地址: 优化前的版本优化后的版本源码仓库地址 不建议上传大图片。。喜欢听电脑引擎声的除外 首先,并不打算单纯的实现某一张图片(这样太没
阅读全文
摘要:前两年大量的在写Generator+co,用它来写一些类似同步的代码但实际上,Generator并不是被造出来干这个使的,不然也就不会有后来的async、await了Generator是一个可以被暂停的函数,并且何时恢复,由调用方决定希望本文可以帮助你理解Generator究竟是什么,以及怎么用 放
阅读全文
摘要:2018年已经到了5月份,node的4.x版本也已经停止了维护 我司的某个服务也已经切到了8.x,目前正在做koa2.x的迁移 将之前的generator全部替换为async 但是,在替换的过程中,发现一些滥用async导致的时间上的浪费 所以来谈一下,如何优化async代码,更充分的利用异步事件流
阅读全文
摘要:函数默认值是一个很提高鲁棒性的东西(就是让程序更健壮)MDN关于函数默认参数的描述:函数默认参数允许在没有值或undefined被传入时使用默认形参。 ES5 使用逻辑或||来实现 众所周知,在ES5版本中,并没有提供的直接方法供我们我们处理函数默认值所以只能够自己去增强函数的功能,一般会这么来做:
阅读全文
摘要:从Promise开始,JavaScript就在引入新功能,来帮助更简单的方法来处理异步编程,帮助我们远离回调地狱。 Promise是下边要讲的Generator/yield与async/await的基础,希望你已经提前了解了它。 在大概ES6的时代,推出了Generator/yield两个关键字,使
阅读全文