angular的require模塊開發部分步驟內容

angular利用require.js和nodejs的一個模塊式開發部分步驟小結:php

 

第一部分:Node.js的下載,npm的安裝,http服務的使用html

一、下載並安裝 node.jsnode

二、工做目錄下寫一個package.json
文件內容:
「scripts」: {
「start」: 「http-server -a 0.0.0.0 -p 8000」,
}
-p 端口號 (默認 8080)jquery

-a IP 地址 (默認 0.0.0.0)web

三、開始菜單搜索的地方,輸入 cmd數據庫

四、訪問上一級目錄 cd..npm

五、一級一級進入package.json所在文件夾 cd 文件名
例如: d: 進入d盤
cd www 進入d盤中的www文件夾json

一次性進入package.json所在文件夾
例如: d: 進入d盤
cd 用戶目錄\個人文檔\HBuilderProject\Angularjsbootstrap

六、配置node.js的http服務
npm install http-server (安裝)
npm install -g http-server (全局安裝加 -g)跨域

npm NPM是隨同NodeJS一塊兒安裝的包管理工具,能解決NodeJS代碼部署上的不少問題,
常見的使用場景有如下幾種:
容許用戶從NPM服務器下載別人編寫的第三方包到本地使用。
容許用戶從NPM服務器下載並安裝別人編寫的命令行程序到本地使用。
容許用戶將本身編寫的包或命令行程序上傳到NPM服務器供別人使用。
install 安裝
-g 全局
http-server 一個簡單的零配置命令行HTTP服務器, 基於 nodeJs.

七、開啓http服務 http-server
注意:須要進入你要打開的文件夾內(在站點目錄下) 在打開cmd輸入http-server 不然打開127.0.0.1:8080 會進入 Index of / 的界面中,得一級級查找文件地址

八、訪問: http://localhost:8080 or http://127.0.0.1:8080
注意:cmd要全程開啓,http服務才生效,關閉cmd http服務關閉

 

 

 

-d 顯示目錄列表 (默認 'True')

-i 顯示 autoIndex (默認 'True')

-e or --ext 若是沒有提供默認的文件擴展名(默認 'html')

-s or --silent 禁止日誌信息輸出

--cors 啓用 CORS via the Access-Control-Allow-Origin header

-o 在開始服務後打開瀏覽器
-c 爲 cache-control max-age header 設置Cache time(秒) , e.g. -c10 for 10 seconds (defaults to '3600'). 禁用 caching, 則使用 -c-1.
-U 或 --utc 使用UTC time 格式化log消息

-P or --proxy Proxies all requests which can't be resolved locally to the given url. e.g.: -P http://someurl.com

-S or --ssl 啓用 https

-C or --cert ssl cert 文件路徑 (default: cert.pem)

-K or --key Path to ssl key file (default: key.pem).

-r or --robots Provide a /robots.txt (whose content defaults to 'User-agent: *\nDisallow: /')

 

第二部分:require的配置和使用

1、require的配置
1.在index.html中引入 require插件
2.data-main 指向 入口文件 main.js
3.首先對require 進行文件配置 路徑配置
不符合amd規範的插件配置
使用require進行模塊調用 ,模塊調用裏邊手動添加app
4.定義app的模塊
5.定義路由表信息
a.index.html 添加 ng-view
b.使用路由服務 添加路由信息,模板信息、控制器信息
c.添加模板文件

d.添加控制器文件(要在main文件中配置而且依賴注入)
e.沒有的頁面要跳轉到首頁

新添加模塊的方法:
1.在路由表中添加一個模塊的路由信息
//xq模塊
.when('/xq',{
templateUrl:"js/views/wd/xq.html",
controller:"wdxqCtrl"
})
2.新建 模板文件
3.新建 控制器文件
4.在main文件中添加 控制器文件,而且依賴注入
注意: 必定要在服務器環境下運行
要及時刷新、清除緩存


2、使用require時, js執行順序
1,加載require.js
2,加載data-main main.js
3,main.js ---> config.js
4,main.js ---> demo.js
5,執行回到函數
6,define(['a','b','c'],function(a,b,c){}); a b c是異步加載,無關順序
(define 定義一個模塊,require 加載一個模塊)


3、具體步驟:
1.在index.html中引入 require插件
2.data-main 指向 入口文件 main.js
例如:
<script src="js/libs/require.js" data-main="js/main" ></script>

3.main.js中的內容
1)首先對 require 進行文件配置 路徑配置
格式:require.config({}); 鍵值對格式書寫
例如:

 1 require.config({        //config  配置    RequireJS的模塊語法容許它儘快地加載多個模塊,雖然加載的順序不定,但依賴的順序最終是正確的。
 2     baseUrl:"js/",  //baseUrl 主路徑
 3     paths:{         //paths  設置短路徑   包括插件,路由,主模塊,自定義控制器,自定義指令,自定義服務,自定義過濾器等全部要依賴注入的js文件
 4          "jquery":"libs/jquery203",     //"ID":"文件夾/文件名",按順序引用,
 5          "angular":"libs/angular.min",  //angular和angular的插件的文件版本必須一致,不然會報錯
 6          "angular-route":"libs/angular-route.min"
 7     },
 8     shim:{       //shim  定義非amd模塊和定義依賴關係
 9          "angular":{  
10           exports:"angular"    //exports  讓文件符合規範
11           },
12          "angular-route":{
13           deps:["angular"],    //deps   定義依賴模塊
14           exports:"angular-route"
15          }
16     }
17 });

