我正在使用webpack捆绑一个供第三方使用的框架.该框架应该公开多个ES6类.以模块化方式构建,我为每个文件编写了一个类.我想要做的是将所有这些文件一起构建,并将它们捆绑在给定的"命名空间"下.例:
apples.js export class Apples {...}
oranges.jsexport class Oranges {...}
webpack.config.js:
module.exports = {
entry: ['./src/apples.js', './src/oranges.js'],
output: {
path: './dist',
filename: 'fruit.js',
library: 'Fruit',
libraryTarget: 'umd'
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在浏览器中加载此库并键入fruit控制台,我只会看到Fruit下的Oranges对象.只有最后一个条目文件在库中显示出来.当然,webpack文档证实了这种行为:
如果传递数组:启动时加载所有模块.最后一个是导出的. http://webpack.github.io/docs/configuration.html#entry
我目前的解决方法是从一个文件导出我的所有类,但它变得非常笨拙.
如何设置包含所有导出的多个条目文件的库?或者我在这里做错了什么?
我在让'deviceready'从AngularJS里面注册时遇到了问题.我确定这之前有用,所以我不确定发生了什么变化.
如果我从全局addEventListener调用'deviceready',它就会起作用,如下所示:
document.addEventListener('deviceready', function(){
localStorage.deviceReadyGlobal = true;
});
Run Code Online (Sandbox Code Playgroud)
deviceReadyGlobal = true已设置.但是,如果我尝试从Angular中附加它,它永远不会触发,如下所示:
app.run(function(){
document.addEventListener('deviceready', function(){
localStorage.deviceReadyAngular = true;
});
});
Run Code Online (Sandbox Code Playgroud)
deviceReadyAngular永远不会设置.现在,我知道PhoneGap可能已经解雇了'deviceready'而Angular正在引导,但根据PhoneGap文档,这应该无关紧要.
deviceready事件的行为与其他事件略有不同.在deviceready事件触发后注册的任何事件处理程序都会立即调用其回调函数.
"deviceready"的行为有什么变化吗?
我目前正在使用Cordova 3.3.0和Angular 1.2.5.
我遇到了CSS转换和触摸事件命中测试组合的问题.这仅适用于Android 4中的Chrome版本(稳定版和测试版).iOS Safari以及带触摸仿真的Chrome桌面似乎都运行良好.
我几乎肯定这是一个bug,所以我认为我主要是在寻找解决方法.
问题是触摸的命中测试似乎适用于元素在变换之前的位置,而不是最终位置.您可以在我的jsfiddle上看到一个示例(仅限Android 4 Chrome):
jsfiddle:http: //jsfiddle.net/LfaQq/ 全屏:http: //jsfiddle.net/LfaQq/embedded/result/
如果将蓝色框拖到屏幕的一半并松开,它将弹回到顶部.现在,如果您尝试再次从页面的上半部分拖动,则不会注册任何触摸.触摸事件甚至不会在元素上触发.但是,如果您尝试触摸元素的底部,它可以正常工作.然后,您可以尝试从底部向上移动它,并观察该命中测试不再适用于底部,但在顶部工作.
这就是我处理事件的方式:
function handleTouch(e) {
console.log("handle touch")
e.preventDefault();
switch(e.type){
case 'touchstart':
console.log("touchstart");
touchOriginY = e.targetTouches[0].screenY;
break;
case 'touchmove':
console.log("touchmove");
el.innerHTML = e.targetTouches[0].screenY;
var p = e.targetTouches[0].screenY - touchOriginY;
el.style[TRANSFORM] = 'translate3d(0,' + p + 'px' + ',0)';
break;
case 'touchcancel':
console.log("touchcancel");
// Fall through to touchend
case 'touchend':
//console.log("touchend");
//el.style[TRANSITION] = '.4s ease-out';
el.style[TRANSFORM] = 'translate3d(0,0,0)';
break;
}
}
el.addEventListener('touchstart', handleTouch);
el.addEventListener('touchend', handleTouch);
el.addEventListener('touchmove', handleTouch); …Run Code Online (Sandbox Code Playgroud) 这让我抓狂。我或多或少地遵循http://emberjs.com/guides/的指南视频,但提供了我自己的夹具数据数据集。但是,无论我尝试什么,我最终都会遇到错误:
未捕获的类型错误:无法读取未定义的 ember-data.js 的属性“promise”:240
JS:
App.Store = DS.Store.extend({
revision: 12,
adapter: 'DS.FixtureAdapter'
});
App.UnauthedRoute = Ember.Route.extend({
model: function() {
return App.CurrentUser.find();
}
});
App.CurrentUser = DS.Model.extend({
username: DS.attr('string'),
email: DS.attr('string'),
session: DS.attr('string')
});
App.CurrentUser.FIXTURES = [
{
id: 1,
username: "gamerbob",
email: "bob@gamer.com",
session: "ABC123"
}
];
Run Code Online (Sandbox Code Playgroud)
模板:
<script type="text/x-handlebars" data-template-name="unauthed">
Resusult:
{{#each model}}
{{username}}
{{/each}}
</script>
Run Code Online (Sandbox Code Playgroud)
如果我从路线的模型挂钩中删除 App.CurrentUser.find() ,则不会出现错误,但这也达不到目的。这里发生了什么?我做错了什么,还是余烬数据不稳定?
javascript ×3
android ×1
angularjs ×1
cordova ×1
css3 ×1
ecmascript-6 ×1
ember-data ×1
ember.js ×1
touch ×1
webpack ×1