开发node-validator

“node-validator”,顾名思义,我们要开发的是一个验证字符串合法性的npm模块。

首先我们需要建立一个包的目录:

  1. node-validator
  2. |- lib/
  3. |- test/
  4. |- package.json
  5. |- index.js
  6. |- README.md

由于项目比较简单,可以把所以的代码放在根目录下的index.js中。

不过为了项目的可扩展性,我们会把所有实现代码放在lib文件夹内,这样一来index.js就可以只作为一个入口文件存在:

  1. module.exports = require('./lib');

接下来在lib文件夹中创建一个index.js文件,用以编写我们的模块的「内容」:

  1. module.exports = function () {
  2. console.log('Hello npm!');
  3. };

是的,这就是npm版本的 “Hello, World!””。

这时候可以创建另外一个 JavaScript 文件,然后 require('./lib') 来测试、运行一下刚刚编写的代码。

在 CommonJS 的模块系统中,module.exports 可以输出一个函数,也可以输出一个对象。所以我们可以这样编写lib中的index.js:

  1. module.exports = {
  2. isEmail: function () {},
  3. isAllEnglish: function () {}
  4. };

接下来,就可以开始编写函数体内的正则代码了:

  1. module.exports = {
  2. isEmail: function (str) {
  3. return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(str);
  4. },
  5. isAllEnglish: function (str) {
  6. return /^[a-zA-Z]+$/.test(str);
  7. }
  8. }

那么到了这里,第一个版本的node-validator就已经完工了。

通过 npm link 可以将当前的npm包链接到存放系统中 npm 模块的文件夹。也就是说,当前文件夹的改动会在运行的时候体现出来,所以也是开发npm模块时候的利器。

假设我们在 package.json 文件中将 name 命名为 validator-test,那么就已经可以通过如下代码使用了新鲜出炉的模块了:

  1. var validator = require('validator-test');
  2. validator.isEmail('foo@bar.net'); // true

我们可以不断的在这个对象中添加函数,当然也可以根据不同的类别分成不同的文件模块,通过require的方式构成我们的第一个完整的模块。