0%

ui-router与Angular自带的ngRoute最大的区别就是它是基于状态(state)的,而不是基于URL的。它带来的最大的便捷性就在于:

  • 支持多个ui-view
  • 支持ui-view的嵌套
  • 支持state的继承(嵌套)

这篇文章就简单谈谈怎么利用ui-router去搭建一个网站的布局以及实现一些便捷的小功能。

阅读全文 »

写过Angular的service的孩子肯定对Promise不陌生了吧,这玩意的出现可以说是极大改变了异步编程的写法,告别了让代码不停横向发展的Callback Hell。一直以来自己都是按照网上流行的写法来写Promise的,并没有觉得有什么问题,直到看到这篇神一般的文章:We have a problem with promises,以及文中提到的Bluebird的Wiki中关于Promise的Anti-pattern,顿时有一种醍醐灌顶的感觉,敢情自己以前根本就没理解Promise啊。这篇文章就来讲讲最近在Promise上的心得体会。

阅读全文 »

前段时间在公司的新项目中尝试使用gulp替换grunt,体验非常棒!两者最大的区别就是grunt整个就像是一个配置文件,而gulp更像代码。这样的好处就是调试起来更方便直观。另外,利用Node.js的stream概念,让gulp的task看起来像管道一样,输入连着输出,输出又导入另一个输入,流程非常清晰易懂。自打用了这个,就再也不想回到闹心的grunt了。在用了一段时间后,问题来了:不知不觉gulpfile.js已经超过1000行了!每次要修改一个task就要费劲找半天,各种路径也是一团糟,非常难以维护了。那么,是时候重构gulpfile了!

阅读全文 »

今天在登录CodePen的时候看到一个弹窗,推荐一些网站的用法,其中有一篇说很多公司通过CodePen来面试前端工程师,网站支持合作模式,可以实时观察被面试者敲代码,也可以实时沟通,觉得挺有意思,国外就是高端!点进去发现一道用来面试CSS的题目,因为一直觉得自己CSS不是特别好,就想我也做做试试。初看感觉应该不难吧,实际上做下来苦不堪言啊。。。

阅读全文 »

最近公司要做的项目中牵扯到很多场景需要对controller和service进行继承和扩展的,总结一下心得体会。开讲之前,先明确一下这里的所谓的“继承”与“扩展”。

  • 所谓继承,比较熟悉,这里就是指定义一个新的controller/service(不同名),继承原来的controller/service,然后在其基础上重写一些功能。
  • 所谓扩展,这里说的是在不产生新的controller/service的情况下,添加或修改原controller/service的功能。

目前研究的结果就是service可以轻松的实现继承和扩展,而controller貌似只能继承。

阅读全文 »

AngularJS中在处理controller时提供了两种语法。

  • 第一种是,在DOM中使用ng-controller="TestController",这样在定义controller时需要将model绑定到$scope上。
  • 另一种是,在DOM中使用ng-controller="TestController as test",这样其实是将model直接绑定到controller的实例上。

在AngularJS的官方Get Started以及各种文档中,多推荐第一种方式,导致很多人可能都不知道原来还有第二种方式,我也是最近看一篇文章时才注意到这个。那么这两种方式各有什么优劣势呢?在现实的开发中到底更推荐哪种方式呢?今天就来探究一下!

阅读全文 »

相信大家写过AngularJS的都会发现,很多人在处理表单的数据绑定时,都习惯性的把ng-model绑定在$scope的一个对象属性上,而不是直接绑定在scope上。比如说使用<input name="name" ng-model="data.name" />而不是<input name="name" ng-model="name" />。这是为什么呢?这样在controller里面岂不是写起来更复杂吗?每次访问的时候都要多“点”一下,为什么不直接绑在$scope上呢?其实这样写自然是有它的好处的,而且这种写法也是推荐的最佳实践,尤其是在处理嵌套scope的情形下,这样写是很有必要的。为了弄清楚这么写的原因,我们需要深入的研究一下AngularJS里scope的继承。

阅读全文 »

书接上回,直入主题!如果你是接着上篇来的,那么先运行git reset HEAD test.txtgit checkout test.txt来放弃当前的更改,使最新的commit回到“commit temp”,这个时候运行git status,会看到“nothing to commit, working directory clean”。这里,“nothing to commit”说明暂存目录是空的,“working directory clean”说明你的工作目录也没有任何修改。

阅读全文 »