Leaflet具有强大的插件生态系统。Leaflet插件页面列出了几十个很好的插件,并且每周都有很多插件加入插件资源库中供用户使用。
用户根据一定的标准规范完成插件的功能和相关文件说明,然后上传文件,通过审核后即可正式完成插件的发布。Leaflet插件发布的流程如图所示。
图Leaflet插件发布的流程
Leaflet插件规范(准备文件)
Leaflet插件的开发和发布,需要遵循1. Leaflet插件规范(准备文件)
Leaflet插件的开发和发布,需要遵循些质量标准和扩展规范。
(1)演示文件。
• 存储。Leaflet插件的存储位置是一个单独的GitHub库。
• 命名。插件命名形式为Leaflet.MyPluginName,也可以使用其他形式(如leaflet-my-plugin-name),只要确保在名称中包含Leaflet一词,就可以清楚地看到它是一个Leaflet插件。
• 实例文件。在发布插件的文件中要包含一个demo文件。因为,人们在寻找插件时,会先浏览这个插件的实例文件。演示最简单的方法是使用GitHub页面,最好在存储库中创建一个GitHub页面分支并向它添加一个index.html页面。
• 自述文件。需要建立一个README.md(或者链接一个内容相似的网站),最低限度应该包含以下事项:插件名称、一个简单简洁的描述、要求(版本、其他外部依赖项、浏览器或设备兼容性)、演示的链接、插件说明、简单实例代码。
• 许可文件。每个开源存储库都应该包含许可文件,如MIT License和BSD 2-Clause License。
(2)代码。
• 文件结构。保持文件结构干净、简单,这样能够使其他用户很容易阅读你的插件文件,进行快速学习。一个最基本的插件文件结构代码如下:
一个比较复杂的插件文件结构代码如下:
• 代码约定。每个人都有不同的习惯,但编写的代码要符合人们的阅读习惯。
• API插件。不要在插件中公开全局变量。如果有一个新类,则直接把它放在L命名空间(L.MyPlugin)中。如果继承了一个现有类,则使其成为子属性(L.TileLayer.Banana)。每个类都应该用驼峰式命名法进行命名,如L.TileLayer.Banana。如果想要给现有的Leaflet类添加新的方法,则可以这样做L.Marker.include({myPlugin: …})。
函数、方法、属性和工厂名称应该使用驼峰式命名。类名字母大写应该遵循驼峰式命名规则。
如果函数中有很多参数,则考虑定义一个参数对象(在可能的情况下设置默认值,这样用户就不需要指定所有的值),代码如下:
(3)NPM发布。NPM(节点打包模块)是JavaScript的包管理器和代码存储库。在NPM上发布模块允许其他用户快速查找和安装插件,以及其他依赖于插件的插件。NPM有一个优秀的开发者指南来帮助用户完成这个过程。当用户发布插件时,就在package.json文件中添加一个依赖于Leaflet的依赖项。当用户安装软件时,Leaflet将会被自动安装。
下面是一个package.json文件,用于描述一个Leaflet插件,代码如下:
(4)模块加载程序。模块加载程序(RequireJS和Browserify)实现了模块系统,如AMD(Asynchronous Module Definition)模块和CommonJS模块,以允许用户模块化加载代码。通过遵循基于通用模块定义的模式,可以将对AMD模块和CommonJS模块加载程序的支持添加到Leaflet插件中,代码如下:
现在,插件可以作为AMD模块和CommonJS模块使用,并且可以用于RequireJS和Browserify的模块加载程序中。
2. Leaflet插件上传(上传文件)
当插件发布成功后,该插件会在Leaflet官网的插件列表中显示出来。发布一个Leaflet插件的步骤如下。
(1)获取Leaflet存储库。
(2)确认类别:在docs/plugins.md文件中,找到插件应该插入的部分,添加与插件相关的信息和链接。
(3)提交代码。
(4)通过审核。
一旦提交请求,Leaflet维护者将快速查看用户的插件。如果上传的Leaflet插件符合规范要求,则会很快通过审核,提示插件上传成功。