今天想到js本身是弱类型,在实际项目中很多时候需要数据类型检测。于是打算做一个判断数据类型的js插件,发布到npm上面。

基本思路:

1,输入参数,便返回数据类型,所有数据类型如下

   '[object String]': 'string',
"[object Boolean]": "boolean",
"[object Number]": 'number',
"[object Null]": 'null',
"[object Undefined]": "undefined",
"[object Array]": 'array',
'[object Object]': 'object',
'[object Set]': 'set',
'[object Map]': 'map',
'[object Symbol]':'symbol',
'[object Function]':'function',
'[object RegExp]':'regExp',
'[object Window]':'window',
'NaN':'NaN'

使用的判断方法:Object.prototype.toString.call()

2,利用webpack作为工程化工具,webpack.config.js

var path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); var config = {
mode: 'development',
entry: [
path.resolve(__dirname, './src/example.js')
],
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
libraryTarget: "umd", //一套完整的规范 cmd amd
},
devServer: {
contentBase: './dist'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
},
plugins: [
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}) ],
optimization: {
minimize: true, minimizer: [
new UglifyJsPlugin({
test: /\.js(\?.*)?$/i,
}),
],
}
}; module.exports = config;

package.js

{
"name": "zhen-check",
"version": "1.4.0",
"description": "check type of data ",
"main": "src/index.js", // 注意这里是index的路径不要写为index.js
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack-dev-server --inline --progress --config webpack.config.js",
"prod": "webpack --config webpack.config.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"babel-core": "^6.26.3",
"babel-loader": "^8.0.6",
"babel-preset-env": "^1.7.0",
"html-webpack-plugin": "^3.2.0",
"uglifyjs-webpack-plugin": "^2.1.3",
"webpack": "^4.35.0",
"webpack-cli": "^3.3.5",
"webpack-dev-server": "^3.7.2",
"zhen-check": "^1.4.0"
}
}

然后,利用在命令行工具使用npm adduser 输出登录的账号和密码,然后使用npm publish发布。

以上完成。

开发过程中有几个注意事项:

1,之所以可以通过import的方式引入,是通过package.js文件的main连接的,所以main后面要写插件的导出文件

2,webpack.config.js配置文件里面,output的配置

  output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
libraryTarget: "umd", //一套完整的规范 cmd amd
}
libraryTarget 配置为umd。允许amd,cmd规则引入

 

发布js插件zhen-chek(用来检测数据类型)到npm上的更多相关文章

  1. ajaxfileupload.js插件结合一般处理文件实现Ajax无刷新上传

    先上几张图更直观展示一下要实现的功能.本功能主要通过Jquery ajaxfileupload.js插件结合ajaxUpFile.ashx一般应用程序处理文件实现Ajax无刷新上传功能,结合NPOI2 ...

  2. bootstrap实现 手机端滑动效果,滑动到下一页,jgestures.js插件

    bootstrap能否实现 手机端滑动效果,滑动到下一页 jgestures.js插件可以解决,只需要引入一个JS文件<script src="js/jgestures.min.js& ...

  3. Bootstrap transition.js 插件

    Bootstrap transition.js 插件详解   Bootstrap 自带的 JavaScript 插件的动画效果几乎都是使用 CSS 过渡实现的,而其中的 transition.js 就 ...

  4. Bootstrap入门(二十五)JS插件2:过渡效果

    Bootstrap入门(二十五)JS插件2:过渡效果 对于简单的过渡效果,只需将 transition.js 和其它 JS 文件一起引入即可.如果你使用的是编译(或压缩)版的bootstrap.js  ...

  5. 前端开发需要了解的JS插件

    excanvas.js/Chart.js/cubism.js/d3.js/dc.js/dx.chartjs.js/echarts.js/flot.js 用途:构建数据统计图表,兼容多浏览器 jquer ...

  6. 原生JS插件(超详细)

    作为一个前端er,如果不会写一个小插件,都不好意思说自己是混前端界的.写还不能依赖jquery之类的工具库,否则装得不够高端.那么,如何才能装起来让自己看起来逼格更高呢?当然是利用js纯原生的写法啦. ...

  7. 如何定义一个高逼格的原生JS插件

    插件的需求 我们写代码,并不是所有的业务或者逻辑代码都要抽出来复用.首先,我们得看一下是否需要将一部分经常重复的代码抽象出来,写到一个单独的文件中为以后再次使用.再看一下我们的业务逻辑是否可以为团队服 ...

  8. vue封装插件并发布到npm上

    vue封装插件并发布到npm上 项目初始化 首先,要创建项目,封装vue的插件用webpack-simple很合适,vue init webpack-simple 项目名称此命令创建我们的项目的目录, ...

  9. jQuery 关于ajaxfileupload.js插件的逐步解析(ajaxfileupload.js第二弹)

    如果你看了上一篇<ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)>的话,应该就知道我是逼不得已要认真学 ...

随机推荐

  1. MongoDB divide 使用之mongotempalte divide

    需求:求一组数的两个字段计算结果的平均值 如有一组这样的数: 列名1 列名2 列名3 第一组数   a       2       5 第二组数   b       4       8 按照列名1分组 ...

  2. 【转】Delphi货币类型转中文大写金额

    unit TU2.Helper.Currency; interface ): string; ): string; implementation uses System.SysUtils, Syste ...

  3. 阿里P8架构师总结Java并发面试题(精选)

    一.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一 ...

  4. Junit5常用注解

    0. IDEA中Maven项目测试类的新建方法 a. 如图在src目录下新建文件夹test b. 鼠标右键test,将该文件设置成test source c. 右键需要新建的测试类,如下图操作,选中T ...

  5. 《设计模式之美》 <02>评判代码质量好坏的维度

    如何评价代码质量的高低? 实际上,咱们平时嘴中常说的“好”和“烂”,是对代码质量的一种描述.“好”笼统地表示代码质量高,“烂”笼统地表示代码质量低.对于代码质量的描述,除了“好”“烂”这样比较简单粗暴 ...

  6. 多线程模块的同步机制event对象

    多线程模块的同步机制event对象 线程的核心特征就是他们能够以非确定的方式(即何时开始执行,何时被打断,何时恢复完全由操作系统来调度管理,这是用户和程序员无法确定的)独立执行的,如果程序中有其他线程 ...

  7. 05_Hive分区总结

    2.1.创建分区表并将本地文件的数据加载到分区表: 使用下面的命令来创建一个带分区的表 通过partitioned by(country string)关键字声明该表是分区表,且分区字段不能为crea ...

  8. java——maven依赖版本冲突

    博客:maven依赖jar包时版本冲突的解决

  9. PyTorch 启程&拾遗

    1..Tensors are similar to NumPy’s ndarrays, with the addition being that Tensors can also be used on ...

  10. oppo面经-java开发

    Oppo一面(1)自我简介(2)介绍一个自己做过的最得意的项目,项目的细节,难点,怎么解决的,还存在的问题,有什么优化的想法吗(这个我说了很长时间,面试官说非计算机专业的,有这种实习经验确实能加分)( ...