兵马未动粮草先行,我们的第一步工作就是分析需求:我们需要怎么样的一款工具?
根据我们团队的实践,还有在社区的调研,该前端集成解决方案
应该具备:
- 模块化开发。最好能像写
NodeJS
一样写JS,很舒服。 - 性能要好。模块那么多,得能按需加载,请求不能多。还要能支持
ngRoute
和ui-router
。 - 组件化开发,
organize by feature
,一个组件的JS、CSS、模板最好都在一个目录维护,维护方便。 - 也许哪天我就不爱你了呢? 所以不能对
Angular
进行太耦合的hack,要原汁原味。 - 依赖注入声明的写法太烦了,能否自动帮我生成?
- JS/CSS/图片的混淆压缩应该都没问题吧。
- 图片base64嵌入。有些小图需要压缩并嵌入到页面、JS或者CSS中使用。
- 测试不能停,要能与
ci平台
集成, 支持karma
和protractor
。 - 开发体验要好。文件监听,浏览器自动刷新(
livereload
)一个都不能少。 - 我们用
NodeJS
作为服务器,本地要能预览,最好再能抓取线上数据,方便调试。 - 业界那么多优秀类库, 当然要支持
bower
组件仓库的安装啦。 yeoman
用过吧? 对,脚手架
功能也不能少了。CoffeeScript
,Sass
之类的有意思,也给我来一个。- 顺便再提供个打包功能吧
回头看看这个列表,我怎么有点腿发软了。。。
好吧,在瓶神的鼓励下, 我们试试看吧,先把上面的需求整理下:
-
规范
- 开发规范
- 模块化开发,JS模块化,CSS模块化,像
NodeJS
一样编码 - 组件化开发,js、css、tpl维护在一起,
organize by feature
- 按需加载,支持
ngRoute
和ui-router
- 尽量原生化的编写
Angular
- 模块化开发,JS模块化,CSS模块化,像
- 部署规范
- 采用
NodeJS
后端,基本部署规范应该参考express
项目部署 - 按版本号做非覆盖式发布
- 采用
- 开发规范
-
框架
- JS模块化框架,符合
CommonJS
规范 - 支持
请求合并
- 支持
按需加载
- 支持通过
localstorage
等方式缓存资源
- JS模块化框架,符合
-
工具
- 自动生成
Angular
的依赖注入声明。 - 支持js、css、图片压缩
- 允许图片压缩后以base64编码形式嵌入到css、js或html中
- 与
ci平台``集成, 支持
karma单元测试,
protractor`端到端测试。 - 文件监听、浏览器自动刷新
- 本地预览、数据模拟
- 提供类似
yeoman
的脚手架, 生成项目框架,包括Controller
等 - 支持
CoffeeScript
,Sass
的编译 - 提供打包功能
- 自动生成
-
仓库
- 支持
bower
模块安装和使用
- 支持
一开始的时候,我总期望在scrat
的基础上去修订,可是浪费很多时间后才发现, 即使团队的规范看起来差异不大,但还是有很多不同的应用场景,不能一刀切。因为,团队自身的前端解决方案是需要量身定制的。
本文实现的ngfis
是一个基于fis
之上的angular
方向的解决方案, 只包含了最核心的一些需求,因此我们可以在这之上再去架构自己的方案, 如我们团队的larva
就是ngfis
+hybrid app
+uae
的结合体。