与其他框架相比,Node.js + Express.js应用程序中的错误报告/处理似乎有所不同.我是否理解它的工作原理如下?
A) 通过接收它们作为回调函数的参数来检测错误.例如:
doSomethingAndRunCallback(function(err) {
if(err) { … }
});
Run Code Online (Sandbox Code Playgroud)
B) 通过调用next(err)在MIDDLEWARE中报告错误.例:
handleRequest(req, res, next) {
// An error occurs…
next(err);
}
Run Code Online (Sandbox Code Playgroud)
C) 通过抛出错误报告 ROUTES中的错误.例:
app.get('/home', function(req, res) {
// An error occurs
throw err;
});
Run Code Online (Sandbox Code Playgroud)
d) 处理通过配置通过app.error自己的错误处理的错误()或使用通用连接错误处理程序.例:
app.error(function(err, req, res, next) {
console.error(err);
res.send('Fail Whale, yo.');
});
Run Code Online (Sandbox Code Playgroud)
这四个原则是Node.js + Express.js应用程序中所有错误处理/报告的基础吗?
我正在使用iOS 4.0 SDK运行Xcode 3.2.3.我使用Base SDK = iphoneos4.0,Active SDK = iphoneos4.0,Deployment Target = 3.1.3和Architecture = standard(arm6 arm7)构建了我的应用程序.编译器= GCC 4.2.据我了解,这是为iOS 4和3 构建应用程序的正确方法.
该应用程序在运行iOS 4的设备上运行良好.但是当您尝试在具有iOS 3.1.3(iPod Touch 1G)的设备上运行它时,它会在启动时崩溃:
dyld: Symbol not found: __NSConcreteStackBlock
Referenced from: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
Expected in: /usr/lib/libSystem.B.dylib
Run Code Online (Sandbox Code Playgroud)
在我的main()函数被调用之前,它似乎是一个相当"低级"动态链接库的问题.我甚至尝试重新启动设备等,没有运气.这是崩溃日志的一部分:
Process: MyApp [60]
Path: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
Identifier: MyApp
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2010-07-22 17:16:17.942 -0400
OS Version: iPhone OS 3.1.3 (7E18)
Report Version: 104
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x00000001, 0xe7ffdefe
Crashed Thread: 0 …Run Code Online (Sandbox Code Playgroud) 我有一个带有商店的Ext.grid.Panel(aka gridpanel),仅用于客户端视觉效果(即,没有任何内容保存到服务器).当我创建新的模型实例并将它们添加到商店时,它们会在网格中显示一个红色的角(可能表示存储更改尚未保存).
目前,我在每个记录/模型上调用.commit()方法,然后将其添加到商店,以防止网格中的脏记录红色角落.
是否有更简单的方法来简单地配置网格面板,以便不显示有关记录"脏"状态的任何可视指示器?
注意:这个类似问题的解决方案要么涉及CSS,要么仅适用于ExtJS 3.我希望找到一个适用于ExtJS 4的程序化"设置".
我有一个使用RequireJS 2.1.8的Backbone应用程序(即我的所有Backbone视图都使用define()来指定它们的依赖关系).一切都很好,现在我正在尝试使用r.js(通过NPM安装)将我的所有JavaScript连接/缩小为单个文件.
如何设置r.js配置,该配置排除以某些路径开头的依赖项?
我在下面包含了我的main.js文件.在这种情况下,我希望"构建"输出文件排除第三方库(即jquery,骨干等).此外,我想排除任何以"webapp /"开头的依赖项(例如,"webapp/dynamic_cfg",这会导致请求被发送到我的Djang应用程序以获取动态生成的JavaScript文件/模块).
文件夹结构:
|--static/
|--main.js
|--myapp/
|--views/
|-- MyView.js
|-- ...
|--lib
|--backbone-1.0/
|--underscore-1.5.1/
|-- ...
Run Code Online (Sandbox Code Playgroud)
index.html(一个Django模板):
<script src="{% static 'lib/requirejs-2.1.8/require.min.js' %}" data-main="{% static 'main.js' %}" ></script>
Run Code Online (Sandbox Code Playgroud)
main.js:
requirejs.config({
paths: {
"jquery": 'lib/jquery-1.10.2/jquery.min',
"text_loader": 'lib/requirejs-text-2.0.10/requirejs-text',
"fuelux": 'lib/fuelux-2.3.1',
"backbone": 'lib/backbone-1.0/backbone.min',
"underscore": 'lib/underscore-1.5.1/underscore.min',
// Any module that requires 'webapp/*' will result Require.js
// making a request to the server webapp.
"webapp": '..'
},
shim: {
'backbone': {
deps: ['underscore', 'jquery'], // Load these dependencies first
exports: 'Backbone' // Create …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习ExtJS和面向对象的JavaScript.我已经看到人们通过几种方式在自定义命名空间中定义类.这两种方法有什么区别?
方法1
Ext.ns('myapp.cars');
(function(){
var Car = Ext.extend(Object, {
//...
})
myapp.cars.Car = Car;
})()
Run Code Online (Sandbox Code Playgroud)
方法2
Ext.ns('myapp.cars');
myapp.cars.Car = Ext.extend(Object, {
//...
});
Run Code Online (Sandbox Code Playgroud)
方法2更易于阅读,所需代码更少; 有什么理由方法1更好吗?谢谢!
因此,Node.js中回调函数的一般约定是"保留"错误的第一个参数(如果存在).例如:
callSomeBlockingFcn( function callbackWhenDone(err, result) {
if( err ) ...
});
Run Code Online (Sandbox Code Playgroud)
如果您需要返回多个错误 - 例如多个数据验证错误 - 是否认为传递错误对象数组的形式不佳?例:
var callSomeBlockingFcn = function(callback) {
// multiple errors to report back...
callback( [ err1, err2, ...] );
}
Run Code Online (Sandbox Code Playgroud)
或者最好避免使用数组并使用引用数组的属性返回单个对象(如果需要)?例:
var callSomeBlockingFcn = function(callback) {
// multiple errors to report back...
callback( { errors: [ err1, err2, ...] } );
}
Run Code Online (Sandbox Code Playgroud) 我想要一个单独的事件监听器,只要表单中的任何字段(即Ext.form.Panel)发生变化就会触发.但是,Ext.form.Panel类不会为此本身触发事件.
在表单中监听所有字段的"更改"事件的最佳方法是什么?
我对React比较陌生; 如果这是一个非常天真的问题,请道歉.
有什么技术优势browserHistory使它更适合hashHistory?例如,使用History API是否会提高性能/效率?
虽然这是以额外的服务器配置为代价并且需要通过basename对不同服务器的基本URL进行硬编码或配置,但是文档声明browserHistory是推荐的.
hashHistory但是,"只是工作",无论提供文件的基本URL如何.无需服务器配置.捆绑您的应用程序,从服务器上的任何URL /路径托管它,很好.
如果文档进一步解释为什么browserHistory推荐它,即使它涉及更多的复杂性,这可能是好的.
考虑以下main()方法,您可以找到大多数iPhone应用程序:
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}Run Code Online (Sandbox Code Playgroud)
在我使用这些模拟器运行的每个iPhone应用程序中(包括Apple提供的几个示例项目),线程永不退出UIApplicationMain(),任何剩余的代码main()永远不会被执行.这是预期的行为吗?
我已经UIApplicationMain()通过使用调试器逐步执行代码来验证从未运行过的语句.当用户停止应用程序时(例如,通过点击"主页"按钮),生成的堆栈跟踪显示 [UIApplication _terminateWithStatus:]最终被调用.此函数调用应用程序委托的applicationWillTerminate:方法.一旦完成,[UIApplication _terminateWithStatus:]似乎杀死/退出线程.
有人可以确认这是main()应该如何工作,或者至少在他们的机器上确认相同的行为?
我有一个带有菜单和自定义menuAlign设置的分割按钮(这样下拉菜单的右上角将与splitbutton的右下角对齐).
问题:第一次单击拆分按钮时,菜单未正确对齐.然而,后续点击工作正常.在Chrome和FF中看到相同的行为,ExtJS 4.0.2a.
有任何想法吗?谢谢!


{
xtype: 'toolbar',
items: [
{
xtype: 'triggerfield',
width: 335,
emptyText: 'Search',
triggerCls: 'x-form-search-trigger'
},
'->',
{
xtype: 'splitbutton',
text: 'Account',
menuAlign: 'tr-br',
menu: {
xtype: 'menu',
plain: true,
items: [
{
xtype: 'container',
html: 'image here...'
},
{
xtype: 'button',
width: 10,
text: 'Log Out'
}
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud) extjs ×3
extjs4 ×3
javascript ×3
iphone ×2
node.js ×2
express ×1
extjs3 ×1
ios ×1
ios4 ×1
objective-c ×1
react-router ×1
requirejs ×1