AngularJS vs Angular [closed] - angularjs

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Months ago, I decided to study Angular. When I was doing some advance and create some app using it, I realize that Angular 2 is in Developer preview, so it's a matter of time before it's going to be released. Because Angular 2 is not going to be compatible with Angular 1, and there are a lot of changes, the question is, is it better to continue developing with Angular 1.x or start developing Angular 2?
It's a fact that we don't always have to be using the latest version nor the newest language on the market, but in this case, the app is still small so I could change without problems.

Let me preface by saying, I'm assuming you and everyone who will be reading this is already comfortably with Angular 1 (now referred to as AngularJS, as opposed to simply Angular for the newer versions). That being said, let's get into some of the additions and key differences in Angular 2+.
They added an angular cli.
You can start a new project by running ng new [app name].
You can serve your project by running ng serve
learn more here: https://github.com/angular/angular-cli
Your angular code is written in ES6 Typescript and it compiles at runtime to Javascript in the browser.
To get a full grasp on this I recommend checking out some the resource list I have at the bottom of my answer.
Project Structure
In a basic structure, you will have a app/ts folder where you'll be doing most your work and a app/js You'll find in the app/js folder files with a .js.map extension. They "map" your ".ts" files to your browser for debugging as your browser cannot read native typescript.
Update: It's out of beta. The project structure changed a bit, in most cases and if you're using the angular cli, you'll be working in the
src/app/ folder. In a starter project, you'll have the following.
app.component.css
app.component.html
app.component.spec.ts
app.component.ts
app.module.ts
index.ts
app.component.css: CSS file you should use specific to the component.html
app.component.html: A view (variable declared in the app.component.js)
app.component.spec.ts: used for testing app.component.ts
app.component.ts: Your code that binds to app.component.html
app.module.ts: This it what kicks off your app and where you define all plugins, components, services, etc. This is the equivalent of the app.js in Angular 1
index.ts used to define or export project files
Additional information:
Pro tip: you can run ng generate [option] [name] to generate new services, components, pipes, etc.
Also the tsconfig.json file is important as it defines TS compile rules for your project.
If you're thinking I have to learn a whole new language?... Uh... kinda, TypeScript is a superset of JavaScript. Don't be intimidated; it's there to make your development easier. I felt like I had a good grasp on it after just a few hours playing with it, and had it all down after 3 days.
You bind to your HTML similarly like how you would if in an Angular 1 directive. So variable like $scope and $rootScope have been deprecated.
This one you may have been implied. Angular 2 is still a MV* but you'll be using 'components' as a way to bind code to your templates, for instance, take the following
import { Component } from '#angular/core';
#Component({
selector:'my-app',
template: '<h1> Hello World! </h1>'
})
export class AppComponent {}
Here think of the import statement as your dependency injection in a v1 controller. You use import to import your packages, where the import {Component} says you'll be making a component you'd like to bind to your HTML.
Notice the #Component decorator you have a selector and template. Here think of the selector as your $scope that you use like you use v1 directives where the name of the selector is what you use to bind to your HTML like so
<my-app> </my-app>
Where <my-app> is the name of your custom tag you'll use that will act as a placeholder for what's declared in your template. i.e.) <h1> Hello World! </h1>. Whereas this would look like the following in v1:
HTML
<h1>{{hello}}</h1>
JS
$scope.hello = "Hello World!"
Also can you add something between these tags to generate a loading message, like this:
<my-app> Loading... </my-app>
Then it will display "Loading..." as the loading message.
Note that what's declared in template is the path or the raw HTML you'll be using in your HTML in your selector tag.
A fuller implementation of Angular 1 would look more like this:
HTML
<h1 ng-controller="myCtrl">{{hello}}</h1>
In v1 this would look something like
JS
angular.module('controller', [])
.controller('myCtrl', function( $scope) {
$scope.hello = "Hello World!"
})
This is what I really like about v2. I found directive was a steep learning curve for me in v1 and even when I had them figured out I often had the CSS render not how I intended. I find this is way simpler.
V2 allows for easier scalability of your app since you can break up your app up easier than you could in v1. I like this approach as you can have all your working parts in one file as opposed to having several in angular v1.
What about converting your project from v1 to v2?
From what I've heard from the development team if you'd like to update your v1 project to v2 you'll just be going through and deleting deprecated blobs and replace your $scopes with selectors. I found this video helpful. It's with some of the Ionic team that are working side by side with the angular team as v2 has a stronger focus on mobile https://youtu.be/OZg4M_nWuIk
UPDATE: I updated by adding examples as official implementations of Angular 2 have surfaced.
UPDATE 2: This still seems to be a popular question so I just thought I'd some resource I found very helpful when I started working with angular 2.
#Helpful Resources:
For more on ES6, I recommend checking out The New Boston's ECMAScript 6 / ES6 New Features Tutorials - YouTube Playlist
To write Typescript functions and see how they compile to Javascript check out the Typescript language Playground
To see a function by function breakdown of what the Angular 1 equivalence is in Angular 2 see the Angular.io - Cookbook -A1 A2 Quick Reference

