drm*_*wer 7 javascript node.js webfont-loader
我有webfontloader在浏览器上下文中很好地工作.现在我试图看看我是否可以在node.js + jsdom上下文中使用它,特别是因为webfontloader可用作npm模块.
我有node + jsdom工作以提供合理的输出,所以我知道这部分正在工作.但是,当我尝试集成webfontloader,以启用Web字体时,我就会失败.
基本上我使用自述文件中记录的webfontloader模块,它是:
var WebFont = require('webfontloader');
WebFont.load({
google: {
families: ['Droid Sans', 'Droid Serif']
}
});
Run Code Online (Sandbox Code Playgroud)
但尽可能尝试,我得到以下错误:
ReferenceError:未定义窗口
我可以window从jsdom 获得一个对象:
// Get the document and window
var doc = jsdom.jsdom('<!doctype html><html><body><div id="container"></div></body></html>'),
win = doc.defaultView;
Run Code Online (Sandbox Code Playgroud)
但是如何传入winwebfontloader以便window在该上下文中使用?
也许我表现出我的天真,并且问不可能.
除非您有充分的理由不这样做,否则我宁愿建议您使用 或 将 webfontloader 加载到jsdom中,可以使用Google 托管库上托管的版本,也可以自己托管。使用它看起来像这样:jsdom.envjsdom.jsdomjsdom.env
var jsdom = require("jsdom");
jsdom.env(
'<!doctype html><html><body></body></html>',
['https://ajax.googleapis.com/ajax/libs/webfont/1.5.18/webfont.js'],
function(err, win) {
var WebFont = win.WebFont;
WebFont.load({
google: {
families: ['Droid Sans', 'Droid Serif']
}
});
}
);
Run Code Online (Sandbox Code Playgroud)
如果您确实需要从 NodeJS 上下文中获取 webfontloader,据我所知,不能将窗口作为参数传递给 webfontloader,但您可以通过向库添加几行来轻松规避此问题。
npm install webfontloadermodule.exports以window对象作为参数的函数中。该文件可能类似于此(不粘贴整个 webfontloader 库源):
module.exports = function(window){
var exportsBackup = module.exports;
/* Web Font Loader v1.6.16 - (c) Adobe Systems, Google. License: Apache 2.0 */
(function(){function aa(a,b,c){r ...
var loaderObject = module.exports;
module.exports = exportsBackup;
return loaderObject;
};
Run Code Online (Sandbox Code Playgroud)
我暂时存储module.exports在一个变量中,以确保我们可以多次以这种方式请求该模块,因为 webfontloader 库将替换该module.exports对象。
您可以像这样要求该库,而不会出现任何错误:
var jsdom = require("jsdom");
jsdom.env( "https://nodejs.org/", [], function(err, win) {
var WebFont = require('webfontloader')(win);
WebFont.load({
google: {
families: ['Droid Sans', 'Droid Serif']
}
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |