有两种方式
一、npm-util
先安装
npm install umd-util
安装完后,我们写一个js module保存为src/foo.js
'use strict';开始编译成umd格式
function Foo() {}
const umdify = require('umd-util');好了,在dist目录中会多一个foo.js的文件,我们打开看看
umdify.sync('src/foo.js', {
destination: 'dist'
});
(function(root, factory) {你们看已经编译成umd的格式了。
if (typeof define === 'function' && define.amd) {
define([], factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.Foo = factory();
}
}(this, function() {
'use strict';
function Foo() {}
return Foo;
}));
高级用法请参看https://www.npmjs.com/package/umd-util
二、webpack
先安装webpack和webpack-cli
npm install webpack webpack-cli --save-dev
创建一个项目 npm init,打开package.json,可以看到下面的依赖。
{编写一个module模块为 src/add.js
"devDependencies": {
"webpack": "^5.36.2",
"webpack-cli": "^4.6.0"
}
}
// src/add.js修改webpack.config.js配置文件
module.exports = function add(a, b) {
return a + b;
};
// webpack.config.js使用webpack来编译一下
module.exports = {
entry: './src/add.js',
output: {
filename: 'add.js',
library: {
type: 'umd',
name: 'add',
},
// prevent error: `Uncaught ReferenceError: self is not define`
globalObject: 'this',
},
};
npx webpack输出提示
asset add.js 399 bytes [compared for emit] [minimized] (name: main)我看看模块的目录结构
./src/add.js 57 bytes [built] [code generated]
tree -I node_modules
.
├── dist
│ └── add.js
├── package.json
└── src
└── index.js
2 directories, 3 files
在dist目录中已经生成了add.js了
我们先用commonjs来调用这个模块试试
node
> const add = require('./dist/add');
> add(1, 2);
再使用AMD在浏览器中运行试试
<!-- amd.html -->
<h1></h1>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js"></script>
<script>
window.requirejs(['dist/add'], function (add) {
document.querySelector('h1').innerText = add(1, 2);
});
</script>
ok,在nodejs中和浏览器中都能运行了。
参考文章:https://remarkablemark.org/blog/2016/09/22/webpack-build-umd/#commonjs
网友回复
python如何调用openai的api实现知识讲解类动画讲解视频的合成?
html如何直接调用openai的api实现海报可视化设计及文本描述生成可编辑海报?
f12前端调试如何找出按钮点击事件触发的那段代码进行调试?
abcjs如何将曲谱播放后导出mid和wav格式音频下载?
python如何将曲子文本生成音乐mp3或wav、mid文件
python中mp3、wav音乐如何转成mid格式?
js在HTML中如何将曲谱生成音乐在线播放并下载本地?
python如何实现在windows上通过键盘来模拟鼠标操作?
python如何给win10电脑增加文件或文件夹右键自定义菜单?
python如何将音乐mp3文件解析获取曲调数据?