It might help you to understand the comparison of Angular 1 vs Angular 2.
The Angular 2 proved to have lots of benefits over Angular 1:
It is entirely component based.
Better change detection
Ahead of Time compilation (AOT) improves rendering speed.
TypeScript is primarily used for developing Angular 2 applications.
Angular 2 has better performance over Angular 1.
Angular 2 has a more powerful templating system than Angular 1.
Angular 2 has simpler APIs, lazy loading, easier debugging.
Angular 2 is much more testable than Angular 1.
Angular 2 provides nested components.
Angular 2 provides a way to execute more than two systems together.
And So On...

Angular 2 and Angular 1 is basically a different framework with the same name.
angular 2 is more ready for the current state of web standards and the future state of the web ( ES6\7, immutiablity, components, shadow DOM, service workers, mobile compatibilty, modules, typescript and so on and so on... )
angular 2 killed many main features in angular 1 like - controllers, $scope, directives (replaced with #component annotations), the module definition, and much more, even simple things like ng-repeat has not left the same as it was.
any way, change is good, angular 1.x had it flaws, and angular 2 is more ready for the future web requirements.
to sum things up - i do not recommend you to start an angular 1.x project now - this is probably the worst time to do so as you will have to migrate later to angular 2, i you set youre mind about angular than choose angular 2, google has already launched a project with angular 2, and by the time you finish the project angular 2 should already be in the spotlight.
if you want something stabler, you can think about react\elm and flux and redux as JS frameworks.
angular 2 is going to be awesome, that's for no doubt.

No framework is perfect. You can read about flaws in Angular 1 here and here. But that doesn't mean it is bad. The question is what problem are you solving. If you want to roll out a simple app quickly, which is lightweight, with limited data binding usage then go ahead with Angular 1. Angular 1 was built 6 years back to solve rapid prototyping which it does pretty well. Even if your use case is complex still you can use Angular 1 but then you should be aware of nuances and best practices around building a complex web app. If you are developing an app for learning purpose I would suggest to move to Angular 2 as that is where the future of Angular is.

The one stand-out feature in Angular v2 and also in ReactJs is that they both have embraced the new Web-Components architecture of development. What this means is that we can now create independent Web-Components and plug-and-play them to any website in the world that has the same technology stack of the this Web-Component. Cool! yeah very cool. :)
The other most prominent change in Angular v2 is that it's primary development language is none other than TypeScript. Although TypeScript belongs to Microsoft, and it is a superset of JavaScript of 2015 (or ECMAScript6/ES6), but it has some features that are very promising. I would recommend the readers to checkout TypeScript in a bit detail (which is fun of-course) after reading this tutorial.
Here I would say that the guys trying to interrelate Angular v1 and Angular v2 further confuse the readers, and in my humble opinion, Angular v1 and Angular v2 should be treated as two different frameworks. In Angular v2, we have Web-Components' concept of developing web applications, while in Angular v1 we have to play with Controllers, and (sadly or luckily) no controllers are present in Angular v2.

One thing to notice is angular2 is using typescript.
I did angular1 with cordova in my intern and now i am doing a angular 2. I think angular2 will be the trend as it more structured in my opinion but the cons is that there are few resources to refer when you have problem or difficulties. angular 1.x has tons of personalized directives that can be super easy to use.
Hope it helps.

Angular 2 is much better than 1, at least in what it offers: support for web components, using typescript, performance and overall simplicity of the interface, was the reason I decided to start a project using angular 2. However, from the get go, I realized there are issues in angular 2 (e.g. routing with apache) for which very little or no documentation is available, so the documentation and community of angular 2 is the biggest pitfall for angular 2, as it isn't developed enough.
I would say, if you need to raise a site quickly for a short deadline use the well known angular 1, if you're in a longer project, and can afford the time to investigate new issues (that you might be the first to encounter, which could be a bonus if you think of the contribution, you might give to the angular 2 community) than go with angular 2.

Related

AngularJS - Defining Components using .components() vs using TypeScript [duplicate]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Months ago, I decided to study Angular. When I was doing some advance and create some app using it, I realize that Angular 2 is in Developer preview, so it's a matter of time before it's going to be released. Because Angular 2 is not going to be compatible with Angular 1, and there are a lot of changes, the question is, is it better to continue developing with Angular 1.x or start developing Angular 2?
It's a fact that we don't always have to be using the latest version nor the newest language on the market, but in this case, the app is still small so I could change without problems.
Let me preface by saying, I'm assuming you and everyone who will be reading this is already comfortably with Angular 1 (now referred to as AngularJS, as opposed to simply Angular for the newer versions). That being said, let's get into some of the additions and key differences in Angular 2+.
They added an angular cli.
You can start a new project by running ng new [app name].
You can serve your project by running ng serve
learn more here: https://github.com/angular/angular-cli
Your angular code is written in ES6 Typescript and it compiles at runtime to Javascript in the browser.
To get a full grasp on this I recommend checking out some the resource list I have at the bottom of my answer.
Project Structure
In a basic structure, you will have a app/ts folder where you'll be doing most your work and a app/js You'll find in the app/js folder files with a .js.map extension. They "map" your ".ts" files to your browser for debugging as your browser cannot read native typescript.
Update: It's out of beta. The project structure changed a bit, in most cases and if you're using the angular cli, you'll be working in the
src/app/ folder. In a starter project, you'll have the following.
app.component.css
app.component.html
app.component.spec.ts
app.component.ts
app.module.ts
index.ts
app.component.css: CSS file you should use specific to the component.html
app.component.html: A view (variable declared in the app.component.js)
app.component.spec.ts: used for testing app.component.ts
app.component.ts: Your code that binds to app.component.html
app.module.ts: This it what kicks off your app and where you define all plugins, components, services, etc. This is the equivalent of the app.js in Angular 1
index.ts used to define or export project files
Additional information:
Pro tip: you can run ng generate [option] [name] to generate new services, components, pipes, etc.
Also the tsconfig.json file is important as it defines TS compile rules for your project.
If you're thinking I have to learn a whole new language?... Uh... kinda, TypeScript is a superset of JavaScript. Don't be intimidated; it's there to make your development easier. I felt like I had a good grasp on it after just a few hours playing with it, and had it all down after 3 days.
You bind to your HTML similarly like how you would if in an Angular 1 directive. So variable like $scope and $rootScope have been deprecated.
This one you may have been implied. Angular 2 is still a MV* but you'll be using 'components' as a way to bind code to your templates, for instance, take the following
import { Component } from '#angular/core';
#Component({
selector:'my-app',
template: '<h1> Hello World! </h1>'
})
export class AppComponent {}
Here think of the import statement as your dependency injection in a v1 controller. You use import to import your packages, where the import {Component} says you'll be making a component you'd like to bind to your HTML.
Notice the #Component decorator you have a selector and template. Here think of the selector as your $scope that you use like you use v1 directives where the name of the selector is what you use to bind to your HTML like so
<my-app> </my-app>
Where <my-app> is the name of your custom tag you'll use that will act as a placeholder for what's declared in your template. i.e.) <h1> Hello World! </h1>. Whereas this would look like the following in v1:
HTML
<h1>{{hello}}</h1>
JS
$scope.hello = "Hello World!"
Also can you add something between these tags to generate a loading message, like this:
<my-app> Loading... </my-app>
Then it will display "Loading..." as the loading message.
Note that what's declared in template is the path or the raw HTML you'll be using in your HTML in your selector tag.
A fuller implementation of Angular 1 would look more like this:
HTML
<h1 ng-controller="myCtrl">{{hello}}</h1>
In v1 this would look something like
JS
angular.module('controller', [])
.controller('myCtrl', function( $scope) {
$scope.hello = "Hello World!"
})
This is what I really like about v2. I found directive was a steep learning curve for me in v1 and even when I had them figured out I often had the CSS render not how I intended. I find this is way simpler.
V2 allows for easier scalability of your app since you can break up your app up easier than you could in v1. I like this approach as you can have all your working parts in one file as opposed to having several in angular v1.
What about converting your project from v1 to v2?
From what I've heard from the development team if you'd like to update your v1 project to v2 you'll just be going through and deleting deprecated blobs and replace your $scopes with selectors. I found this video helpful. It's with some of the Ionic team that are working side by side with the angular team as v2 has a stronger focus on mobile https://youtu.be/OZg4M_nWuIk
UPDATE: I updated by adding examples as official implementations of Angular 2 have surfaced.
UPDATE 2: This still seems to be a popular question so I just thought I'd some resource I found very helpful when I started working with angular 2.
#Helpful Resources:
For more on ES6, I recommend checking out The New Boston's ECMAScript 6 / ES6 New Features Tutorials - YouTube Playlist
To write Typescript functions and see how they compile to Javascript check out the Typescript language Playground
To see a function by function breakdown of what the Angular 1 equivalence is in Angular 2 see the Angular.io - Cookbook -A1 A2 Quick Reference
It might help you to understand the comparison of Angular 1 vs Angular 2.
The Angular 2 proved to have lots of benefits over Angular 1:
It is entirely component based.
Better change detection
Ahead of Time compilation (AOT) improves rendering speed.
TypeScript is primarily used for developing Angular 2 applications.
Angular 2 has better performance over Angular 1.
Angular 2 has a more powerful templating system than Angular 1.
Angular 2 has simpler APIs, lazy loading, easier debugging.
Angular 2 is much more testable than Angular 1.
Angular 2 provides nested components.
Angular 2 provides a way to execute more than two systems together.
And So On...
Angular 2 and Angular 1 is basically a different framework with the same name.
angular 2 is more ready for the current state of web standards and the future state of the web ( ES6\7, immutiablity, components, shadow DOM, service workers, mobile compatibilty, modules, typescript and so on and so on... )
angular 2 killed many main features in angular 1 like - controllers, $scope, directives (replaced with #component annotations), the module definition, and much more, even simple things like ng-repeat has not left the same as it was.
any way, change is good, angular 1.x had it flaws, and angular 2 is more ready for the future web requirements.
to sum things up - i do not recommend you to start an angular 1.x project now - this is probably the worst time to do so as you will have to migrate later to angular 2, i you set youre mind about angular than choose angular 2, google has already launched a project with angular 2, and by the time you finish the project angular 2 should already be in the spotlight.
if you want something stabler, you can think about react\elm and flux and redux as JS frameworks.
angular 2 is going to be awesome, that's for no doubt.
No framework is perfect. You can read about flaws in Angular 1 here and here. But that doesn't mean it is bad. The question is what problem are you solving. If you want to roll out a simple app quickly, which is lightweight, with limited data binding usage then go ahead with Angular 1. Angular 1 was built 6 years back to solve rapid prototyping which it does pretty well. Even if your use case is complex still you can use Angular 1 but then you should be aware of nuances and best practices around building a complex web app. If you are developing an app for learning purpose I would suggest to move to Angular 2 as that is where the future of Angular is.
The one stand-out feature in Angular v2 and also in ReactJs is that they both have embraced the new Web-Components architecture of development. What this means is that we can now create independent Web-Components and plug-and-play them to any website in the world that has the same technology stack of the this Web-Component. Cool! yeah very cool. :)
The other most prominent change in Angular v2 is that it's primary development language is none other than TypeScript. Although TypeScript belongs to Microsoft, and it is a superset of JavaScript of 2015 (or ECMAScript6/ES6), but it has some features that are very promising. I would recommend the readers to checkout TypeScript in a bit detail (which is fun of-course) after reading this tutorial.
Here I would say that the guys trying to interrelate Angular v1 and Angular v2 further confuse the readers, and in my humble opinion, Angular v1 and Angular v2 should be treated as two different frameworks. In Angular v2, we have Web-Components' concept of developing web applications, while in Angular v1 we have to play with Controllers, and (sadly or luckily) no controllers are present in Angular v2.
One thing to notice is angular2 is using typescript.
I did angular1 with cordova in my intern and now i am doing a angular 2. I think angular2 will be the trend as it more structured in my opinion but the cons is that there are few resources to refer when you have problem or difficulties. angular 1.x has tons of personalized directives that can be super easy to use.
Hope it helps.
Angular 2 is much better than 1, at least in what it offers: support for web components, using typescript, performance and overall simplicity of the interface, was the reason I decided to start a project using angular 2. However, from the get go, I realized there are issues in angular 2 (e.g. routing with apache) for which very little or no documentation is available, so the documentation and community of angular 2 is the biggest pitfall for angular 2, as it isn't developed enough.
I would say, if you need to raise a site quickly for a short deadline use the well known angular 1, if you're in a longer project, and can afford the time to investigate new issues (that you might be the first to encounter, which could be a bonus if you think of the contribution, you might give to the angular 2 community) than go with angular 2.

AngularJS migration to using imports/exports

Our project is currently still running on AngularJS (v1.6) + TypeScript, but we want to start making the app ready to upgrade to the latest Angular, by implementing components, similar to how they are written in Angular. Currently we are not using imports or exports, but want to introduce this gradually. I.e. we would like to start using:
import * as angular from "angular";
import { MyComponentComponent } from './MyComponent.component';
export default angular
.module('myModule', [])
.component('myComponent', MyComponent);
instead of
angular
.module('myModule', [])
.component('myComponent', MyComponent);
Doing this however currently causes issues due to scope. Our app now has the global variable angular that everything gets attached to, while the import/export creates closures that inject a separate instance of angular, so the two aren't able to communicate.
Is there a way to to combine the two methods so that we can gradually upgrade the existing system?
Try to use NgUpgrade, it will upgrade your app to the latest version.
Have a look on https://angular.io/guide/upgrade
Using ngUpgrade to upgrade the angular is a very good suggestion. With the help of this, you can upgrade your existing angularjs project in a much more efficient way like converting the code side by side by running angularjs and angular code simultaneously. There are certain steps that you need to follow in order to perform migration successfully:
Installing dependencies for Angular and ngUpgrade.
Setup ngUpgrade for your project.
We are also currently in a process to migrate our angularjs project to angular. We have followed the below references for our migration. It will provide you a detailed overview of the process and hope it will help you in some way:
https://scotch.io/tutorials/get-started-with-ngupgrade-going-from-angularjs-to-angular
https://blog.angular.io/migrating-to-angular-fc9618d6fb04
https://medium.com/contentsquare-engineering-blog/angularjs-to-angular5-upgrading-a-large-application-7e6fbf70bafa
https://itnext.io/an-alternate-way-to-angular-migration-c7932cf05a1b
There are two ways (2 and 3 are similar but separate in action):
Rewriting the application (best way but difficult for huge applications)
Going to a hybrid state (e.g. upgrading without forking by having a
transitional hybrid app with both AngularJS and Angular 5). See AngularJS to Angular5 — Upgrading a large application
Migrating each module wise. See Migrating Angular 1 Applications to Latest Angular in 5 Simple Steps

Difference between Angularjs and angular [duplicate]

This question already has answers here:
AngularJS vs Angular [closed]
(7 answers)
Closed 5 years ago.
What is the Difference between Angularjs and angular(eg. cli and versions)?
I want to work Angular but I don't know differences for select one of them. I googled but don't explicitly mention differences between them.
AngularJS is the first version of Angular.
AngularCLI is a tool used to generate angular components, They are not comparable.
What you might mean, is what is the difference between Angular and AngularJS.
The answer to this question is that AngularJS is the first version of Angular.
It works with javascript and it is still getting supported but it is not compatible with Angular.
I'd suggest you start with Angular (Can also be called Angular2 or Angular4).
It is very confusing, but to sum it up, AngularJS is an old version.
Angular is the newer version and since everyone is migrating to Angular.
I would suggest you learn Angular instead of AngularJS.
AngularJS typically refers to Angular 1, or the original angular which has some differences between Angular 2+.
Some of the logic and keywords are different from 1 to 2+.
Angular CLI is a command-line interface for the current version of Angular, Angular 4.
Angular CLI provides a generator/framework for a new project using Angular.
The current documentation on angular.io is in Angular CLI.
Angular CLI stands for Angular Command Line Interface. As the name says, it is a command line tool for creating angular apps. It is recommended to use angular cli for creating angular apps as you don't need to spend time installing and configuring all the required dependencies and wiring everything together.
angular-cli provides you with boilerplates and therefore, saves your time.
whereas AngularJS is a client side framework of JavaScript which is based on MVC Architecture and provides a Single-page application solution for dynamic websites.
If you want choose any technology then following points should be considered:
Code Re-usability
Maintenance of the existing code
Testing of the code
Modularity and Scalibility for Team Development

