javascript - 如何使用 webpack 添加变量构造函数的原型函数
问题描述
我一直在制作自己的 JS 库,我正在尝试用 webpack 重新制作它。
在我的原始文件中,我将原型函数用于变量构造函数,如下所示:
Date.prototype.fooFunc = function(e){
// return something
};
String.prototype.barFunc = function(e) {
// return something
};
var Library = function(e){
var date = new Date();
this result = date.fooFunc().barfunc();
};
变量构造函数原型函数的代码行变得很长。所以我试图为原型函数制作一个单独的文件。
但我不知道如何在 JS 模块系统中导出预定义变量的属性。我怎样才能穿过它?
解决了
原型.js
if ( typeof Date.prototype.myFunc == undefined ) {
var foo = new Date();
return foo.something();
};
// no export
webpack.config.js
module.exports = (env, options) => {
const config = {
target: 'web',
entry: {
'my-library': [
'./src/prototypes.js',
'./src/index.js'
],
},
output: {
filename: '[name].min.js',
library: 'myLibrary',
libraryTarget: 'var',
libraryExport: 'default',
path: path.resolve(__dirname, 'dist')
},
optimization: {
splitChunks: {
cacheGroups: {
commons: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all'
}
}
}
},
}
return config;
}
解决方案
您不需要导出原型方法。一旦将它们添加到对象中,它们就是对象的组成部分,并且始终可以访问。
您必须在您扩展的对象之后以及在构建过程中的其他地方使用它们之前,将该文件包含在您的原型扩展中。
如果您仅扩展 javascript 原生对象(如 Date 和 Math),请将扩展文件作为构建中的第一个包含。
推荐阅读
- java - AWSIotMqttManager:onFailure:连接失败。MqttException (0) - java.io.IOException: 已经连接
- blockchain - 我可以使用 React 开发 Web 3.0/dapps 吗?
- python-3.x - Python pro 制作抽象类的方法,允许每个子类定义自己的属性,Python3
- java - 如果任何服务失败,则使用 Completable future 调用多个服务,则停止其他服务调用
- ios - 构建特定的通用初始化
- qemu - qemu-system-x86_64: Files\qemu\: 总线=0,单元=0(索引=0)的驱动器存在
- python - 为什么我的代码在读取文件时写了两次
- reactjs - 我一次只能在我的 Reactjs 输入中输入一个字母
- android - 如何模拟驾驶员的运动以检查实时跟踪
- wordpress - Woocommerce 按标签显示评论和评分