最近,我遇到了以下问题:
当我为我的项目设置依赖项管理时,我使用带有依赖项的插件进行了子操作,我希望与依赖项管理中声明的依赖项同步.
在根pom中,我在我的依赖管理中声明:
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>2.4.0</version>
</dependency>
...
<dependencies>
<dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
在孩子pom中,我有一个需要gwt-user的插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.4.0</version>
<dependencies>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>2.4.0</version>
</dependency>
...
</dependencies>
...
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除gwt-maven-plugin中使用的依赖版本,则编译失败.
还有另一种方法可以实现吗?
PS:在maven和maven插件中有一个相关的帖子选择依赖版本,它没有回答我的问题
使用Chrome开发者工具中的时间轴,我使用这一小段代码通过innerHTML记录事件:
<!DOCTYPE html>
<html>
<head>
<script>
function test(){
var wrap = document.getElementById('wrapper');
wrap.innerHTML = "test";
}
</script>
</head>
<body>
<input type="button" value="click" onClick="test();"/>
<div id="wrapper"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我可以看到,一旦运行测试方法,就会触发两个解析事件:
我使用的是Chrome版本23.0.1271.64 m
这是预期的吗?这是Chrome开发人员工具中的错误吗?或者Chrome下有什么需要改进的地方?
在开发Web项目的JavaScript ES6,我目前使用Traceur从ES6编译我的模块ES5,认为在将来,当浏览器将支持ES6,我就可以跳过这一步transpilation.
最后,因为我不想在启动时下载几个js片段,所以我有一个文件,其中包含我转换成ES5的所有模块,感谢Traceur.
但是为了验证这个选择,我想知道在我保留ES6源代码的那一天是否仍然可能.如果我只是连接它们,将会有无效的导入和名称冲突.
看起来它没有为它设计,它需要额外的处理步骤来正确合并它们.
我们如何处理用几个模块定义的ES6单文件项目?
注意:此帖已在React不支持ES6(v12)时发布.
我有一个ES6课程:
class BaseClass {
getInitialState(){
return {message: 'Hello!'};
}
render() {
return (
<div>
<div>{this.state.message}</div>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用这个表达式在ES6中导出(来源:反应ES6 browserify)
export default React.createClass(BaseClass.prototype)
Run Code Online (Sandbox Code Playgroud)
这很好用.现在我想使用ES6继承来扩展我的BaseClass
类:
class ExtendedClass extends BaseClass{
getInitialState(){
return {message: "Hello! I'm an extension"};
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我React.createClass
在ExtendedClass
课堂上打电话时,我得到以下异常:
Invariant Violation: ReactCompositeComponentInterface: You are attempting to define `constructor` on your component more than once. This conflict may be due to a mixin.
Run Code Online (Sandbox Code Playgroud)
我知道React 0.13应该更符合ES6,但有没有办法解决这个问题?
编辑:
我正在使用Traceur来编译我的ES6类.输出ExtendedClass
看起来像:
function ExtendedClass() …
Run Code Online (Sandbox Code Playgroud) 试图回答这张票:instanceof和Class.isAssignableFrom(...)有什么区别?
我做了一个性能测试:
class A{}
class B extends A{}
A b = new B();
void execute(){
boolean test = A.class.isAssignableFrom(b.getClass());
// boolean test = A.class.isInstance(b);
// boolean test = b instanceof A;
}
@Test
public void testPerf() {
// Warmup the code
for (int i = 0; i < 100; ++i)
execute();
// Time it
int count = 100000;
final long start = System.nanoTime();
for(int i=0; i<count; i++){
execute();
}
final long elapsed = System.nanoTime() - start;
System.out.println(count+" iterations took …
Run Code Online (Sandbox Code Playgroud) 我知道这听起来又像是关于flexbox的另一个问题,该问题在其他地方已解决,但我找不到来自Google或stackoverflow现有帖子的解决方案。
问题很简单。
我在父div中有3个子div,其中一个包含的内容大于其最终大小。我希望每个孩子都是1/3
其父母,无论其内容如何。
这是小提琴:http : //jsfiddle.net/xeqo0msq/
这是HTML:
<div class="parent">
<div class="child red">
<div class="content">1</div>
</div>
<div class="child blue">2</div>
<div class="child green">3</div>
</div>
Run Code Online (Sandbox Code Playgroud)
以及相关的CSS:
.parent {
display: flex;
flex-direction: column; /*or row*/
height: 100%;
width: 100%;
}
.child {
flex: 1;
}
.content{
width: 800px;
height: 100px;
}
.red {background: red;}
.blue {background: blue;}
.green {background: green;}
Run Code Online (Sandbox Code Playgroud)
因为flex-direction: row;
它按预期工作:每个孩子都是1/3
其父母,尽管第一个内容要大得多。宽度就像是独立于内容一样。
因为flex-direction: column;
第一个孩子比另外两个孩子大得多。
是否可以使用flexbox和实现此目的flex-direction: column;
?
我正在使用GWT来构建一个性能正常的HTML应用程序.
有时,它可以在DOM中加载许多对象,并且应用程序变得很慢.我使用Chrome开发者工具分析器来查看花费的时间(在应用程序编译后在Chrome下,即没有GWT开销),很明显方法getAbsoluteLeft()/ getBoundingClientRect()消耗了这段时间的主要部分.
以下是Chrome(com.google.gwt.dom.client.DOMImplStandardBase)下使用的实现:
private static native ClientRect getBoundingClientRect(Element element) /*-{
return element.getBoundingClientRect && element.getBoundingClientRect();
}-*/;
@Override
public int getAbsoluteLeft(Element elem) {
ClientRect rect = getBoundingClientRect(elem);
return rect != null ? rect.getLeft()
+ elem.getOwnerDocument().getBody().getScrollLeft()
: getAbsoluteLeftUsingOffsets(elem);
}
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义,因为DOM中的元素越多,计算绝对位置所需的时间就越多.但令人沮丧的是,因为有时你只知道你的应用程序的一个子部分已经改变了,而这些方法仍然需要时间来计算绝对定位,可能是因为它不必要地重新检查了一大堆DOM元素.我的问题不一定是面向GWT的,因为它是一个与浏览器/ javascript相关的问题:
有没有任何已知的解决方案来改善大型DOM元素应用程序的GWT getAbsoluteLeft/javascript getBoundingClientRect问题?
我没有在互联网上找到任何线索,但我想到的解决方案如下:
编辑:
使用Chrome TimeLine调试器,并在DOM中有很多元素时执行特定操作,我有平均性能:
布局需要900毫秒通过getBoundingClientRect方法.此页面列出了在WebKit中触发布局的所有方法,包括getBoundingClientRect ...
由于我在dom中有许多不受我的操作影响的元素,我假设布局在整个DOM中进行重新计算,而paint可以通过css属性/ DOM树来缩小其范围(我可以通过firebug中的MozAfterPaintEvent看到它)例).
除了分组和调用触发布局的方法,有关如何减少布局时间的任何线索?
一些相关文章:
javascript ×4
ecmascript-6 ×2
html ×2
java ×2
css ×1
css3 ×1
dom ×1
flexbox ×1
gwt ×1
maven ×1
node.js ×1
performance ×1
reactjs ×1
traceur ×1