Migrate AngularJS 1.x to AngularJS 2.x [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I am learning AngularJS 2 to migrate my apps from Angular 1.x. I found, It completely different from Angular 1. What are the benefits I will get if i migrate from Angular 1 to Angular 2. I like to get your suggestions, benefits, experiences and difficulties in this migration.
Angular 2 is just completely revived framework.
Performance improvements:
Performance improved in Angular 2.0 as compared to Angular 1.x. Bootstrap is now platform specific in angular 2.o. So if application is bootstrap from browser it will call different bootstrap as compare to mobile app. So for browser bootstrap package:angular2/platform/browser.dart is used.
For mobile loading Apache Cordova can be used to reduce loading time.
Mobile Support:
Angular 1.x was made for responsive and two way binding app. There was no mobile support. Although there are other libraries which make angular 1.x run on mobile. Angular 2.0 is made keeping in mind mobile oriented architecture. There are libraries i.e. Native script which help mobile Angular 2 mobile development fast. Build Truly Native Mobile Apps with Angular | NativeScript. It also render same code in different way on browser as well as on mobile app.
TypeScript:
TypeScript(TS) is used heavily in Angular 2. Google currently using DART for coding. DART or TypeScript can be used for Angular 2. Learning TypeScript is very good since other frameworks and libraries i.e. REACTJS is also using TS. Hence if one can learn TS it’s very easily to implement REACTJS and other libraries in project.
If any developer is coming from JAVA, .NET background TypeScript is very easy to learn.
No $Scope in Angular 2:
Angular 2 is not using $scope anymore to glue view and controller. This is one of the biggest problem when you did coding in Angular 1 and then want to try Angular 2 for the project. However if anyone is coming from JAVA, .NET/ background can easily pick up because syntax are more similar to Java.
function($scope)
{
$scope.comparison =”Angular 1 vs Angular 2”
}
//is replaced by
constructor()
{
this.comparison =”Angular 1 vs Angular 2”
}
Component based Programming:
Just like ReactJs, AngularJs is also using component based programming. Component create less dependent and faster entities. I Angular 1 we have modular programming concept. Modular Programming was evolved from the fact that JQuery code were lot mess. Now component UI make component fast.
#Component({
selector: 'AngularComparison'
})
#View({
templateUrl: './components/example/AngularComparison.html'
})
export class AngularComparison {
constructor() {
this.comparison= “Angular 1 vs Angular 2”;
}
}
Apart from this there are other improvement in brand new Angular 2 framework:
Injectors changed significantly. Child injectors is new thing in Angular 2.
There were bunch of directives in Angular 1.
Angular 2 has only Component, Decorator and Template directive.
JSON based Route config is more easy to edit.
Note Points
First thing, Angular 2 is not the upgrade of angular 1. Angular 2 is completely rewritten.
Angular 2 is using Typescript which is super set of javascript (It doesn’t mean only typescript, dart also).
Angular 1.x was not built with mobile support in mind, where Angular 2 is mobile oriented.
Angular 1 core concept was $scope, and you will not find $scope in angular 2.0. Angular 2 is using zone.js to detect changes. See the below code.
Angular 1.x controllers are gone. We can say that controllers are replaced with “Components” in Angular 2.

