對Extjs一類前端技術的分析思維總結

2021-07-03 20:59:01 字數 3277 閱讀 4874

我在extjs上面浪費了不少生命。我覺得我的青春不能糟蹋在這上面,讓我有些討厭這類前端的體力活。因此,我花了點時間把這時間裡面的一些經驗總結一下。

extjs用於在前端顯示**化資料,是個比較好的工具。而且能拓展一些類excel的功能。但是extjs用js寫的,也具有了js一些缺點:

(1)難以定位錯誤地點。錯了也不提示。 

(2)變數多。c語言的寫法,卻沒有c語言的優點。 

(3)除錯工具較少。 

(4)有時不容易區分是前端錯誤還是後端。

怎麼在這些問題上少受點氣,多節省點時間,享受生命的美好呢? 

應該用工具來解決問題,而不是靠結滿老繭的雙手。所以, 

我總結了幾點思路:

(1)分開前端和後端。 

(2)構建模板原型。 

(3)由簡到繁。 

(4)區域性測試,及時回退。

下面一一述之。

(1)分開前端後後端。 

首先縮小定位範圍。對於後台有資料要傳到前端,首先先檢視後端的資料能不能傳到前端。我在做ssh專案時,用struts2做跳轉時,是這樣弄的: 

建乙個jsp檔案,內容:

action="user_execute">

value="test" />

s:form>

body>

(2)構建模板模型。 

初識extjs,會對它繁多的變數感到乏味。這種感覺在其它的情境像初學一門語言時也有。儘管網際網路資訊發達了,但問題仍有很多。 

比如: 

(1)只是介紹extjs的屬性,然後還是只是介紹extjs的屬性。 

(2)介紹的例子缺斤少兩的。

我相信這些發布資訊的人是聰明的,但是在組織資訊的時候欠缺考慮。我們都知道乙個人有乙個頭,四肢,軀幹,外加一些細節。光知道乙個頭很難讓人聯想到乙個人來,其它器官同樣。我們在想事物的時候,傾向於從整體構建。所以,在介紹某個技術和某個例子的時候,

重要的是:先整體。

比如我在弄懂extjs的時候,傾向於先整乙個模板:

ext.onready( function

() ); //匹配資料來源

var cm=new ext.grid.columnmodel([ //**的列屬性,,

,]);

var grid=new ext.grid.gridpanel();

});

然後一點一點的新增成分,比如新增分頁和工具欄:

ext.onready( function

() ); //匹配資料來源

var cm=new ext.grid.columnmodel([ //**的列屬性,,

,]);

var grid=new ext.grid.gridpanel(-條 / 共 條',

emptymsg : "無資料- -!"

}),tbar : //新增工具欄

});});

問題越來複雜也不少見。比如加入json傳遞資料。

ext.onready(function

(), ,

]);// 定義乙個使用者物件,這樣便於我們動態的新增記錄,雖然也可以設定成匿名內建物件

var userobject = ext.data.record.create( [ ,, ]);

// 建立 jsonreader

var jsonreader = new ext.data.jsonreader( ,userobject);

// 建立 data store

var store = new ext.data.store(),

reader : jsonreader //獲取後台返回的資料

});var grid=new ext.grid.gridpanel(-條 / 共 條',

emptymsg : "無資料- -!"

}),tbar : //新增工具欄

});

grid.getstore().load(); //自動傳入資料

});

用json的方式傳遞資料,其實是資料的獲取方式改變了。原來的data以這種方式顯示到前端:

// 建立 jsonreader

var jsonreader =

new ext.

data

.jsonreader( ,userobject);

// 建立 data store

var store =

new ext.

data

.store(),

reader : jsonreader //獲取後台返回的資料

});

這看起來似乎有些理所當然。先別高興太早! 

我之前遇到的bug就是,我的資料就是出不來。問題原因是:

grid.getstore().load();  //自動傳入資料
這行**是自動傳入資料,而我不知道應該為程式加上這行**。 

這行**也可以寫成:

store.load();
二者效果一樣。不過,由於乙個是grid,乙個store,都各有一些屬性,可玩的花樣也會不一樣。

面對這些類似「不知道還有更多的細節」,雖然「我不知道不知道」的問題無解,我傾向於「化繁為簡」。

(3)由簡到繁。

我傾向於化繁為簡。繁雜的東西,讓人一開始摸不清變數的作用,後來就直接誘導大腦乾脆買刮刮樂了。所以,在對程式除錯了許多次後,記憶痕跡開始模糊,對特定因果關係記不清的時候,最好回歸原始,回歸最開始的「模板原型」。

(4)回退。

我也遇過不少這類的問題。這時候,構建模板原型就重要了。 

思路: 

(1)先避開程式的缺點。

就是諸如無法執行、提示一大堆錯誤、折騰24小時也沒讓它執行起來,反而 

問題越來越複雜的一類問題,先放棄!一定先放棄!

(2)想一想要實現的功能點。 

乙個程式有許多功能點,但除了陶哲軒,一般人無法在腦中並行運算。這時,就要拆開,乙個乙個來。想一想要實現的乙個功能點,它是如何構建的,並重新為它構建乙個專案。在探索中,原來比較亂的線索會逐漸清晰起來。

(3)將多個功能點合併。 

這時,還是需要乙個母版,確保每個功能點都能容納進去。八仙過海,各顯神通吧!

這個思路聽起來好像很慢,還要拆分成許多小專案?那好麻煩!但是,大專案一旦改起來,回退也麻煩,而且錯誤機率大。這個思路可以讓你有時間慢慢玩回退。

C 類的理解 一) 類的初識

一 類的意義,以及類與物件 類的內容比較多,但類是物件導向的基礎,所謂物件導向 object 其實就是一種更高層次的模組化,也稱為封裝。c語言中,稍微複雜點的資料結構都是用結構體來寫的,結構體本質上就是把一些相關的資訊打包儲存,比如貓 struct cat 這樣我們通過鍵盤輸入很多貓的資訊就可以用結...

Integer一類的比較問題

總體主要分為兩個方面 比較的是值 一 基本資料型別與引用資料型別進行比較時,引用資料型別會進行拆箱 自動拆裝箱需要在jdk1.5以上 然後與基本資料型別進行值的比較 舉例 int i 12 integer j new integer 12 i j 返回的是true 二 引用資料型別與基本資料型別進行...

對同一類進行兩次析構的問題

對於同乙個類進行兩次析構一般情況不會出現問題,但是當在析構函式中呼叫了delete對於類中的成員變數進行銷毀則會出現問題,如果進行兩次析構函式,則會對同乙個變數進行兩次銷毀,則第二次銷毀就會出現問題,會出現 block type is valid phead nblockuse的問題。出現這個問題的...