日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
AngularJS+ExpressJS入門搭建網(wǎng)站

月份開始,接到了新的任務(wù),跟UI開發(fā)有關(guān),用的是Angular JS,Express JS等技術(shù)。于是周末順便學(xué)習(xí)下新技術(shù)。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供蔡甸網(wǎng)站建設(shè)、蔡甸做網(wǎng)站、蔡甸網(wǎng)站設(shè)計、蔡甸網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、蔡甸企業(yè)網(wǎng)站模板建站服務(wù),10多年蔡甸做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

組里產(chǎn)品UI架構(gòu)如下:

其中前端,主要使用Angular JS框架,另外配合Bootstrap提供的很多控件以及JQuery,后臺主要是Express JS搭建的Web Server,Express JS配合Nginx使用非常方便。

由此在項目不忙的時候,自己于是有時間和興趣學(xué)習(xí)一下Angular JS與Express JS。

同時自己實現(xiàn)了一個最簡單的Angular JS + Express JS的網(wǎng)站示例。

 一. Angular JS

Angular JS是由谷歌員工開發(fā),后由谷歌維護的一個項目,官網(wǎng)為:https://angularjs.org/。上面有詳細(xì)的文檔,可以下載***的版本1.4和穩(wěn)定版1.3.15。

簡單來講,Angular JS是一個作用在前端的Javascript框架。它的兩大特點是通過指令擴展了Html,并且通過表達(dá)式綁定數(shù)據(jù)到Html。同時提供了控制器,F(xiàn)ilter過濾器,F(xiàn)actory等服務(wù)。

Angular JS因為作用在前端,所以可以和任何服務(wù)器技術(shù)相結(jié)合,與Express JS就是很好的結(jié)合。

Angular JS的產(chǎn)生為了解決靜態(tài)網(wǎng)頁操作DOM的弊端,適用于開發(fā)動態(tài)Web應(yīng)用。

Angular JS的原理可通過下圖了解:

網(wǎng)上入門學(xué)習(xí)的資料也很多,這里不予贅述。但介紹一下Angular JS的幾個重要概念:

1. 控制器Controller

要動態(tài)操作網(wǎng)頁中的數(shù)據(jù),我們可以針對Html頁面編寫控制器,控制器本質(zhì)是一個Javascript方法,例如我們可以針對每一個HTML頁面,寫一個對應(yīng)的Javascript方法做控制器,來控制頁面中的數(shù)據(jù)。如下:

