语义化版本(SemVer)的范围

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

语义化版本格式

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

参与 GitHub 开源项目

GitHub 是一个基于 git 的代码托管平台,越来越多的个人和公司纷纷加入到 Github 的大家族里来,为开源事业尽一份自己的力量。对于个人来讲,把自己的项目托管到 Github 上并不表示你参与了 Github 开源项目,只能说你开源了自己的项目,可以任别人自由下载。那么该如何参与 Github 的开源项目呢?最近自己参与了一个地图插件项目,在此把开源的概念和参与的过程给大家分享一下。

关于项目成员

一般来说,每个项目通常由一个社区来维护,社区又由不同角色的用户组成。

  • Owner:所有者,即创建该项目且在他们 Github 账户上有该项目的用户或组织。
  • Maintainers and Collaborators:维护者和协作者, 致力于一个项目并促进该项目发展的用户。通常所有者和维护者是同一个用户或组织,他们对项目库都有写入的权限。
  • Contributors:贡献者,每一个对该项目发出过 pull request 并合并到项目中的用户都是贡献者。
  • Community Members:社区成员,即那些经常使用且非常关心该项目的用户,他们在讨论功能特征和 pull request 上非常活跃。

继续阅读

JVectorMap 区域名称和聚焦

固定区域名称也是新增的功能,在每个区域的中心位置会展示区域的名字,显示固定名称时,悬浮名字会自动关闭。这需要地图数据的支持(<1.3.1版本数据不支持),目前在dist/assets/data/china目录中的区域数据文件都支持此功能。另外使用转化器转化时(jmap-plus-converter)需要确保shapefile中有名字的经纬度。

聚焦是原本支持的功能,配置中指定需要聚焦的区域名称即可,视图初始化时会自动聚焦指定的区域,然后你可以点击缩放看完整地图。 继续阅读

JVectorMap 路线图

路线图是新增的功能,可以把铁路、高速、国道、省道甚至乡村道路等绘制出来。生成路线数据需要有对应的shapefile,要有路线名字属性。另外如果数据文件较大,可以使用 ArcGis 加以泛化处理或者使用 jmap-plus-converter 配置中的 lineInterval 选项,关于转化器的配置请参考README.md

同标记图一样,制作路线图的步骤为:

  • 增加路线数据或者引入数据文件;
  • 在配置中给 lines 赋值;

继续阅读

Git主要操作详细用法

本文列举了Git中常用操作的详细用法,如果您不太了解Git,请先阅读《Git使用入门》。

原理图

+========+
|        |                                                         +---------+
|        |-----------------------------pull----------------------->|         |
|        |                                                         |         |
|        |                +==========+                             |         |
|        |                |          |                             |         |
| Rmote  |                |          |------------checkout-------->|Workspace|
|        |--fetch/clone-->|          |           +========+        |         |
|        |                |Repository|           |        |        |         |
|        |                |          |<--commit--| Index  |<--add--|         |
|        |<------push-----|          |           |        |        +---------+
+========+                +==========+           +========+

Pull操作

# 将origin这个版本库的代码更新到本地的master主支
$ git pull origin master

# 与merge类似,后面单独解释
$ git pull --rebase

继续阅读

使用 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 插件的一系列处理,最终输出结果文件,一切是那么的简单,并且执行起来非常的快。 继续阅读

使用 Bower 创建包

bower.json

bower.json 中声明了一系列与包有关的内容,它与 NodeJS 的 package.json 或 Ruby 的 Gemfile  非常类似。我们可以使用 bower init 创建 bower.json

$ bower init

bower.json 的规范中的选项,主要包括:

  • name 包名,必选。
  • version 有意义的版本号。
  • main 字符串或者数组,指定主要会用到包里面哪些文件。
  • ignore 数组,一系列文件名或者目录,告诉bower在安装包的时候忽略指定的内容。
  • keywords 字符串数组,推荐添加,主要是帮助用户能够搜索到你的包。
  • dependencies 哈希结构,依赖的包,可以指定版本号,版本号范围参考
  • devDependencies 哈希结构,生产环境下依赖的包,版本号范围参考
  • private 布尔值,设置为true代表你想保持私有,并且将来不会发布它。

继续阅读

JVectorMap 分级统计图

Choropleth map 即分级统计图。在整个制图区域的若干个小的区划单元内(行政区划或者其他区划单位),根据各分区资料的数量(相对)指标进行分级,并用相应色级或不同疏密的晕线,反映各区现象的集中程度或发展水平的分布差别。
分级统计图法可反映布满整个区域的现象(如地貌切割密度)、呈点状分布的现象(如居民点的密度)或线状分布的现象(如河流密度或道路网密度),但较多的是反映呈面状但属分散分布的现象,如反映人口密度、某农作物播种面积的比、人均收入等。此法因常用色级表示,故亦称色级统计图法。

在创建了世界地图后,我们可以使用其他参数改变地图的外观,具体参数描述请参看 JVectorMap API 。

接下来我们将创建一个 choropleth map ,这个例子中我们将会对2010年各个国家的 GDP 信息进行展示。首先我们需要一些数据,可以从 IMF 网站上去下载得到格式为 XLS 的数据文件,然后将之转化为下面的格式,将文件存储为名字为 gdp-data.js 的文件。 继续阅读