簡體   English   中英

帶有Ionic,Cordova,Node.js,視圖和其他“靜態”文件的AngularJs

[英]AngularJs with Ionic, Cordova, Node.js, views and other 'static' files

全面披露,這對Angular和Ionic來說還很陌生,我正在嘗試從概念上理解它,並獲得最佳實踐的感覺,以便我不再陷入困境。

我已經基於香草html / css / js結合了node.js后端和針對應用程序UI的jquery mobile構建了網站和應用程序。

在那些需要Web服務/后端的情況下,我通常使用.ejs文件和局部視圖作為視圖,並使用res.render響應(將數據動態傳遞到視圖中)為它們提供服務,例如...

    app.get('/showallcustomers', function(req, res){
        db.connect("SELECT * from customers", [], function(result, error){
             var data = result.rows;
             res.render('pages/showall', {data:data})      
        });
    });

...同時將S3用於我的靜態JS / CSS / Images等,以減輕有關靜態資源的node.js Web服務的負擔。

通過ajax發出的其他請求將僅從node.js服務器發送/接收json。

現在,在使用角度js和關注點分離的情況下,將視圖與控制器和數據分離,我試圖找出“托管”或為我的視圖和控制器提供服務的最佳位置。

對於與cordova捆綁在一起的應用程序,我可以很容易地將所有這些角度視圖/控制器保留在應用程序的根www文件夾中,並與應用程序打包在一起(有點像巨型的“頁面”驅動的index.html jQuery mobile的文件),但我可以改用像S3這樣的CDN作為我的“靜態”文件(例如,角度view.html文件和controller.js文件)嗎? 甚至是針對靜態文件的更傳統的虛擬主機類型設置?

然后,我可以(大概嗎?)(使用$ http模塊)將我的網站/應用程序的“數據”流限制為mysite.com/ api類型設置? 就像是:

app.config(function($routeProvider){
        $routeProvider
            .when('/',{
                controller: 'customersController',
                templateUrl: 'app/views/customers.html'

            })

在控制器中,類似...

$http.get('api/customers');

但是,如果是這種情況,並且我以這種方式提供靜態文件,則routeProvider如何知道在哪里可以找到控制器?

人們在這里通常做什么? 將靜態文件與動態數據完全分開? 還是捆綁在一起? 有正確的方法嗎? 還是我在概念上誤解了某些東西?

假設:

  • 我對Cordova不太熟悉,但是我認為它會像高級瀏覽器擴展一樣工作。
  • 我還假設您的應用程序獲得了足夠的流量,從而減輕了服務文件的負擔,這並不是一個過大的選擇。

想法:

  • 對於JS文件,捆綁可能是一個好主意。 無論您的服務器是提供文件還是由S3提供服務​​,它都將最大程度地減少瀏覽器必須建立的連接數。
  • 對於JS文件,由於它們很可能會通過<script>標記包含在文件中,因此您只需將它們上傳到S3中即可。 這不應該給您帶來太大的問題。
  • 對於HTML模板文件,我相信您也可以這樣做。 使用RouteProviderng-include ,您應該能夠從S3中獲取它們。
  • 另外,如果您正在執行API調用,則使用角度服務比使用控制器中的$http模塊更好。

希望這些幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM