簡體   English   中英

Django-AngularJs項目結構

[英]Django - AngularJs Project Structure

在研究了幾天之后,我還沒有決定使用Django的AngularJ的最佳結構是什么.GitHub上有許多項目以及使用Django項目的靜態文件夾中的角度文件在網上提供了教程.Angular 1中主要遵循以下結構Django的。

  Project Name
     app
     project name
     templates
     static
        angular_app
            app1
               app1.component.js
               app1.module.js
             app.js
         angular_templates (static templates for rendering in routes)
     manage.py    

在Angular 2中,我們必須使用節點服務器,並且據我所知,與經驗豐富的angular開發人員(他們也使用其他后端技術)一起使用時,他們使用的是這種結構

  AngularJs Project
      app1
         app1.component.js
         app1.module.js
       angular_templates (static templates for rendering in routes)
       app.js

  Django Project ( or any other backend project)
     app
     project name
     templates
     static
     manage.py

該項目結構的優勢:通過替換后端項目文件夾,我們可以使用任何其他后端技術。 只有API依賴於后端項目。前端完全獨立於后端。

因此,問題是Django-Angular項目的最佳結構是什么? 如果第二個選項很好,我們是否必須在同一個域中分別部署angular和Django代碼? 如果是,該怎么辦?

如果需要,可以將兩者結合起來。 我對Rails后端做了類似的事情,它對我很有用。 (請注意,我對Django不熟悉,但我認為適用相同的邏輯。)

假設Django項目中的static文件夾將在其中提供任何內容作為靜態內容,我不建議在該文件夾中包含Angular項目。 相反,讓您的Angular文件夾成為靜態文件夾的同級文件夾。 但是,配置Angular項目以將其最終輸出構建到Django靜態文件夾中。

因此,您的項目如下所示:

 Django Project ( or any other backend project)
     app
     project name
     templates
     static  (receives minified output from AngularJS project)
     manage.py
     AngularJs Project
        app1
           app1.component.js
           app1.module.js
        angular_templates (static templates for rendering in routes)
        app.js

這樣做有一些好處:1.項目或多或少是分開的-在進行Angular工作時,您在AngularJS文件夾中工作,否則在其他文件夾中進行Django工作

  1. 部署更加簡單-構建AngularJS構件(js,css,index.html)並檢入它們。然后部署Django文件夾將部署所有內容

  2. 您仍然可以從AngularJS生態系統的工具中受益,因為就所有意圖而言,它仍位於其自己的文件夾中且相互隔離。

  3. 一切都在一個倉庫中,這可以使源管理更加容易。

有幾個缺點-您正在檢查AngularJS構建工件,並且AngularJS的更改與服務器端的更改混合在一起,但是我發現,除非服務器端和客戶端團隊完全獨立,否則它就沒有了。被證明是一個問題。

最佳實踐 :

  1. 關注點分離。 -每個模塊/組件/控制器應彼此獨立。
  2. 開發模式 -基於團隊的角色(全棧開發人員/ UI分開/后端分開。文件夾結構發生變化
  3. 出色的風格指南Angular 1
  4. Angular 2的官方樣式指南

暫無
暫無

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

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