版本:css
獲取方式html
不能寫if else語句前端
<div>{{val}}</div> <div>{{'angularjs'+'很好很強大'}}</div> <div>{{1+1}}</div> <div>{{1==1?'相等':'不相等'}}</div> <div>{{getItem()}}</div>
在使用了angularjs的頁面,以ng-開頭的屬性,稱之爲指令vue
<body ng-app></body> <input type="text" ng-model="val" ng-init="val">
ng-appnode
ng-model="變量"react
ng-click=" "angularjs
ng-initweb
模塊化四步ajax
建立模塊,myApp是模塊的名字,module方法,數組中要依賴的模塊的名字,用逗號鏈接。沒有要依賴的文件的話,傳空數組。npm
<script> var app=angular.module('myApp',[]); </script>
ng-app後面寫模塊的名字,告訴angularjs當前的頁面由本身建立的myApp模塊去管理
<body ng-app="myApp"></body>
建立控制器,建立模塊的語句的返回值就是一個模塊對象,用這個對象去點方法,就是建立控制器
<script> app.controller('demoCtrlA',function(){ alert(1) }); app.controller('demoCtrlB',function(){ alert(2) }); </script>
告訴angularjs當前區域由這個控制器去控制
<div class="sideBar" ng-controller="demoCtrlA"></div> <div class="main" ng-controller="demoCtrlB"></div>
在控制器中封裝兩個函數
<body ng-app="myApp" ng-controller="demoCtrl"> <input type="text" ng-model="val"> <div>{{val}}</div> <button ng-click="setValue()">設置值</button> <button ng-click="getValue()">獲取值</button> <script src="node_modules/angular/angular.min.js"></script> <script> var app=angular.module('myApp',[]); app.controller('demoCtrl',function($scope){ $scope.val="我是初始值"; $scope.setValue=function(){ $scope.val="我是經過setValue方法更改的值" } $scope.getValue=function(){ alert($scope.val) } }) </script> </body>
傳參
傳遞多個參數,直接接在後面寫,只要和後面一一對應起來就能夠
<ul> <li><a href="#!/article/1/我是第1篇文章">我是第1篇文章</a></li> <li><a href="#!/article/2/我是第2篇文章">我是第2篇文章</a></li> <li><a href="#!/article/3/我是第3篇文章">我是第3篇文章</a></li> </ul> <script> var app=angular.module('myApp',['ngRoute']) app.config(function($routeProvider){ $routeProvider .when('/article/:id/:title',{ templateUrl:'articleTpl', controller:'articleCtrl' }) }); </script>
單頁web應用的應用場景:單頁面應用對搜索引擎不友好,不適合作面向大衆的展現型網站,網站後臺管理系統、辦公OA、混合App等等不須要被搜索引擎搜索到的應用
<script src="node_modules/angular/angular.min.js"></script> <script src="node_modules/angular-route/angular-route.min.js"></script> <body ng-app="myApp"> <a href="#!/index">首頁</a> <a href="#!/list">列表頁</a> <div ng-view></div> </body> <script> var app=angular.module('myApp',['ngRoute']) app.config(function($routeProvider){ $routeProvider .when('/index',{ templateUrl:'./tpl/index.html', controller:'indexCtrl' }) .when('/list',{ templateUrl:'./tpl/list.html', controller:'listCtrl' }) .otherwise('/index') }); app.controller('indexCtrl',function($scope){ $scope.msg="我是首頁msg" }) app.controller('listCtrl',function($scope){ $scope.msg="我是列表頁msg" }) </script>
<script> templateUrl:'./tpl/index.html'//localhost template:'<div>我是首頁</div>'//file|localhosst template:'indexTpl'//file|localhosst </script>
壓縮的時候,不會對字符串進行壓縮,因此數組中傳遞字符串來肯定參數的順序
<script> angular.module("myApp",[]).controller("demoCtrl",["$scope","$timeout","$http","$location",function(a,b,c,d){ a.msg="我是msg" }]) </script>
ng-repeat="循環過程當中的當前項 in 數據"循環數據並生成當前DOM元素
<ul> <li ng-repeat="item in arr">{{item}}</li> </ul>
遍歷數組對象,能夠嵌套,有ng-repeat的標籤中還能夠嵌套ng-repeat的標籤
<ul> <li ng-repeat="person in person"> {{person.name}}{{person.age}} <span ng-repeat="item in person.hobby">{{item}}</span> </li> </ul>
數組項重複,會報錯
<ul> <li ng-repeat="item in arr track by $index">{{item}}</li> </ul>
事件指令
res是形參,表示請求回來的數據
<script src="node_modules/angular/angular.js"></script> <script src="node_modules/angular-sanitize.min.js"></script> <script> angular.module('myApp',['ngSanitize']) .controller('demoCtrl',['$scope','$http',function($scope,$http){ $http({ url:'./test.json', method:'post',//請求方式 params:{//get傳參 a:1, b:2 }, data:{ c:3, d:4 } }).then(function(res){ //成功回調 console.log(res) },function(){ //失敗回調 }) //另一種寫法 $http.get('./test.json',{params:{a:1,b:2}}).then(function(res){ //get方式傳參 console.log(res) }) $http.post('./test.json',{c:3,d:4}.then(function(res){ //post方式傳參 console.log(res) }) }]) </script>
頁面一上來的時候,回調函數會先執行一次
<script> $scope.$watch('val',function(newValue,oldValue){ if(newValue.length>10){ $scope.tips="大於10"; }else{ $scope.tips="小於10" } }) </script>
若是自定義指令中的內容是用標籤包裹的,會被解析出來
<script> angular.module('myApp',[]) .directive('myHeader',[function(){ return { templateUrl:'myHeaderTpl', replace:true, transclude:true } }]) </script>
link中的函數有三個參數
return中有scope,默認是false,這時,link中的scope就是控制器中的$scope,若是將scope設置成turn,指令就有了單獨的做用域
<script> angular.module('myApp',[]) .directive('myDir',[function(){ return { link:function(scope,element,attributes){ element.css('background','red') element.css('background',attributes.myDir) } } }]) </script>
分類
MVC後端思想
MVVN
過濾器
內置過濾器
自定義過濾器
<script> angular.module('myApp',[]) .filter('phonestar',[function(){ return function(value){ return value.substr(0,3)+'****'+value.substr(7) } }]) </script>
ui-router
name是路由名字,必須存在
<script> angular.module('myApp',['ui.router']) .config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){ // $stateProvider 配置路由的對象 $stateProvider .state({ url:'/index', // 錨點值 templateUrl:'indexTpl', name:'index', controller:'indexCtrl' }) .state({ url:'/list', // 錨點值 templateUrl:'listTpl', name:'list', controller:'listCtrl' }) // 當沒有匹配到的路由時 默認跳轉到首頁 $urlRouterProvider.otherwise('/index'); }]) .controller('indexCtrl',['$scope',function($scope){ $scope.msg = "indexCtrl"; }]) .controller('listCtrl',['$scope',function($scope){ $scope.msg = "listCtrl"; }]) </script>
概念:
說明
下載gulp
使用gulp編寫任務
就像使用angularjs框架須要引包同樣,要使用gulp也須要引包
// require('包名') 引包 var gulp = require('gulp'); // gulp變量是對象類型 // 咱們編寫任務 處理任務須要用到gulp對象下面的方法
編寫人生中的第一個gulp任務
// gulp.task('任務名稱',任務回調函數) 建立任務方法 // 任務名稱的用處:在執行任務的時候須要指定任務名稱 // 回調函數:要作的事情須要寫在回調函數中 好比less解析 代碼壓縮... gulp.task('first',function(){ // gulp.src('文件路徑') 獲取文件 // 獲取任務要處理的文件 gulp.src('./css/base.css') // pipe('怎樣處理') 處理任務 // gulp.dest('文件路徑') 將處理好的文件放入參數路徑中 .pipe(gulp.dest('dist/css')) });
執行任務
gulp中提供的方法