Angularjs + Zurb Foundation, do they play well together?

I'm having a hard time setting up a project with angular and foundation 3 (rails in backend). So I have been searching a lot but there aren't many results.
I'm serving angular from a subfolder (localhost:3000/app), and started the html something like this
!!!5
%html{ "ng-app" => "App" }
%head
-# I tried this for html5 url on angular, not so much help so far
%base{:href => "/app/"}
%title
NG APP
...
%body
%header
...
%main
= yield
%footer
...
= javascript_include_tag "application"
= yield :javascripts
A couple of view work just fine. But when I tried to use the foundations tab, I could make work, because angular pass the anchor as a url that shold be check against $routeProvider.
So, I check some question here, and part of the answers give me the impression that foundation work fine enabling html5 mode in angular. (Which I could make it) and other answers say that in order to make work foundation with angular should write a directive for every component on foundation. Or the last case is moving to Twitter Bootstrap.
So, I can find a unified answer, could you please, confirm if right now I can use foundation with angular in a direct way. Thanks.
The best choice would be wrapping Foundation plugins in angular services or using only CSS/SASS provided with the framework and recreating the behaviour from scratch. Focus on prototyping using markup + stylesheets and then create logic in the angular way. At least, this is what I would do if I needed / had to use Foundation.
Twitter Bootstrap works in a similar way and the only advantage of moving to this framework is the fact that you can find plenty of angular modules / directives wrapping available plugins. In this case you wouldn't have to do the same job twice and well.
Take a look here: http://mgcrea.github.io/angular-strap/ in the first place.
Then look for bootstrap-based components in Bower.io Components Directory
Also, as some people in the comments have mentioned, you might need to bootstrap you application manually, which is as simple as wrapping you app in a module and running:
angular.bootstrap(element[, modules]);
// http://docs.angularjs.org/api/angular.bootstrap
As I said, it's usually better not to reinvent the wheel.
Edit:
There's an interesting discussion on Google Groups regarding this topic (and unsurprisingly users' conclusions are quite similar): https://groups.google.com/d/msg/angular/Htkzt7Fsaog/TeFm5l4snTwJ
Here is an almost complete adaptation of the Angular UI Bootstrap components to the Foundation CSS: http://madmimi.github.io/angular-foundation/.
You can use the angular-ui-foundation library on github, its probably the best place to start from,
https://github.com/mhayes/angular-ui-foundation

Resources