2)require 調用模塊
格式:require([name , name2],callback); //這裏的name就是ID,require 和 define 的 name 必須保證一致! 依賴注入順序沒有影響,但最好仍是按順序依賴注入
例如:

1 require(["jquery","angular","angular-route"],function($,angular){  // 須要使用的模塊以參數的形式進行調用($,angular) 等價於 ($angular,$angular-route) $系統符
2     angular.bootstrap(document,["myApp"]); //bootstrap 初始化模塊    myApp自定義的模塊名
3 });

依賴注入的簡單理解:就是在js內調用外部js文件
做用至關於:在html中調用外部文件<script src="js/angular.js"></script>
而在js中咱們寫成["angular"]

4.app.js中的內容
定義app模塊
格式:define(name,[] , callback); 這個name能夠省掉,默認是文件名稱;define函數內部其實就是把這個name以及依賴模塊、回調函數做爲一個對象存儲在全局的數組當中,
也就是 defQueue.push([name,deps,callback]);這個name就是這個組件註冊的的ID!
例子:

define(["angular"],function(angular){
    var app = angular.module("myApp",["angular插件ID"]);
    return app;     //callback
});

5.route.js中的內容
定義路由
格式:define(name,[],callback)
例子:

 1 define(["app"],function(app){      //掛載在模塊app下
 2     return app.config(["$routeProvider",function($routeProvider){
 3         $routeProvider
 4         .when("/",{       //  /hash值 做用:錨點  輸入127.0.0.1:8080/#/hash值 能夠打開/hash 的頁面
 5             templateUrl:"js/views/web/web.html",
 6             controller:"webCtrl"
 7         })
 8         .when("/webdetails/:num",{            // :num  用JsonP拿取數據的時候:num是後臺數據的id  打開地址127.0.0.1:8080/#/hash值/id
 9             templateUrl:"js/views/webDetails/webDetails.html",
10             controller:"webdetailsCtrl"
11         })
12         //重定向頁面  讓頁面初始和查找不到頁面時候跳轉到定向的頁面
13         .otherwise({
14             redirectTo:"/"
15         })
16     }]);
17 });

擴展:跨域訪問服務器數據
參數的傳遞:
1)html頁面 傳遞頁碼 <a href="/#/webdetails/{{$index+1}}"></a>
2)路由頁面修改路由信息 :num "/webdetails/:num"
3) 在控制器頁面 使用 $routeParams 來進行接收
4)將json文件替換成後臺接口數據的使用方式:
$http.jsonp("http://192.168.2.105/data/getWdData.php?id=" + $routeParams.num + "&callback=JSON_CALLBACK").
5)對於接口調用:首先要判斷接口是否連通,直接輸入http://192.168.2.105/data/getWdData.php?id= 進行測試

6.自定義控制器
格式:define(name,[],callback)
例子:

 1 define(["app"],function(app){
 2     app.controller("myController",["$scope","$rootScope","$http",function($scope,$rootScope,$http){    //myController 自定義控制器名  
 3         $rootScope.headTitle = "營業網點";
 4         $rootScope.collect = true; //該頁面是否顯示收藏按鈕   自定義變量
 5 
 6         //get獲取後臺數據
 7         $http.get("json/yywd.json").success(function(data){    //注意:必定要注意這裏的文件地址是相對於主文件index.html的獲取路徑,寫成對於控制器的路徑會報錯獲取不到文件
 8             $scope.branchs = data.branchs;                 //data後臺回調的數據
 9         }).error(function(data){                   
10             console.log(data);
11         })
12 
13         //jsonp獲取後臺數據
14         $http.jsonp("http://192.168.2.105/data/getWdListData.php?callback=JSON_CALLBACK")     //數據接口?回調數據處理
15         .success(function(data){
16             $scope.branchs = data.branchs;
17         })
18         .error(function(data){
19             console.log(data)
20         })
21     }]);
22 })

擴展:解析後臺數據庫中的html標籤
$sce服務 用於解析從後臺數據庫文件中獲取的html標籤

7.自定義指令
格式:define(name,[],callback)
例子:

 1 define(["app"],function(app){
 2     app.directive("backButton",["$window",function($window){    //backButton  自定義指令名   $window依賴注入的服務
 3         return {                        //指令必須  return{} 
 4             restrict:"A",                                   //A 指令的調用方式  ECMA分別表明元素,類,註釋,屬性,其中EA最經常使用
 5             link:function(scope,elem,attr){
 6                 elem.bind('click',function(){
 7                     //回退
 8                     $window.history.back();         //$window服務功能的history.back()方法
 9                 });
10             }
11         }
12     }]);  
13 })

擴展:1)M調用方式的寫法:<!-- directive:指令名 --> 注意:-和數字間要加個空格 2)駝峯寫法指令調用:backButton調用時寫成 back-button -b會把b轉化成大寫

相關文章
相關標籤/搜索