语义化版本(SemVer)的范围

在使用 Node.jsBower 的时候,其中的 package.jsonbower.json 都会有 dependenciesdevDependencies 项,对于此前端开 发的童鞋应该会比较熟悉。这里面是运行时和开发时依赖库,其中依赖库对应的版本号有很多种写法,诸如:”~1.0.2“, “^1.0“, “>=1.0.2“等,其实可以猜测这种写法代表了某种范围,至于具体含义本文给大家做详细解释。

语义化版本格式

我们首先简单了解一下语义化版本版本号,标准的版本格式为:X.Y.Z,其中:
X:主版本号,当我们做了不兼容或者颠覆性的更新,修改此版本号。
Y:此版本号,当我们做了向下兼容的功能性修改,修改此版本号。
Z:修订号,当我们做了向下兼容的问题修正,修改此版本号。
其中XYZ必须为非负整数,禁止数字前补零,每个数值都是递增的。 继续阅读

使用 gulp 构建工程

Gulp 是一个基于 nodejs 的流式构建工具,它通过代码优于配置的策略不仅使得任务容易写,并且更加容易阅读和维护。Gulp 使用的 NodeJS 的流,无需在硬盘上写入临时文件和目录,让任务构建更加迅速。

下面是一个 Gulp 配置示例:

gulp.task('sass', function() {
  return gulp.src('src/styles/main.scss')
    .pipe(sass({ style: 'compressed' }))
    .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
    .pipe(gulp.dest('dist/assets/css'))
});

上面这个例子可以看出,main.css 文件像水流一样经过SassAutoprefixer 插件的一系列处理,最终输出结果文件,一切是那么的简单,并且执行起来非常的快。 继续阅读

使用Atom Shell创建跨平台桌面应用程序

1. Atom-shell是什么?

Atom Shell是一套开源的桌面应用构建框架,使用它能够将 HTML + JavaScript + CSS 的程序打包成跨平台的桌面应用程序。它基于node.js Chromium并且已经应用于Atom editor。你可以把它看作是Node.js运行时的变体,但是它关注的是桌面应用而不是WEB服务器。这并不意味着atom-shellJavascript绑定到GUI库,恰恰相反,它把web页面当做了自己的原生界面,因此你可以把它当做是用Javascript控制的Chromium小巧浏览器。

2. 有关浏览器端

如果你有使用Node.js 开发web应用的经验,那么你应该知道有两种Javascript脚本:服务器端和客户端。服务器端Javascript运行在Node.js 运行时上,而客户端运行于浏览器上。

在atom-shell中,也有类似概念:从web页面展示atom-shell的窗口时,就已经有脚本运行在web页面上,并且这些脚本运行在atom-shell运行时,运行时用来创建这些页面。就像Node.js,我们称之为客户端脚本和浏览器端脚本(这意味着浏览器代替了服务器端概念)。

在传统的Node.js应用中,服务器和客户端得通讯一般都是使用web sockets,在atom-shell中,有专门的ipc模块用来做通讯,并且远程模块比较容易支持RPC。 继续阅读