如果我们从HTML/CSS中学到了什么,那么声明性语言(如XML)可以很好地描述用户界面,因为:
我最近看了一下WPF应用程序的内容(即XAML),它看起来非常熟悉HTML中使用的声明性语言风格.
桌面UI开发的当前状态在很大程度上是分数化的,否则在图形用户界面设计领域(IE.GTK,XUL,Qt,Winforms,WPF等)中将没有那么多的重复工作.
什么是代表这些特征的开源GUI:
WPF,或更具体地说,XAML似乎是朝着正确方向迈出的可能的一步.
非常感谢您的信息,请保持信息.以下是我从评论和答案中收集的选项.
基于XML的格式,不是免费的,不是跨平台的,也不是特定于语言的
注意:我不确定XUL是否值得在此列表中提及,因为它不是桌面GUI语言,而是更多的make-webapps-on-the-desktop语言.另外,它需要浏览器才能运行.IE,它是'用于桌面的DHTML'.
注意:XAML不是纯粹的开源格式,因为Microsoft控制其使用条款,包括随时更改条款的权利.月光不能合法地在Windows或Mac上运行.此外,唯一免于法律诉讼的平台是Novell.请参阅此内容 …
我正在研究pypreprocessor,这是一个采用c风格指令的预处理器,我已经能够使它像传统的预处理器一样工作(它是自耗的,并且即时执行后处理代码),除了它打破了库进口.
问题是:预处理器运行文件,处理它,输出到临时文件,exec()临时文件.导入的库需要处理稍有不同,因为它们不会被执行,而是被加载并且可以被调用者模块访问.
我需要做的是:中断导入(因为预处理器在导入过程中运行),将后处理代码作为tempModule加载,并用tempModule替换原始导入以欺骗调用脚本认为tempModule是原始模块的导入.
到目前为止,我到处搜索,没有解决方案.
这个Stack Overflow问题是我到目前为止提供答案的最接近的问题: 在Python中覆盖名称空间
这就是我所拥有的.
# Remove the bytecode file created by the first import
os.remove(moduleName + '.pyc')
# Remove the first import
del sys.modules[moduleName]
# Import the postprocessed module
tmpModule = __import__(tmpModuleName)
# Set first module's reference to point to the preprocessed module
sys.modules[moduleName] = tmpModule
Run Code Online (Sandbox Code Playgroud)
moduleName是原始模块的名称,tmpModuleName是后处理代码文件的名称.
奇怪的是这个解决方案仍然完全正常运行,好像第一个模块完成正常加载一样; 除非你删除最后一行,否则你会得到一个模块未找到错误.
希望Stack Overflow上有人比我更了解进口,因为这个让我难过.
注意:我只会授予一个解决方案,或者,如果在Python中无法做到这一点; 最好,最详细的解释为什么这不是不可能的.
更新:对于任何感兴趣的人,这是工作代码.
if imp.lock_held() is True:
del sys.modules[moduleName]
sys.modules[tmpModuleName] = __import__(tmpModuleName)
sys.modules[moduleName] = __import__(tmpModuleName)
Run Code Online (Sandbox Code Playgroud)
'imp.lock_held'部分检测模块是否作为库加载.以下几行完成其余的工作.
我已经开始探索Angular2(我将使用Angular1和一些React背景),我遇到了问题.
我想将某些击键绑定到组件中的操作,因此我决定使用Angular2生命周期来绑定/取消绑定操作.
但是,如果我在Mousetrap回调中执行某些操作,它会起作用,但它不会呈现,并且在运行摘要周期之前不会显示更改.
我是否需要显式运行某些内容来更新视图
有人可以帮我弄清楚发生了什么吗?任何帮助将非常感激.
import {Component} from 'angular2/core';
const Mousetrap = require('mousetrap');
@Component({
template: `<div>
Video template: Mode {{ mode }}
<input type="number" [(ngModel)]="mode"/>
</div>`
})
export class Video {
public mode: number;
constructor() {
this.mode = 0;
}
ngOnInit() {
console.log('hello Video component');
Mousetrap.bind('d', () => console.log('this.mode=', this.mode));
Mousetrap.bind('i', () => this.incrementMode()); // doesn't work
this.incrementMode(); // works
this.incrementMode(); // works
setTimeout(() => this.incrementMode(), 4000); // works
}
incrementMode() {
console.log('incMode', this.mode++);
};
ngOnDestroy() {
console.log('bye bye Video …Run Code Online (Sandbox Code Playgroud) 告诉我你需要什么额外的信息
我按照一个简单的指南来激活我的第一个角度2应用程序并在clr上执行以下操作:
npm i -g angular-cli //(worked)
ng new ponyracer //(error: Cannot find module 'glob')
ng serve //(error: Cannot find module 'glob')
Cannot find module 'glob'
Error: Cannot find module 'glob'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (C:\Users\stavalfi\AppData\Roaming\npm\node_modules\angular-cli\addon\ng2\tasks\lib-install.js:11:19)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
Run Code Online (Sandbox Code Playgroud)
关于"ng new ponyracer"和"ng serve"命令的任何解释都会很棒.
谢谢,Stav
我正在尝试在Angular2.beta.0上构建一个具有登录机制的演示应用程序,然后所有其他API调用将通过标头发送获取的会话令牌.
在角度1x中,我可以编写一个Interceptor,它会在单独的代码中将标记添加到http标头中,我想知道angular2是否有这种机制或任何其他推荐的方法来执行此操作.
假设没有疯狂的优化(我正在看你Chrome).
我说的是原始的,讨厌的,不打破 - 不要修复它,即v6 javascript,成本.
下限是:
document.getElementById()
Run Code Online (Sandbox Code Playgroud)
与:
document.getElementsByTagName('div') lookup.
Run Code Online (Sandbox Code Playgroud) 我有一个简单的场景,其中有一个User类,它有name,email和followers属性.
class User(ndb.Model):
name = ndb.StringProperty(required = True)
search_name = ndb.StringProperty(required = True)
pw_hash = ndb.StringProperty(required = True)
email = ndb.StringProperty()
follows = ndb.KeyProperty(Follow, repeated=True)
followers = ndb.KeyProperty(User, repeated=True)
Run Code Online (Sandbox Code Playgroud)
执行此操作时,我收到错误.
File "C:\ujjal\my project\cravel\code2\Users.py", line 46, in User
followers = ndb.KeyProperty(User, repeated=True)
NameError: name 'User' is not defined
INFO 2012-09-11 11:45:23,953 dev_appserver.py:2967] "GET / HTTP/1.1" 500 -
Run Code Online (Sandbox Code Playgroud)
关于如何模仿"追随者"属性的任何建议都将受到高度赞赏.提前致谢
我正在尝试创建像学生和科目一样的ndb.Model类
class Subject(ndb.Model):
name = ndb.StringProperty()
class Student(ndb.Model):
name = ndb.StringProperty()
subject = ndb.KeyProperty(kind=Subject)
Run Code Online (Sandbox Code Playgroud)
一个学生可以有很多科目.如何在此模型中添加和存储这些内容.我找不到任何例子.对于String Property ..有字段属性,即repeat = true
如何实现这一点,并在网上有任何工作的例子.对不起,如果是重复的问题,但我尝试用我有限的技能来搜索这个论坛.
我正在尝试做的是调整我的jQuery插件以使用Node.js上的jQuery.
根据我的理解,CommonJS是最基本的形式,需要将一个库包装在一个闭包中,并且该闭包应该作为'exports'参数的参数提供.这样,代码整齐地包含在它自己的命名空间中(通过命名变量),并且不会污染全局命名空间.
jQuery本身应该属于'$'命名空间.
翼:
var $ = require(jquery);
Run Code Online (Sandbox Code Playgroud)
但我的插件也应该适合'$'命名空间.
插件代码:
(function( $ ) {
// plugin code goes here
})(jquery);
exports.jquery = jquery // will this work?
Run Code Online (Sandbox Code Playgroud)
例如:
var $ = require(jquery);
$ = require(jquery-csv.js); // will this work?
Run Code Online (Sandbox Code Playgroud)
要在浏览器中工作,所有内容都设置为可以从'$'命名空间调用,即使我的模块设置为'$'的子命名空间(即'$ .csv').
是否有标准方法可以在单个命名空间上执行多个需求?如果没有,那么有一个可行的替代方案(在插件代码上做一个浅表复制)?
注意:匿名函数包装器遵循标准的jquery指南.
注意:此修复程序将应用于jquery-csv插件.
angular ×3
javascript ×3
angular-cli ×1
big-o ×1
commonjs ×1
csv ×1
dom ×1
html ×1
import ×1
node.js ×1
npm ×1
open-source ×1
overriding ×1
preprocessor ×1
python ×1
wpf ×1
xaml ×1