国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django項目前端工程化的探索

Jackwoo / 481人閱讀

摘要:項目前端工程化的探索不通過層實現(xiàn)非網(wǎng)頁開發(fā)的前后端分離。做過這樣項目的各位攻城獅應(yīng)該都知道有多痛苦吧。仔細(xì)想來,其實只是想要模板和靜態(tài)資源,我們可以直接在目錄下寫,當(dāng)然也可以開一個前端工程來寫,最后把模板和靜態(tài)資源到工程的相應(yīng)目錄下。

Django項目前端工程化的探索

不通過node層實現(xiàn)非SPA網(wǎng)頁開發(fā)的前后端分離。

技術(shù)棧:webpack + jade + es6 + scss + swig等

項目git: webpack-django-starter

需求

項目需求公司官網(wǎng)。

SEO很重要

頁面簡單,基本是幾臺頁面,個別頁面有動態(tài)內(nèi)容

后臺是Django

成品beta版(雖然有廣告之嫌):

http://www.bsy365.com/

我們從前怎么做?

之前開發(fā)過的一些多頁面網(wǎng)站都是在Django template目錄下直接寫Django模板(類似于寫PHP和JSP),js和css又要寫在Django項目的static目錄下。前端沒有工程化,前端代碼被肢解分離在后端項目的目錄里。做過這樣項目的各位攻城獅應(yīng)該都知道有多痛苦吧。

缺點:

想測試?你需要一套后臺環(huán)境

想livereload?要多帶帶起個livereload進程監(jiān)控前端代碼的目錄,還要在頁面里特別的嵌入一段代碼。livereload

想壓縮js和css?用django compressor吧。

想用jade?想用ES6?想用scss?想用npm管理依賴?應(yīng)該都能做到,但是貌似都不太方便。

優(yōu)點:

無腦,簡單,人人都好上手

別人怎么做?

SPA
Angular、Vue、React,用這些框架做個SPA,頁面不需要后臺渲染了,這樣前端可以完全從后端脫離出來,前后端的交互只通過ajax來拿數(shù)據(jù)。這幾個框架相比大家都很熟悉,優(yōu)點我就不用我說了,stater的項目在git上也到處都是。其中我個人最喜歡Vue,但是搜索引擎,尤其是我們大天朝的baidu爸爸對js支持的并不好,所以單純的SPA方式就不太適合我們的需求了。

后端渲染的SPA和帶node層的大前端
react和vue2.0的后臺渲染,淘寶的中途島 這些解決方案都是很精妙的,不得不佩服相處這些方案的人的睿智。然而我們的項目其實是比較簡單的,同事們都覺得沒有必要加個node層搞那么復(fù)雜。(也許并不復(fù)雜,只是我們沒有實踐過)

好吧!別人的做法不合適,只能自己想辦法了。

我們到底面臨的是什么問題?

正如我已經(jīng)提到的:

之前開發(fā)過的一些多頁面網(wǎng)站都是在Django template目錄下直接寫Django模板(類似于寫PHP和JSP),js和css又要寫在Django項目的static目錄下。

仔細(xì)想來,其實Django只是想要模板和靜態(tài)資源,我們可以直接在Django目錄下寫,當(dāng)然也可以開一個前端工程來寫,最后把模板和靜態(tài)資源copy到Django工程的相應(yīng)目錄下。如下圖:

圖1

所以問題就是如何配置一個多頁面的前端項目,這個項目

release的時候:
能夠輸出Django模板的html文件、純靜態(tài)頁面的html文件、css文件、js文件以及圖片文件。2種html文件inject了所有其所依賴的靜態(tài)文件,避免每次手動配置。

dev的時候:
js、css和html都可以使用預(yù)編譯器;能夠支持livereload,實時看到代碼的結(jié)果

solution

看著這些需求,熟悉wepack的各位大神可以已經(jīng)微微一笑了。大部分的功能用webpack都可以輕松實現(xiàn),不過是一個基于webpack的多頁面工程嘛。確實如此,把Django模板當(dāng)做一種特別的html來看的話,其實就是如此。

唯一的不同點是開發(fā)時如何能讓node server渲染Django模板?
我想的辦法是在開發(fā)時用swig.js來代替Django渲染Django模板。(swig模板的語法和Django模板語法相似,加之它支持自定義tag和filter)

所以,最終的結(jié)構(gòu)就是這樣:

圖2

項目的代碼結(jié)構(gòu):

圖3

build目錄下是webpack、express以及swig的配置文件。

config目錄下是項目的一些可變配置,比如release的路徑、是否生成sourcemap

assets是一些全局資源,比如favicon

common-style里是一些全局的css文件

components里是頁面的公用組件
組件的jade文件、scss文件和js文件是組織在一個目錄下的

pages里是頁面的實現(xiàn),jade文件、scss文件和js文件是同樣是組織在一個目錄下的

mock.js 是開發(fā)時express、swig用于渲染頁面的假數(shù)據(jù)。


圖4


圖5

page目錄下的jade文件分為兩種:一種是dj.jade文件,一種是.jade文件。前者會被認(rèn)為是Django模板,開發(fā)時會被swig渲染,發(fā)布時會被發(fā)布到template目錄下。后者被認(rèn)為是純頁面,開發(fā)時不會被swig渲染,release時會被放到static的html目錄下。

另外,有時候一些頁面是一組頁面,他們很大一部分是一樣的,比如圖4中的about-us下面有2個頁面author和company。此時,可以在about-us下面寫一個base,把公共的內(nèi)容寫在base里。而base會被識別,在dev和release時都不會被當(dāng)做頁面處理。(不會生成一個base的頁面)

寫在最后

東西比較多,寫的也很亂,感覺很難讓大家看明白。。。哈哈。看code吧。本項目是我們team的一次嘗試,我們用這個架構(gòu)寫了2個項目,感覺還不錯,不需要引入node層,前后端徹底分離了,在我們這樣的特定項目背景下,比較適用,和大家分享下,希望有用。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/50019.html

相關(guān)文章

  • Django項目前端程化探索

    摘要:項目前端工程化的探索不通過層實現(xiàn)非網(wǎng)頁開發(fā)的前后端分離。做過這樣項目的各位攻城獅應(yīng)該都知道有多痛苦吧。仔細(xì)想來,其實只是想要模板和靜態(tài)資源,我們可以直接在目錄下寫,當(dāng)然也可以開一個前端工程來寫,最后把模板和靜態(tài)資源到工程的相應(yīng)目錄下。 Django項目前端工程化的探索 不通過node層實現(xiàn)非SPA網(wǎng)頁開發(fā)的前后端分離。 技術(shù)棧:webpack + jade + es6 + scss +...

    jsummer 評論0 收藏0
  • Django項目前端程化探索

    摘要:項目前端工程化的探索不通過層實現(xiàn)非網(wǎng)頁開發(fā)的前后端分離。做過這樣項目的各位攻城獅應(yīng)該都知道有多痛苦吧。仔細(xì)想來,其實只是想要模板和靜態(tài)資源,我們可以直接在目錄下寫,當(dāng)然也可以開一個前端工程來寫,最后把模板和靜態(tài)資源到工程的相應(yīng)目錄下。 Django項目前端工程化的探索 不通過node層實現(xiàn)非SPA網(wǎng)頁開發(fā)的前后端分離。 技術(shù)棧:webpack + jade + es6 + scss +...

    buildupchao 評論0 收藏0
  • Django項目前端程化探索

    摘要:項目前端工程化的探索不通過層實現(xiàn)非網(wǎng)頁開發(fā)的前后端分離。做過這樣項目的各位攻城獅應(yīng)該都知道有多痛苦吧。仔細(xì)想來,其實只是想要模板和靜態(tài)資源,我們可以直接在目錄下寫,當(dāng)然也可以開一個前端工程來寫,最后把模板和靜態(tài)資源到工程的相應(yīng)目錄下。 Django項目前端工程化的探索 不通過node層實現(xiàn)非SPA網(wǎng)頁開發(fā)的前后端分離。 技術(shù)棧:webpack + jade + es6 + scss +...

    HackerShell 評論0 收藏0
  • Python面試經(jīng)驗總結(jié),面試一時爽,一直面試一直爽!

    摘要:面試的心得體會簡歷制作我做了兩份簡歷,用兩個手機賬號,兩個簡歷名字,分別在各個招聘網(wǎng)站投了雙份簡歷,一個是數(shù)據(jù)分析的簡歷一個是全棧開發(fā)的簡歷,我真正接觸快年,不管是學(xué)習(xí)還是工作學(xué)到的東西,這兩年大概掌握了前端爬蟲數(shù)據(jù)分析機器學(xué)習(xí)技術(shù), showImg(https://upload-images.jianshu.io/upload_images/13090773-b96aac7e974c...

    gxyz 評論0 收藏0
  • Cesar競賽平臺項目中期總結(jié)

    摘要:競賽平臺項目中期總結(jié)軟件謝運帷我們小組的選題是大學(xué)生競賽平臺項目,經(jīng)過我們需求分析,原型設(shè)計等等步驟,我們終于要開始著手實現(xiàn)這一個龐大的競賽平臺項目。 Cesar競賽平臺項目中期總結(jié) 軟件51 謝運帷 2015013185 我們小組的選題是大學(xué)生競賽平臺項目,經(jīng)過我們需求分析,原型設(shè)計等等步驟,我們終于要開始著手實現(xiàn)這一個龐大的競賽平臺項目。我們使用Django+mysql處理后端邏輯...

    rainyang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<