AngularJs 构建复杂应用(一)

近年来前端框架如雨后春笋,有革新的reactjs,有轻巧的backbone,有严肃的emberjs,当然也有强大的angularjs。 笔者写过一些demo后觉得angular比较适合生产。有人吐槽说angular会损耗资源,其实并不是什么逻辑的结论,控制好双向绑定和规划化代码,怎么可能让浏览器跑挂了。最近在考虑把AngularJs应用到一个比较复杂的生产项目,做了一些探索,发现angular是适用于大型项目的。成功的例子有worktile,apigee等。

首先需要考虑的是项目结构,先列出当前使用的文件结构方式:

-core
-helpers
-models
-serevices
-widgets
-modules
-app
-controllers
-widgets
-routers
-template
-themes
-app.js

简单介绍一下为什么这样处理:

(1)core:扩展核心
主要为了通过注入的方式扩展angular,例如我构造了一个model.js用于处理数据。Angular最诱人的一个特性就是注入,无处不在的注入让一切看起来都是可扩展的。

(2)helpers:封装工具脚架
我们经常需要在项目中使用各种扩展的函数,例如截取字符串,处理日期,操作数组等,如果这些东西散落各处非常不利于维护。总需要找个地方把他们放在一起,并且分好类,helpers这个目录就是他们的归宿了。

(3)models:数据模型
angular的model不是常规MVC里面的Model,因为它不具备结构。我希望实现ORM,以方便操作。例如
var lingxuan = new user();
lingxuan.setEmail(‘lingxuan’);
lingxuan.update();
常规的可能是以下的写法:
var lingxuan = {email: ‘lingxuan630@gmail.com’}
$.ajajx({
data: lingxuan
……
})
对比起来使用Model是多么优雅的实现方式呀,比services还要适合。

(4)service: 服务层
对于这一层没有什么好讲了,常规的service层,封装各种业务操作。

(5)widgets:组件库
那些赞美reactjs的人总喜欢提及组件化,reactjs放大了组件化的概念,其实angular很好地支持用组件方式组织界面。只要你喜欢,可以把header封装到directives,可以把footer封装到directives,一切都可以封装成挂件。我很喜欢directives,甚至觉得要比reactjs更加简洁,更加优化,尤其是组件之间的通讯更加流畅。

(6)modules:模块
一个大型项目可能有很多模块,有PC用户端,有管理员端,甚至还有手机端等等,一个合理的结构必须最大程度地让模块做独立的工作,让公共的东西很好地抽象出来。module里面会存放不同模块的router,controller,template等。

我已经用上述文件结构组织了两个项目,基本可以满足我的需要,不过日后仍然有可能会做一些改动。

下一篇会介绍anglar的一些最佳实践。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值