launcher專案踩坑小結(1)

2022-08-28 03:21:11 字數 3518 閱讀 3534

launcher是乙個安卓端的活動頁面。它在pc端的形式則是由資源,桌面和發布三大板塊組成。其中資源部分則是由素材,apk資源,網頁資源和資源四個頁面組成。

在完成素材部分頁面的過程中,主要梳理和總結了的技術點如下:

1⃣️ 往陣列中的前序新增、往陣列中最後一項追加元素、刪除陣列中的一項、往陣列中指定的某一項前新增元素

a. 前序新增就是往陣列的第一項之前新增乙個元素, 方法是unshift

eg. let arr = [a, b, c, d, e]

let f = 1

arr = arr.unshift(f)

console.log(arr)

結果為: [1,a,b,c,d,e]

b.  後續追加就是在陣列的最後一項之後新增一項, 方法是push

eg. let arr = [a,b,c,d,e]

let f = 1

arr = arr.push(f)

console.log(arr)

結果為:[a,b,c,d,e,1]

c.     刪除陣列中的一項, 方法是splice(index, n)(聯想:splice與slince的區別)  

eg. splice(2, 1)

就是從下角標為2的那一項開始, 刪除1項。 其中index代表下角標, n代表從這一項開始, 一共要刪除幾項。

splice與slince的區別?

slince:返回乙個新的陣列,包含從 start 到 end (不包括該元素)的 arrayobject 中的元素。

eg. arr = [1,2,3]

console.log(arr.slince(1))

結果為: [2,3]

如果slince後面有兩個引數, 則表示, 返回值是第乙個引數到第二個引數(包括第二個引數)這一段區間的部分。

d.  往陣列中指定的某一項前面新增一項

這裡也是用到的是splice

這裡splice後面有三個引數,即 splice(index, 0, obj),也就是把在陣列中下角標為index的元素的前面新增乙個元素。

如果這裡將第二個引數改為1,即splice(index, 1, obj),則是刪除了下角標為index的元素, 並且新新增乙個元素代替被刪除的元素。

2⃣️ 如何寫出可以自適應最大高度的滾動條

之前用到滾動條的時候, 第一反應就是給需要滾動的元素外層加上max-height, 然後給父元素設定overflow:scroll.

可是後來發現, 這樣做在元素需要滾動時候會出現滾動條, 但是元素本身高度沒有達到max-height的時候也會出現滾動條。

後來發現, 這裡可以通過設定overflow: auto來代替overflow: scroll。 這樣就可以使滾動條在沒有達到max-height的時候消失,超過max-height時候出現。

3⃣️ 深度轉殖/淺轉殖(專案中沒有用到,但可以進行優化時使用)

淺轉殖就是將乙個元素的值賦給另乙個元素, 但是他們引用這個值的路徑又是同乙個, 因此儅乙個值改變時, 另乙個值也會隨之改變。

深度轉殖則是所有元素或屬性均完全複製,與原物件完全脫離,也就是說所有對於新物件的修改都不會反映到原物件中。

這裡引用了兩篇請前輩的文章: ① **:  ② 載自:

4⃣️ 上傳 dataform

這是在launcher專案中, 資源部份, 圖片資源和素材資源部分上傳圖片時候用到的功能。

最初沒有使用dataform,而是直接上傳。這樣的結果就是, 本來使用的是post請求, 但是後台卻會報錯, 說接收到的是get請求。

postimg (url, data, config) 

}).then(

(response) =>

).then(

(res) =>

)},

然後在傳遞引數時候應該先建立dataform物件,再對應選用相應的格式如下:

let param = new formdata()//

建立form物件

imgname

', _this.changeform.name) //

imghigh

', _this.naturalheight) //

imgwide

', _this.naturalwidth) //

showid

', _this.showid) //

file

', _this.files) //

edittype

', _this.edittype) //

alterremark

', _this.changeform.state) //

chunk

', '

0') //

新增form表單中其他資料

這樣才能成功的進行引數的傳遞。

5⃣️ 的選擇獲取和回顯

圖片回顯, 就是在上傳完一張圖片之後, 如果上傳成功, 就將這張圖片顯示出來, 供圖片的上傳者檢視。

這裡用到的是filereader()。

html:

<

div

class

>

<

div

class

="add-pic"

v-show

="picflag"

v-if

="images === '' || images === 'noimgnew'"

>

<

input

@change

="addpic"

name

="file"

type

="file"

accept

="image/jpeg,image/x-png,image/gif"

class

="newimgipu"

>

div>

<

div

class

="add-pic"

v-show

="picflag"

v-if

="images !== '' && images !== 'noimgnew'"

>

div>

div>

js:

addpic: function

(event)

image.src =evt.target.result

}filereaders.readasdataurl(_this.files)

}}

其中, 如果直接獲取image的寬高,那麼獲取的很可能是這個盛放image的容器的寬高, 而非實際寬高。

所以在此處運用了image()方法,這樣才可以獲得真實的寬高。

程式碼如下:

let image = new

image()

image.onload = function

()

專案踩坑及成長

4月1號那天,我領導給我安排了乙個任務,讓我負責乙個小系統,帶北京的兩個同事,還有上海這邊的乙個前端。講實話,我又興奮又覺得有壓力。在這三個星期當中,我覺得我從這個專案裡成長的不僅僅是技術 還有對整個專案的把控 專案的進度計畫 部署都得到完整的體驗性成長,當然有成長,就會有很多麻煩的事情,不過我覺得...

ABP Zero專案入門踩坑

3.安裝最新版本的vs2017,必須v15.3.5以上,如果電腦系統是window7,還需要安裝更新 shell 4.0 vs2017的nuget控制台必須要power shell 3.0以上。然後生成專案 5.生成資料庫 2 開啟工具 nuget包管理器 程式包管理器控制台,修改預設專案為myab...

日常踩坑總結1

業務邏輯層要用業務相關的名稱命名,比如用bbsuserservice這樣的命名就不符合規範,命名要用loginservice,registerservice這些。還有盡量不要用逗號分隔符,用中間表來代替。以及修改語句時,如果不確定修改的是哪個字段,可以先查詢出來,進行比較之後進行更新。delete,...