AngularJS中ngRouter和uiRouter的区别
来源:互联网 发布:游戏汉化软件 编辑:程序博客网 时间:2024/05/29 14:55
路由(route),几乎所有的MVC(VM)框架都应该具有的特性,因为它是前端构建单页面应用(SPA)必不可少的组成部分。
那么,对于angular而言,它自然也有内置的路由模块:做ngRoute。
不过,大家很少用它,因为它的功能太有限,往往不能满足开发需求!!
于是,一个基于ngRoute
开发的第三方路由模块,叫做ui.router,受到了大家的“追捧”。
那么它们有什么不同呢?
ngRoute
在路由配置时用$routeProvider
。ui-router
路由配置时用$stateProvider
和$urlRouterProvider
。ngRoute
是官方路由。ui-route
是第三方路由。ngroute
是用AngularJS框架的核心部分。ui-router
是一个社区库,它是用来提高完善ngroute
路由功能的。ui-router
允许嵌套视图(nested views)和多个命名视图(multiple named views)。
接下来看看ngRoute模块和ui.router模块各自都提供了哪些服务,哪些指令?
ng-router
$routeProvider
–用于进行路由配置的内置服务$routeParams
–径性路由参数传递时使用的一个内置服务ng-view
–用于展示对应模板的指令
ui-router
- $stateProvider–ui路由中状态的服务提供者。
- $urlRouterProvider–用于默认访问位置的指定。
- views–用于进行多数据展示的情况。
- ui-view–主要进行目标视图模板的展示。
- ui-sref–该属性主要用于替换HTML中a标签的href属性,用于指定目标路由的名称。
从上述看,其实ui.router和ngRoute大体的设计思路,对应的模块划分都是一致的!
那么ui-Router解决了原生的ng-route哪些不足呢?
多视图—页面可以显示多个动态变化的不同区块。
比如:页面一个区块用来显示页面状态,另一个区块用来显示页面主内容,当路由切换时,页面状态跟着变化,对应的页面主内容也跟着变化。
首先,我们尝试着用ngRoute来做:
html页面:
<div ng-view>区块1</div><div ng-view>区块2</div>
JS代码:
$routeProvider .when('/', { template: 'hello world'});
我们在html中利用ng-view指令定义了两个区块,于是两个div中显示了相同的内容,这很合乎情理,但却不是我们想要的,但是又不能为力,因为,在ngRoute中:
- 视图没有名字进行唯一标志,所以它们被同等的处理。
- 路由配置只有一个模板,无法配置多个。
针对上述两个问题,我们尝试用ui.router来做:
HTML页面:
<div ui-view></div> <div ui-view="status"></div>
JS代码:
$stateProvider .state('home', { url: '/', views: { '': { template: 'hello world' }, 'status': { template: 'home page' } } });
这次,结果是我们想要的,两个区块,分别显示了不同的内容,原因在于,在ui.router中:
- 可以给视图命名,如:ui-view=”status”。
- 可以在路由配置中根据视图名字(如:status),配置不同的模板(其实还有controller等)。
嵌套视图:页面某个动态变化区块中,嵌套着另一个可以动态变化的区块。
0 0
- AngularJS中ngRouter和uiRouter的区别
- angularjs中ngbind和ngbindhtml的区别
- angularjs中ng-show和css中display的区别
- angularjs中service、factory和provider的区别
- AngularJS中ng-checked和checked的区别
- AngularJS中ng-class和class的区别
- angularJs中ng-readonly和ng-disabled的区别
- jQuery和AngularJS的区别
- angularjs和vuejs的区别
- angularjs和vuejs的区别
- JavaScript框架之AngularJS学习——UIRouter
- angular的uiRouter 嵌套路由学习总结
- AngularJS中serivce,factory,provider的区别
- AngularJS中serivce,factory,provider的区别
- AngularJS中serivce,factory,provider的区别
- AngularJS中service,factory,provider的区别
- AngularJS中service,factory,provider的区别
- AngularJS中service,factory,provider的区别
- Android中轮播图的实现
- 自动化测试框架结构图
- 免费的数据恢复工具
- java模拟hashMap实现(linkedList方式)
- Android Studio主题设置、颜色背景配置
- AngularJS中ngRouter和uiRouter的区别
- Lab04
- CSS设置多余的文本显示省略号
- iOS UIScrollView使用全解 滚动视图使用大全 swift3
- bat 批量重命名
- c++数组题解
- Python基础教程学习第八日:Numpy(2)
- 浪上海-四月天
- android_animation三种动画学习总结