随笔笔记01

1. npm与bower的区别

npm 和bower 的最大区别,就是 npm 支持嵌套的依赖管理,而 bower只能支持扁平的依赖(嵌套的依赖,由程序员自己解决)。
现在不建议使用bower了。官方已经停止维护,建议直接使用npm就可以了。

2. gulp有无return的区别

依据gulp官方文档,gulp的task方法是按最大并发执行的,也就是说所有的task都会同时执行,而对于依赖于其他任务的异步task来说,就需要一个通知来告知该什么时候执行。故需要一个return。

gulp.task('js', ['css'], function() {
  // 做一些事
});
// js这个异步任务就需要css任务执行完毕后给一个提示,可以为如下3种方式
// 1.返回一个stream,就是直接return的方式
gulp.task('css', function() {
  var stream = gulp.src('client/**/*.css')
    .pipe(gulp.dest('build'));
  return stream;
});
// 2. 返回一个promise
gulp.task('css', function() {
  var deferred = Q.defer();
  // 执行异步的操作
  setTimeout(function() {
    deferred.resolve();
  }, 1);
  return deferred.promise;
});
// 3. 执行一个回调
gulp.task('css', function(cb) {
  exec('jekyll build', function(err) {
    if (err) return cb(err); // 返回 error
    cb(); // 完成 task
  });
});