新版本
Node.js 8.5.0版本之后有api方法fs.copyFile 和fs.copyFileSync对文件复制。
旧版本
通过stream进行文件复制:
1 | var fs = require('fs'); |
如果你必须对createReadStream
和 createWriteStream 做错误处理:
1 | function copyFile(source, target, cb) { |
愿有岁月可回首
Node.js 8.5.0版本之后有api方法fs.copyFile 和fs.copyFileSync对文件复制。
通过stream进行文件复制:
1 | var fs = require('fs'); |
如果你必须对createReadStream
和 createWriteStream 做错误处理:
1 | function copyFile(source, target, cb) { |
按照需求填写项目信息即可,注意git repository要跟github上或者其他git仓库匹配。
初始化完成后可以进行开发,开发完成后,开始发布。
通过npm login命令登录,如果未注册请先到网页注册帐号~
必须完成邮箱验证,否则publish的时候会报错。
more >> IE总是有各种稀奇古怪的错误,IE8之后还好点,至少可以dubug。IE6 IE7就是灾难,报错就算了,所谓的error line总是指向莫名奇妙的地方,让人一头雾水。最近在IE7上碰到一个error:“Object doesn’t support this action”,指向的error line竟然是空行,而代码在其他浏览器没有问题。
仔细检查,发现下面这行代码出错了:
1 | for(i = 0, length = currencyMap.length; i < length; i++) |
发现没有用var定义变量,先加上:
more >>最近修改页面排版的一些问题,发现关于内容分词换行有两个主要的CSS:
特别是word-wrap还有个取值break-word,更使得这两个属性容易混淆。
先来看看这两个属性的定义和取值吧:
word-warp:用来表明是否允许长单词内断句而移至下一行。
more >>由于项目要在旧的服务器上面运行,而旧的服务器底层用了Prototype,所以需要解决jQuery和Prototype冲突的问题。
这个还是很好解决的。
1 | jQuery.noConflict() |
而如果不想将原来所有$符号换成jQuery,可以用即时函数包住原来的jQuery代码:
more >>命名空间是通过为项目或库创建一个全局对象,然后将所有功能添加到该全局变量中。通过减少程序中全局变量的数量,实现单全局变量,从而在具有大量函数、对象和其他变量的情况下不会造成全局污染,同时也避免了命名冲突等问题。
然而,在不同的文件中给一个命名空间添加属性的时候,首先要保证这个命名空间是已经存在的,同时不对已有的命名空间造成任何破坏。可以通过非破坏性的命名空间函数实现:
more >>闭包是ECMAScript一个很重要的特征,但是却很难用合适的定义来描述它。虽然闭包很难清晰地描述,但是,却很容易创建,或者说,不小心创建。然而,闭包的存在其实是有一定的潜在问题的。为了避免“不小心”地创建闭包,以及更好地利用闭包的优点,有必要理解闭包的机制。
关于闭包,有太多的定义,特别是有一些定义非常抽象,象这个:
A “closure” is an expression (typically a function) that can have free variables together with an environment that binds those variables.
大致是说闭包是一个表达式,拥有一些自由变量及绑定这些变量的执行环境。这种定义太书面化,反而难以理解。
more >>Javascript中,this是一个非常有用的关键字, this是在运行时基于函数的运行环境绑定的,但是,如果使用的时候不注意,很容易就出错了。
ECMAScript Standard对this的定义看起来非常简单: The this keyword evaluates to the value of the ThisBinding of the current execution context.
其中,对于ThisBinding和execution context, ECMAScript Standard 有另外的详细说明:
more >>在Javascript中,只要创建了一个新函数,就会为该函数创建prototype属性,指向函数的原型对象,Object.prototype是所有对象最顶层的原型。所有对象都继承由Object构造函数创建的原型对象,也就是说,所有的原型对象都继承Object.prototype的属性,而这个原型对象默认有一个constructor属性指向Object构造方法的原型。
默认所有原型对象都会有constructor属性,这个属性包含一个指向prototype属性所在函数的指针。通过构造函数创建实例后,每个实例内部都有一个指针指向函数的prototype对象。Firefox,safari,Chrome中这个指针是proto,可以通过脚本访问。但是在IE中这个属性是不可见的,所以无法在IE中修改proto。同时,这个属性的关联关系是在实例与构造函数的prototope对象之间,而不是实例跟构造函数之间。
more >>首先body添加内边距:
1 | body { |
设置header和footer为fixed:
1 | header { |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true