文档说明一旦我的应用程序中包含了underscore.string,该库可以使用 s , __ s 全局变量(http://epeli.github.io/underscore.string/#others)或下划线属性 __。str 或 __。字符串。
这个简单的代码应该正常工作(正确设置配置路径):
require(['underscore','underscore.string'], function(){
console.log(s('test').capitalize().value());
});
但它根本不起作用。这是一个简单的jsfiddle示例。我可能做错了什么,但我无法弄清楚是什么。
https://jsfiddle.net/mvenrtgy/10/
相关的测试代码是:
require.config({
paths: {
'underscore':'https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min',
'underscore.string':'https://cdnjs.cloudflare.com/ajax/libs/underscore.string/3.3.4/underscore.string.min'
}
});
require(['underscore','underscore.string'], function(){
var t = 'This is a simple text I would like to SLUGIFY using unsercore.string';
// underscore is there!
console.log(typeof _)
// now check where underscore.string is...
console.log(typeof _.str);
console.log(typeof _.string);
console.log(typeof s);
console.log(typeof _s);
document.getElementsByTagName('body')[0].innerHTML = '<p>Sample text : ' + t + '</p>';
// this line will cause an error
document.getElementsByTagName('body')[0].innerHTML += '<p><em>Slugified</em> text : ' + s(t).slugify().value() + '</p>';
});
答案 0 :(得分:0)
underscore.string
是一个表现良好的AMD库,因此它不会污染全球空间。您应该更改require
调用,以便获取与正在加载的模块对应的参数:
require(['underscore','underscore.string'], function(_, s){
通过对代码进行此更改,我得到了一些有用的东西。测试的第二行显示为:
Slugified text :这是一个简单的文本,我想要使用unoccore字符串
此外,虽然underscore.string
已作为underscore
扩展程序启动,但它已超出此范围,因此您无法通过_
全局underscore
全局访问它1}}泄漏到全局空间,除非你负责将其与underscore
混合。 documentation表示你可以这样做:
_.mixin(s.exports());
但文档建议不要使用它,因为underscore.string
会干扰underscore
导出的一些基本功能。使用风险自负。