IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 轻松拥有属于自己的包 -> 正文阅读

[JavaScript知识库]轻松拥有属于自己的包

什么是包?

Node.js 中的第三方模块又叫做包

为什么需要包?

  1. 由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块进行项目开发的时,效率很低

  2. 包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率

  3. 包和内置模块之间的关系,类似于 jQuery 和 浏览器内置 API 之间的关系

包的分类:

项目包: 用require引入使用,被安装到项目的 node_modules 目录中的包.

项目包分为:

1.开发依赖包 :只在开发期间会用到 ;记录在devDependencies 节点

2.核心依赖包(生产依赖包):在开发期间和项目上线之后都会用到;记录在dependencies 节点

全局包: 通过命令行的方式存在,只有工具性质的包,才有全局安装的必要性。

npm root -g  // 查看包安装在哪里,如何被使用

接下来,我们来开发属于自己的包.实现的功能有 格式化日期,转移 HTML 中的特殊字符,还原 HTML 中的特殊字符.

轻松拥有属于自己的包

一个规范的包,它的组成结构,必须符合以下 3 点要求:

1.必须以单独的目录而存在(一个包一个文件夹);

2.包的顶级目录下要必须包含 package.json;

package.json中必须包含name(名字),version(版本号),main` (包的入口) 这三个属性;

第一步:初始化包的基础结构

  1. 新建 itheima-tools 文件夹,作为包的根目录

  2. itheima-tools 文件夹中,新建如下三个文件:

    • package.json (包管理配置文件)

    • index.js (包的入口文件)

    • README.md (包的说明文档)

第二步:初始化 package.json 配置文件

npm init -y 
// 快速创建package.json

第三步:在 index.js 中定义要实现的功能的方法

// 包的入口文件 index.js
?
// 定义格式化时间的函数
function dateFormat (dateStr) {
  const dt = new Date(dateStr)
?
  const y = padZero(dt.getFullYear())
  const m = padZero(dt.getMonth() + 1)
  const d = padZero(dt.getDate())
?
  const hh = padZero(dt.getHours())
  const mm = padZero(dt.getMinutes())
  const ss = padZero(dt.getSeconds())
?
  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
?
// 定义一个补零的函数
function padZero (n) {
  return n > 9 ? n : '0' + n
}
?
// 向外暴露需要的成员
module.exports = {
  dateFormat
}
?测试代码能否正常运行
// 测试代码
?
const itheima = require('./flightloong-tools/index')
?
// 格式化时间的代码
const dtStr = itheima.dateFormat(new Date())
console.log(dtStr) // 2020-06-23 01:16:57

index.js 中定义转义 HTML 的方法

// index.js
// 定义转义 HTML 字符的函数
function htmlEscape(htmlstr) {
  return htmlstr.replace(/<|>|"|&/g, match => {
 ?  switch (match) {
 ? ?  case '<':
 ? ? ?  return '&glt;'
 ? ?  case '>':
 ? ? ?  return '&gt;'
 ? ?  case '"':
 ? ? ?  return '&quot;'
 ? ?  case '&':
 ? ? ?  return '&amp;'
 ?  }
  })
}
// test.js
?
const itheima = require('./flightloong-tools/index')
?
// 转义 Html 字符串
const htmlStr = '<h4 title="abc">这是h4标签<span>123&nbsp;</span></h4>'
const str = itheima.htmlEscape(htmlStr)
console.log(str)

index.js 中定义还原 HTML 的方法

// 定义还原 HTML 字符的函数
function htmlUnEscape(str) {
  return str.replace(/&glt;|&gt;|&quot;|&amp;/g, (match) => {
 ?  switch (match) {
 ? ?  case '&glt;':
 ? ? ?  return '<'
 ? ?  case '&gt;':
 ? ? ?  return '>'
 ? ?  case '&quot;':
 ? ? ?  return '"'
 ? ?  case '&amp;':
 ? ? ?  return '&'
 ?  }
  })
}
// 还原 Html 字符串
const resetHtml = itheima.htmlUnEscape(str)
console.log(resetHtml)

第四步:划分不同的模块

  1. 将格式化时间的功能,拆分到 src -> dateFormat.js

  2. 将处理 HTML 字符串的功能,拆分到 src -> htmlEscape.js

  3. index.js 中,导入两个模块,得到需要向外共享的方法

  4. index.js 中,使用 module.exports 把对应的方法共享出去

第五步:编写包的说明文档

README 文件中具体写什么内容,没有强制性的要求;只要能够清晰地把包的作用、用法、注意事项等描述清楚即可

我们现在所创建的这个包的 README.md文档中,会包含以下 6 项内容

  • 安装方式

  • 导入方式

  • 格式化时间

  • 转义 HTML 中的特殊字符

  • 还原 HTML 中的特殊字符

  • 开源协议

### 安装
```
npm i flightloong-tools
```
?
### 导入
```js
const itheima = require('./flightloong-tools')
```
?
### 格式化时间
```js
// 调用 dateFormat 对时间进行格式化
const dtStr = itheima.dateFormat(new Date())
// 结果  2020-04-03 17:20:58
console.log(dtStr)
```
?
### 转义 HTML 中的特殊字符
```js
// 带转换的 HTML 字符串
const htmlStr = '<h1 title="abc">这是h1标签<span>123&nbsp;</span></h1>'
// 调用 htmlEscape 方法进行转换
const str = itheima.htmlEscape(htmlStr)
// 转换的结果 &lt;h1 title=&quot;abc&quot;&gt;这是h1标签&lt;span&gt;123&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
console.log(str)
```
?
### 还原 HTML 中的特殊字符
```js
// 待还原的 HTML 字符串
const str2 = itheima.htmlUnEscape(str)
// 输出的结果 <h1 title="abc">这是h1标签<span>123&nbsp;</span></h1>
console.log(str2)
```
?
### 开源协议
ISC

第六步:注册 npm 账号(已经有npm账号可以跳过这一步)

  1. 访问 (npm ) 网站,点击 sign up 按钮,进入注册用户界面

  2. 填写账号相关的信息:Full NamePublic EmailUsernamePassword

  3. 点击 Create an Account 按钮,注册账号

  4. 登录邮箱,点击验证链接,进行账号的验证

第七步:登录 npm 账号

注意:在运行 npm login 命令之前,必须先把下包的服务器地址切换为 npm 的官方服务器。否则会导致发布包失败!

// 查看当前镜像地址
nrm ls 
// 切换到npm 
nrm use npm

npm 账号注册完成后,可以在终端中执行 npm login 命令,依次输入用户名、密码、邮箱后,即可登录成功

第八步: 把包发布到 npm

将终端切换到包的根目录之后,运行 npm publish 命令,即可将包发布到 npm 上(注意:包名不能雷同)

拓展: 删除已发布的包

运行 下面的命令,即可从 npm 删除已发布的包

npm unpublish 包名 --force 

注意事项

  • npm unpublish 命令只能删除 72 小时以内发布的包

  • npm unpublish 删除的包,在 24 小时内不允许重复发布

  • 发布包的时候要慎重,尽量不要往 npm 上发布没有意义的包!

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:42:45  更:2021-10-08 11:44:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 23:54:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码