åºäºrequirejsåangularæå»ºspaåºç¨
åºæ¬çangular项ç®ç»æå¤§è´å
å«å¦ä¸å 个é¨åï¼
1ï¼app.js å
¥å£
ãã2ï¼index.html htmlæ¡æ¶é¡µ
ãã3ï¼libï¼vendorï¼ç¬¬ä¸æ¹ç±»åº
ãã4ï¼components ä¸å¡ç»ä»¶
ãã5ï¼stylesï¼images éæèµæºé¨å
1ã常è§å®ç°
ããå建æä»¶å¤¹demo1ï¼æç §ä¸è¿°ç»æåå«å建app.js ,index.htmlæä»¶ï¼å建libãcomponentsãstylesåimagesæä»¶å¤¹ï¼æç»å¦ä¸å¾æç¤ºï¼
卿¤åºç¡ä¸ï¼æä»¬å¢å ä¸ä¸ªä¸å¡ç»ä»¶homeï¼aboutï¼contactï¼å¹¶åå§ååºæ¬ä»£ç å¦ä¸ï¼
æ ¸å¿ä»£ç æä»¶
index.html
1 <!DOCTYPE html> 2 <html lang="en" ng-app="app"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>demo1</title> 8 <script src="https://cdn.bootcss.com/angular.js/1.6.0/angular.js"></script> 9 <script src="https://cdn.bootcss.com/angular-ui-router/1.0.3/angular-ui-router.js"></script>10 11 <script src='./app.js'></script>12 <script src='./components/home/home.controller.js'></script>13 <script src='./components/about/about.controller.js'></script>14 <script src='./components/contact/contact.controller.js'></script>15 16 </head>17 <body>18 <div class="nav">19 <ul>20 <li><a ui-sref="home">Home</a></li>21 <li><a ui-sref="about">About</a></li>22 <li><a ui-sref="contact">Contact</a></li>23 </ul>24 </div>25 <div class="container">26 <div ui-view></div>27 </div>28 </body>29 </html>
app.js
1 angular.module('app', ['ui.router']) 2 .config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) { 3 //é»è®¤æå 4 $urlRouterProvider.otherwise('/home'); 5 6 $stateProvider.state('home', { 7 url: '/home', 8 templateUrl: './components/home/home.tpl.html', 9 controller: 'HomeController',10 controllerAs: 'vm'11 12 }).state('about', {13 url: '/about',14 templateUrl: './components/about/about.tpl.html',15 controller: 'AboutController',16 controllerAs: 'vm'17 }).state('contact', {18 url: '/contact',19 templateUrl: './components/contact/contact.tpl.html',20 controller: 'ContactController',21 controllerAs: 'vm'22 })23 24 }])
controllerä¸æä»¶æ ¼å¼ä¸ç´ï¼tpl为viewæä»¶ä»¥home模å为ä¾ï¼
home.controller.js
1 angular.module('app')2 .controller('HomeController', HomeController);3 4 HomeController.$inject = ['$scope'];5 6 function HomeController($scope) {7 console.log("HomeController created successfully!!!");8 }
home.tpl.html
<h2>Page Home</h2>
对å½ååå¦ä¸è§å®ï¼æææä»¶å¤¹é½ç¨å°åï¼å¤è¯ç¨ç¹å·éå¼ï¼æææä»¶é½å°åï¼å¤è¯ç¨ç¹å·åå²ï¼æ§å¶å¨ä»¥.controller.jsç»å°¾ï¼ç±»ä¼¼çæ.service.js,.tpl.html,.directive.js,.filter.jsçã
æç»è¿è¡ææå¦ä¸ï¼
ä¸è¿°ä»£ç è½æ£å¸¸è¿è¡ï¼ä½æ¯æä»¬åç°ä¸ä¸ªé®é¢ï¼å½åjsæä»¶æè 说模åè¾å°ï¼æä»¬å¼å ¥ä¸ä¼æå¾å¤§çé®é¢ï¼ä½æ¯å½æä»¬çåºç¨åå¾å¾å¤§ï¼æä»¶å åçè³ä¸ç¾ä¸ªï¼å¦ä½å¤çå¢ï¼æäººè¯´å½ç¶ä½¿ç¨æå»ºå·¥å ·äºï¼ä¸ä¸ªä¸ä¸ªå¼å ¥å¤æ ¢å¢ï¼æå»ºå·¥å ·å½ç¶å¯ä»¥åå°æ¹éå¼å ¥jsæä»¶ï¼ä½æ¯æä»¬è¿éè¦èèæéå è½½çé®é¢ï¼ä¸¾ä¾æ¥è¯´ï¼æä»¬å¨æå¼homeçæ¶åï¼aboutåcontactæ¯æ²¡å¿ è¦å è½½çï¼ä½æ¯æç §æä»¬ä¼ ç»ç模å¼ï¼ææèæ¬é½å®æäºå è½½ï¼è¿é¦å å¢å äºhttpè¯·æ±æ¬¡æ°ï¼èæ¬è¿å¤çå 载解æä¹å½±åæµè§å¨ç渲æï¼ç¨æ·ä½éªå¹¶ä¸å好ï¼åºäºæ¤ï¼æä»¬æå ç§æ¹å¼æ¥å®ç°ï¼1ãåºäºrequirejsæ¥åï¼è¿ä¹æ¯æ¬ç« å 容è¦è®²çé¨åï¼2ã使ç¨webpackååæå ï¼å®ç°æéå è½½ï¼åæçæ¶é´ä¼å å ¥å¯¹åºçæç« ï¼3ã使ç¨oclazyloadï¼å¯èªè¡googleï¼ãæ¬æå°±ä»¥requirejsæ¥å®ç°ä¸ä¸ä¸å¡æ¨¡åçæéå è½½ï¼å¨æ¤ä¹åé¦å å¼å ¥requirejsã
2ãå¼å ¥Requirejs
ããRequireJS æ¯ä¸ä¸ªJavaScript模åå è½½å¨ãå®é常éå卿µè§å¨ä¸ä½¿ç¨ï¼ä½å®ä¹å¯ä»¥ç¨å¨å ¶ä»èæ¬ç¯å¢ï¼å°±å Rhino and Nodeã使ç¨RequireJSå 载模ååèæ¬å°æé«ä»£ç çå è½½é度åè´¨éï¼å®ç°çæ¯AMDè§èï¼å½ç¶ç±»ä¼¼çè¿æCMDè§èçå®ç°æ¡æ¶seajsã
ããRequirejsä¸ï¼ç®åç说ä¸ä¸ªæä»¶ä¸ä¸ªæ¨¡åï¼å³æ¯åæä»¶æ¨¡åï¼æä»¥å¯¹æ¨¡åçå è½½å ¶å®æ¬è´¨ä¸æ¯å¯¹æä»¶çå è½½ã
ããå设读è å·²ç»äºè§£requirejsçåºæ¬ä½¿ç¨æ¹å¼ã
ããä¸ä¸èä¸ï¼è®²å°äºæäºä¸ä¸controllerçæ³¨åæ¹å¼ï¼å ¶ä¸è¯´å°äºå¨ææ³¨åï¼å½ç¶é¤äºcontrollerä¹å¤ï¼è¿æserviceãdirectiveçé½å¯ä»¥å®ç°å¨ææ³¨åï¼è¿ä¹æ¯æä»¬å®ç°æéå è½½çåºç¡ï¼ç°å¨å¯¹æä»¬ç项ç®åä¸ä¸ä¿®æ¹ï¼å¢å requirejsé ç½®æä»¶ï¼main.js
1 require.config({ 2 paths:{ 3 angular:'https://cdn.bootcss.com/angular.js/1.6.0/angular', 4 ui_router:'https://cdn.bootcss.com/angular-ui-router/1.0.3/angular-ui-router', 5 app:'./app' 6 7 }, 8 shim:{ 9 angular:{exports:'angular'}10 }11 });12 13 require(['angular','./app','ui_router'],function(angular,app){14 angular.element(document).ready(function(){15 angular.bootstrap(document,[app.name]);16 })17 })
app.jsä¿®æ¹å¦ä¸ï¼
1 define(['angular', 'ui_router'], function (angular) { 2 var app = angular.module('app', ['ui.router']) 3 .config(['$controllerProvider', '$provide', function ($controllerProvider, $provide) { 4 app.register = { 5 controller: $controllerProvider.register,//å¨ææ³¨åcontroller 6 factory: $provide.factory//å¨ææ³¨åæå¡ 7 } 8 }]) 9 .config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {10 //é»è®¤æå11 $urlRouterProvider.otherwise('/home');12 13 $stateProvider.state('home', {14 url: '/home',15 templateUrl: './components/home/home.tpl.html',16 controller: 'HomeController',17 controllerAs: 'vm',18 resolve: {19 deps: loadCtrl(['./components/home/home.controller'])20 }21 22 }).state('about', {23 url: '/about',24 templateUrl: './components/about/about.tpl.html',25 controller: 'AboutController',26 controllerAs: 'vm',27 resolve: {28 deps: loadCtrl(['./components/about/about.controller'])29 }30 }).state('contact', {31 url: '/contact',32 templateUrl: './components/contact/contact.tpl.html',33 controller: 'ContactController',34 controllerAs: 'vm',35 resolve: {36 deps: loadCtrl(['./components/contact/contact.controller'])37 }38 })39 40 }]);41 return app;42 43 44 function loadCtrl(path_arr) {45 return ['$q', function ($q) {46 var defered = $q.defer();47 require(path_arr, function () {48 defered.resolve();49 });50 51 return defered.promise;52 53 }]54 };55 })
ä¿®æ¹controlleræ³¨åæ¹å¼å¦ä¸ï¼
1 define(['app'], function (app) {2 app.register.controller('HomeController', HomeController);3 4 HomeController.$inject = ['$scope'];5 6 function HomeController($scope) {7 console.log("HomeController created successfully!!!");8 }9 })
æåä¿®æ¹ä¿®æ¹index.htmlä¸èæ¬å¼å ¥æ¹å¼ï¼ä»¥å廿ng-appæä»¤å¯å¨æ¹å¼ï¼angularåºç¨å¯å¨å·²å¨main.jsä¸éè¿domreadyå使ç¨èæ¬å¯å¨ã
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>demo1</title> <script src="https://cdn.bootcss.com/require.js/2.3.3/require.js" data-main="./main"></script> </head> <body> <div class="nav"> <ul> <li><a ui-sref="home">Home</a></li> <li><a ui-sref="about">About</a></li> <li><a ui-sref="contact">Contact</a></li> </ul> </div> <div class="container"> <div ui-view></div> </div> </body> </html>
æç»è¿è¡ææå¦ä¸ï¼å¯ä»¥çå°åªæå¨ç¹å»äºå¯¹åºçèåæ¶ï¼æå è½½äºå¯¹åºçcontrollerï¼
ç±äºä»£ç ç®åï¼æ³¨éå¾å°ã