公司主业非nodejs。之前弄一些项目时觉得later.js不错,所以做一些小的项目就往node上靠了。
在测试单元改用mocha后,很喜欢他的表达方式,所以代码改着改着就往上面靠了。
写了一般的配合angularjs的api框架/前台模块
看看蛋疼不:
router.js:
app.all(’/login’,run(
web.IF(Form.isValidated(‘login’))(
‘login’,
web.Http.doRedirect(‘html/index.html’)
),
MVC.doRender(‘login’)
));;
app.post(’/api/create’,run(
web.IF(Form.isValidated(‘createuser’))(
‘createuser’
),
web.IF(Form.isPending(‘createuser’))(
web.Http.doNotFound()
),
Form.doJsonErrors(‘createuser’)
));
app.post(’/api/update’,run(
web.IF(Form.isValidated(‘updateuser’))(
‘updateuser’
),
web.IF(Form.isPending(‘updateuser’))(
web.Http.doNotFound()
),
web.IF(Form.isError(‘updateuser’,‘id’))(
web.Http.doNotFound()
),
Form.doJsonErrors(‘updateuser’)
));
app.post(’/api/toggle’,run(
web.IF(Form.isValidated(‘toggleuser’))(
‘toggleuser’
),
web.IF(Form.isPending(‘toggleuser’))(
web.Http.doNotFound()
),
web.IF(Form.isError(‘toggleuser’,‘id’))(
web.Http.doNotFound()
),
Form.doJsonErrors(‘toggleuser’)
));
app.post(’/api/setpassword’,run(
web.IF(Form.isValidated(‘setpassword’))(
‘setpassword’
),
web.IF(Form.isPending(‘setpassword’))(
web.Http.doNotFound()
),
web.IF(Form.isError(‘setpassword’,‘uid’))(
web.Http.doNotFound()
),
Form.doJsonErrors(‘usersjson’)
));
app.get(’/users’,run(
web.IFNot(Form.isValidated(‘listuser’))(
web.Http.doNotFound()
),
MVC.doJsonData(‘usersjson’)
));
app.use(’/html’,express.static(__dirname + ‘/…/adminhtml/’));
forms.js: var updateUserForm=web.Form.registerForm(‘updateuser’); updateUserForm.field(‘name’) .required(‘姓名必填’); updateUserForm.field(‘username’) .required(‘用户名必填’) .addValidator(‘isEmail’,‘信箱格式不对’) .addValidator([‘seUnique’,web.models.userModel,‘username’,getUpdateUnquieQuery],‘用户名已经被使用’); updateUserForm.field(‘id’) .required(‘没有ID’) .addValidator(userExistsValidator,‘用户不存在’);
actions.js:
web.Action.register('updateuser',function(runtime){
var form=runtime.forms.updateuser;
var model=form._userModel;
model.username=form.get('username');
model.name=form.get('name');
model.save().success(function(){
runtime.next(null);
}).error(function(err){
runtime.next(err);
});
});