共计 94 篇文章

"Field提案"是什么东东?

本文是系列文章,包括: "Field提案"是什么东东(本文) 关于废止proposal-class-fields提案的建议 - 在这里 私有属性的实现 - 在这里 No prefix! operator is Ok! - 在这里 (未完待续) 本文是对一份tc39提案的讨论。原有提案:https://github.com/ ...

私有属性的实现

本文是系列文章,包括: "Field提案"是什么东东 - 在这里 关于废止proposal-class-fields提案的建议 - 在这里 私有属性的实现(本文) No prefix! operator is Ok! - 在这里 (未完待续) 本文是对一份tc39提案的讨论。原有提案:https://github.com/ ...

No prefix! operator is Ok!

本文是系列文章,包括: "Field提案"是什么东东 - 在这里 关于废止proposal-class-fields提案的建议 - 在这里 私有属性的实现 - 在这里 No prefix! operator is Ok!(本文) (未完待续) 本文是对一份tc39提案的讨论。原有提案:https://github.com/ ...

元类型系统是对JavaScript内建概念的补充

本文是一个系列,包括: JavaScript的元系统 - 在这里 JavaScript中创建原子的几种方法 - 在这里 元类型系统是对JavaScript内建概念的补充(本文) JavaScript的类型系统一贯是反人类的,以至于JavaScript之父Eich都会跳出来说“我做错了”。但是这并不是说它的整个类型系统就是不可理解的,相反,它提供了观察这门语言的多个不同角度。 远古JavaScript中的类型系统 在远古时期(我是指JavaScript 1.0)中,JavaScript的世界里还并没有“原型”这个东西,而且undefined也是一个奇葩的存在。 ...

JavaScript中创建原子的几种方法

本文是一个系列,包括: JavaScript的元系统 - 在这里 JavaScript中创建原子的几种方法(本文) 元类型系统是对JavaScript内建概念的补充 - 在这里 JavaScript中可以通过Object.create(null)来创建原子,这是非常自然而又易于理解的方式。不过也有一些其它的方法来实现相同的效果,虽然在概念上有所不同,但是它们创建的一样是“原子对象”。 创建原子 使用Object.create() // 方法1 atom = Object.create( ...

JavaScript的元系统

JavaScript的元系统 本文是对在第四届FEDay中分享的《无类继承:JavaScript面向对象的根基》的进一步讨论。也是对开源项目@aimingoo/metameta的解析。 本文是一个系列,包括: JavaScript的元系统(本文) JavaScript中创建原子的几种方法 - 在这里 元类型系统是对JavaScript内建概念的补充 - 在这里 以及相关下载: 资源分享:第四届FEDay讲演主题 - 在这里 ECMAScript中只有两处提及到“Meta”这个概念, ...

手记7:从单人博客到多人博客全程记录

上一篇手记是讲“改造Gitment”的(在这里)。其实这个“改造”花了不少功夫,以至于后来还出了一个给hexo-theme-next的版本。 这是推迟了“做多人博客”的一个原因,另一个原因则是我以前的博文需要更新的太多,花了很多时间。当然,那个叫Monster的项目(在这里)也是花销时间的大户。 所以,结果就是:这篇“手记7”被推迟了很久...很久... 多人博客的功能其实我一早就做出来了——至少,大概的框架是完成了的。 ...

解决静态Blog中timeago显示问题的方法

因为使用的是Ghost博客的静态化页面,因此一篇文章发布到github上的时候显示的“发表于x分钟之前”,那么过了N多天再去看,还是这个“x分钟之前”。极不爽。所以,最近修改了一个timeAgo模块,用来搞定在静态博客中实时地显示timeAgo信息。 在页面中使用的时候也很简单,基本的做法是: // 在页面中添加timeAgo模块 <script src="https://aimingoo.github.io/assets/js/timeAgo.js" ...

手记6:改造Gitment

本文所述的修改请参考我在Fork Gitment项目的基础上改造的Gitmint:Gitmint: a mint on gitment 接下来我们要大力修改Gitment,打造一个『好用那么一点点儿』的博客评论。 11. 改造Gitment 折腾到现在,我们有了一个在Github pages上的博客,以及一个用来写本地博客的Ghost,以及一些相关的工具,例如makesite.sh(在这里)。 最后,我们还有了一个第三方提供的支持PHP+HTTPs的空间,这个空间只用来放Gitment的服务端,并且这个服务器事实上也只做一下API的CORS转发而已。 ...

手记4:谈谈Gitment中泄露secret的前因后果与解决方法

本来我接下来只是想在博客中加上一个支持评论的功能(使用Gitment),然而诸多的尝试之后,我却发现我需要创建一个支持https的web站点…… 这一切的目的,只是使得我们的Gitment有跨域访问的Api接口可用。 8. 问题出在哪里 Gitment(项目)是极棒的一个利用Github Issues来实现博客评论功能的项目,作者(https://imsun.net/)在介绍中特别提到,这种对Issues功能的使用方法是Github团队支持许可的。这也意味着只要你能接受以下两点可能存在的限制/隐患,你就可以长期地使用它: Github真的可能被屏蔽,尽管这种可能性已经越来越小 要发表评论的话必须先注册Github的账号,不过浏览评论是不受限制的 但是使用Gitment是有问题的。 ...

手记3:实例教学之Ghost模板定制

接下来我们聊一下如何定制这个博客的风格。 7. 定制Themes Ghost缺省使用的主题叫casper theme,你可以在博客管理界面Settings -> General -> Themes中找到你当前安装过的全部Themes,并任意激活/删除它们。 有两种方法来安装Themes。第一种是在这个管理界面中选最下面的『Upload A Theme』来上传你下载过的Theme .zip包,第二种是直接将.zip包解压到Ghost安装目录的content/themes/目录下。 我选择的是使用小蘿蔔丁( ...

手记1:迁移博客之全程工具

在这一系列的博客中,我将仔细地记录我搭建这个博客的全部过程、工具,以及诸多技巧。 1. 如何迁移你的博客 - 推荐BlogToWordpress 确实有很多工具来帮助你将历史、陈旧的博客迁到某个地方,而相对来说比较新的做法,就是将博客全文导出,然后按某种格式生成成静态的页面——于是你就有了新的博客站点。 然而事实上并不那么容易——这些工具分种种流派以及不同的实现语言。有幸的是,综合这些尝试,我们可以找到一个较简单而又完整的工具链条:从旧博客转到markdown文件,然后再将markdown导入到新博客中去。 在从旧博客到markdown的转换过程中,还存在一种中间格式,就是标准的Wordpress导出文件格式,这是一种.xml文件。 ...

前端要给力之:语句在JavaScript中的值

这两天在写语言精髓那本书的第三版,讨论到ES6跟ES5中间对“语句的值”的不同处理。正好Weibo上也有同学对这个问题有兴趣,所以专门整理了这篇。 写博客可以啰嗦点,写书就不行了。所以这篇文章跟书上能看到的还是会不一样的。 问题是:语句有值吗? 很不幸,我们面临的的确是一门连语句都有值的语言。在JavaScript中,代码是按语句行(Statement Lists)来解释的,所以eval()本质上还是执行的语句行,例如: eval("1+2+3& ...

确定的世界 - The Promise's World

确定的世界 - The Promise’s World —— Promise的逻辑以及在Lua中的实现 本文基于如下项目(ES6 Promise in lua v1.0.1): https://github.com/aimingoo/Promise 有这样一个世界 有这样的一个世界在持续地向前推进着,这个世界充满着无穷多个选择,也就是说有无穷多的可能;但对每一个选择来说,存在决定/ ...