index.html

 
 
  1.  
  2.  
  3.      
  4.          
  5.          
  6.          
  7.          
  8.      
  9.      
  10.         
     
  11.             

    Hello {{name}}

     
  12.         
 
  •      
  •  
  •  這是一個Angular JS控制編寫的頁面,指定Angular JS的app為myApp,注意看其中的表達(dá)式,{{name}},name就是一個動態(tài)變量。那name的值從何而來?就是要在對應(yīng)的控制器中給name賦值,從來用戶訪問index.html頁面時可看到name真實的值。

    controller.js

     
     
    1. // Declare angular JS level module wich depends on filters, and services 
    2. var myControllers = angular.module('myControllers', []); 
    3.  
    4. // controller 
    5. myControllers.controller('indexContrl', ['$scope', function ($scope) { 
    6.     $scope.name = "Kevin"; 
    7. }]); 

     在controller.js中,我們定義了一個indexContrl的控制器,這個控制器來給index.html中的name賦值。當(dāng)然我覺得真實開發(fā)中,控制器的代碼肯定會很多,建議每一個像indexContrl的控制器單獨放在一個JS文件中,這樣規(guī)范,好維護。

    那有一個問題,indexContrl如何與index.html關(guān)聯(lián)起來?Angular JS怎么知道我們要用indexContrl來控制index.html?

    這里有兩種方式,一是在index.html中直接指定,


    Hello {{name}}


    但這種方式,對于大型網(wǎng)站來說,太麻煩。建議使用另外一種方式,就是用Angular JS的另一個Module ng-route,做路由控制,針對不同的路徑,在同一個文件中定義好各自的控制器。如下:

    myAngularApp.js

     
     
    1. // Declare angular JS level module wich depends on filters, and services 
    2. var myApp = angular.module('myApp', [ 'ngRoute', 'myControllers']); 
    3.  
    4. // route 
    5. myApp.config(['$routeProvider', 
    6.     function($routeProvider) { 
    7.         $routeProvider. 
    8.         when( 
    9.                 '/', 
    10.                 { 
    11.                     templateUrl: 'index.html', 
    12.                     controller: 'indexContrl' 
    13.                 } 
    14.         ). 
    15.         otherwise( { 
    16.             redirectTo: '/404' 
    17.         }); 
    18.     } 
    19. ]); 

     值得注意的是,一定要在myApp的moudle中引用ng-route,同時要在文件中引用angular-route.js文件,否則不起作用。

    這樣index.html頁面中的數(shù)據(jù),會被indexContrl函數(shù)控制。這里只是一個簡單的Demo,更多的功能要去看文檔。

    2. Filter過濾器

    Angular JS提供過濾器功能,本質(zhì)是我們定義一些通用的方法,來格式化頁面上輸出的數(shù)據(jù)。非常方便。

    建議開發(fā)時放在單獨的Filter.js文件中。

    3. Factory服務(wù)

    也是讓我們定義一些通用的方法,作為服務(wù)。但所有的服務(wù)都是延遲實例化,只要用到時或被依賴時才會實例化,都是單例。

    建議開發(fā)時放在單獨的Factory.js文件中。

    #p#

    二. Express JS

    在示例的前端中,我們使用Angular JS框架開發(fā)了Html頁面以及對應(yīng)的JS文件。但網(wǎng)站的后臺就要用其他技術(shù)了。如果我們要用Node.js做后臺,那很簡單,http.createServer就可以了。但在真實的網(wǎng)站開發(fā)中,用Express JS會更適合。

    Express JS是目前***的基于Node.js的Web開發(fā)框架,提供各種模塊,如session,cookie等,可快速搭建一個具有完整功能的網(wǎng)站。

    本質(zhì)來講,Express JS是基于Node.js內(nèi)置的http模塊開發(fā)而成。

    Express JS和Nginx反向代理服務(wù)器搭配非常方便。

    這里Express JS有一個重要概念是中間件middleware,可以加載使用很多Express JS或其他模塊提供的模塊作為中間件,它的作用是處理http請求,一個中間件處理完,可以傳遞給下一個中間件。

    可使用NPM來下載Express JS。

     npm install express

    如果要快速使用Express JS來搭建網(wǎng)站后臺,推薦一個工具,叫express-generator,它可以幫你快速建一個Express JS項目,生成必要的文件。

    npm install -g express-generator

    但這里,我發(fā)現(xiàn)express generator中使用的其他模塊較多,如jade做視圖渲染等,稍顯復(fù)雜。我還是參照,自己建立一個最簡單的Express JS項目。

    路徑如下:

    其中public文件夾中放置的是UI相關(guān)文件,如下:

    其中app.js是Express JS的起始文件,相當(dāng)于main函數(shù)。

    app.js

     
     
    1. var express = require('express'); 
    2. var http    = require('http'); 
    3. var path    = require('path'); 
    4. var routes  = require('./routes/index'); 
    5.  
    6. var app = express(); 
    7.  
    8. app.use(express.static(path.join(__dirname, 'public'))); 
    9.  
    10. app.use('/', routes); 
    11.  
    12. http.createServer(app).listen(3000); 

     這里,就是使用Express JS建立一個server,注意第8行代碼的作用是指定頁面的文件夾,第10句的作用是關(guān)于路徑/的路由信息在routes文件夾里的index文件中定義,這兩句順序不能錯。

    routes/index

     
     
    1. var express = require('express'); 
    2. var router = express.Router(); 
    3.  
    4. /* GET home page. */ 
    5. router.get('/', function(req, res, next) { 
    6.   res.render('index', { title: 'Express' }); 
    7. }); 
    8.  
    9. module.exports = router; 

     意為對于路徑/的訪問,去public文件夾下找index.html文件。

    這樣通過一條命令,

    node app.js

    就可以把網(wǎng)站掛起來。

    三. 示例結(jié)果及小結(jié)

    ***訪問網(wǎng)站,可看到正確的結(jié)果,網(wǎng)站已被掛起,同時頁面中的變量已被Angular JS控制器替換為正確數(shù)據(jù)。

    這里講一個小地方,最初試驗時頁面的變量怎么也不替換,花了很多個小時,換了Angular JS庫,改變了控制器等寫法,都沒用。***查資料和文檔,才發(fā)現(xiàn)只有頁面中有ng-view,才會起作用。原來是這樣??拥?。本文只介紹一個很簡單的Angular JS + Express JS網(wǎng)站搭建示例。希望對你有用:-)


    網(wǎng)站題目:AngularJS+ExpressJS入門搭建網(wǎng)站
    本文URL:http://m.5511xx.com/article/dppsdjg.html