怎样写一个能同时用于Node和浏览器的JavaScript包

 我来答
育知同创教育
2018-06-28 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
对于浏览器来说,这很简单:我们只需要使用自带的 btoa 函数:
module.exports = function (string) {
return btoa(string);
};

然而在 Node 里并没有 btoa 函数。因此,作为替代,我们需要自己创建一个 Buffer ,然后在上面调用 buffer.toString() :
module.exports = function (string) {
return Buffer.from(string, 'binary').toString('base64');
};

对于一个字符串,这两者都应提供其正确的 base64 编码版本,比如:
var b64encode = require('base64-encode-string');
b64encode('foo'); // Zm9v
b64encode('foobar'); // Zm9vYmFy

现在我们只需要一些方法来检测我们究竟是在浏览器上运行还是在 Node 上,好让我们能保证使用正确的版本。Browserify 和 Webpack 都定义了一个叫 process.browser 的字段,它会返回 true (译者注:即浏览器环境下),然而在 Node 上这个字段返回 false 。所以我们只需要简单地:
if (process.browser) {
module.exports = function (string) {
return btoa(string);
};
} else {
module.exports = function (string) {
return Buffer.from(string, 'binary').toString('base64');
};
}

现在我们只需要把我们的文件命名为 index.js ,键入 npm publish ,我们就完成了,对不对?好的吧,这个方法有效,但不幸的是,这种实现有一个巨大的性能问题。
念冰之d2
2017-09-10 · 超过88用户采纳过TA的回答
知道答主
回答量:161
采纳率:0%
帮助的人:151万
展开全部
对于浏览器来说,这很简单:我们只需要使用自带的 btoa 函数: module.exports = function (string) { return btoa(string); }; 然而在 Node 里并没有 btoa 函数。因此,作为替代,我们需要自己创建一个 Buffer ,然后在上面调用 buffer.toStrin...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式