开发自己的包----(实现自己需要的功能-格式化日期-转义HTML中的特殊字符-还原HTML中的特殊字符---1)

这篇博客介绍了如何创建一个Node.js模块,包含格式化日期、HTML转义和还原HTML字符的功能。首先,定义了package.json文件,包括包名、版本、入口文件和描述。接着,实现了格式化日期的函数,使用padZero辅助函数补零。然后,定义了htmlEscape和htmlUnEscape函数,分别用于HTML特殊字符的转义和还原。最后,讨论了模块拆分以优化代码组织。
摘要由CSDN通过智能技术生成

首先明确你需要开发包的功能:

例如:需要实现的功能

  • 格式化日期
  • 转义HTML中的特殊字符——防止在用户在提交表单中使用html标签
  • 还原HTML中的特殊字符

新建文件夹,作为包的根目录

在根文件中新建3个文件:

  •  package.json——包管理配置文件--版本信息、等
  • index.js——包的入口文件--实际用户导入的文件
  • README.md——包的说明文档

package.json包管理配置文件中的内容 

        name——表示我们包的名称(不能重复 要进行检索),在别人使用npm下载时候使用,去官网进行检查看你取的名字有没有被占用

        version——默认初始时1.0.0开始

        main——指定包的入口文件,外界使用require导入包的时候使用的是main属性来指定包的入口        

        description——描述信息,在用户在官网中搜索包的时候,就会出现的提示信息

 keywords——关键字,里面保存的是数组,数组里面的每个内容都是字符串,可以自定义

license——协议    ISC是开源许可协议,当然还有很多的协议,大家可以自行查找npm的协议

{
    "name": "zjj",
    "version": "1.0.0",
    "main": "index.js",
    "description": "格式化日期\\转义HTML中的特殊字符\\还原HTML中的特殊字符",
    "keywords": ["z","zj","zjj"],
    "license": "ISC"
   
}

开始写格式化时间的函数index.js——功能一

//这是包的入口文件

//定义格式化时间的函数

function dateFormat(DateStr){//定义方法 接收时间的字符串
    const dt=new Date(DateStr);
    const y=dt.getFullYear();//年 月

    const m=padZero(dt.getMonth()+1);//getMonth输出的是0-11的月份,对应的要进行相加
    const d=padZero(dt.getDate());//
    const h=padZero(dt.getHours());
    const min=padZero(dt.getMinutes());
    const s=padZero(dt.getSeconds());


    return `格式化时间:${y}-${m}-${d} ${h}:${min}:${s}`

}
//定义补零的函数
function padZero(n){//接收数字n
    return  n>9 ? n : '0'+ n;//时间=1-01
  
  }

//向外暴露需要的成员
  module.exports={
    dateFormat//将方法导出
}

之后进行 require导入模块测试-

 当require直接导入文件夹的时候也直接显示,不需要完整路径是为什么,是因为当require导入的时候没有具体文件,require就会查找目录中有木有package.json包管理配置文件,有了就会去查找有没有指定main属性,就会查找main属性导入文件夹下的文件


定义转义html的方法——功能二

传入htm字符串 将对应的html标签转换成为对应的输出

 g 全局匹配 正则的规则:/正则表达式/修饰符

将特殊字符转义成实体字符


//定义转义html的方法 传入htm字符串 将对应的html标签转换成为对应的输出  g 全局匹配 正则
function htmlEscape(htmlStr){//<h1>你好</h1> 显示直接 而不是html代码
    // /正则表达式/修饰符
    return '转义之后的字符:'+htmlStr.replace(/<|>|"|&/g,(match)=>{ //识别出<>  ""  和&
         //回调的结果
        switch(match){ //将特殊字符转义成实体字符
            case '<':
                return '&lt;'
            case '>':
                    return '&gt;'

            case '"':
                return '&quot;'
            case '&':
                return '&amp;'

        }
    })
   
}
//向外暴露需要的成员
module.exports={
    dateFormat ,//将方法导出
    htmlEscape
}

 


 还原html字符串的函数

function htmlUnEscape(str){//进行正则的匹配
    return str.replace(/&lt;|&gt;|&quot;|&amp;/g,(match)=>{
   //回调的结果
   switch(match){ //将特殊字符转义成实体字符
    case '&lt;':
        return '<'
    case '&gt;':
            return '>'

    case '&quot;':
        return '"'
    case '&amp;':
        return '&'

}
    })

}

 


整体的功能全部在index.js中 显示的很臃肿 ,所以在给npm上传的时候需要进行模块拆分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值