產(chǎn)品經(jīng)理:不得不懂的基礎(chǔ)技術(shù)知識
剛?cè)腴T產(chǎn)品,和開發(fā)溝通的時候總是被懷疑智商?沒事,本文和你分享一下那些溝(si)通(bi)經(jīng)歷,并告訴你產(chǎn)品經(jīng)理必須知道的基礎(chǔ)技術(shù)知識!
一入產(chǎn)品深似海。身為產(chǎn)品汪,我想說產(chǎn)品汪和程序猿是兩個物種,一個來自金星,一個來自火星,腦結(jié)構(gòu)、腦回路截然不同,關(guān)鍵是他們還健忘!
雖說“人人都是產(chǎn)品經(jīng)理”,但也造成產(chǎn)品成為整個行業(yè)“鄙視鏈”的末端。
C開發(fā)看不起做C++開發(fā),C++開發(fā)看不起Java開發(fā),Java開發(fā)看不起C#開發(fā),C#開發(fā)看不起做前端開發(fā)。但他們確都有個共同點(diǎn),就是一致覺得產(chǎn)品是超低智商生物。
溝通不易,但不得不溝通!
聽不懂的時候怎么辦,如果只是干等,那等同挖坑埋自己。和開發(fā)溝通之前一定要做足功課,否則分分鐘被噴!十幾個開發(fā)一起噴你,那就是群毆。
希望這篇文章能給剛?cè)腴T的產(chǎn)品補(bǔ)點(diǎn)技術(shù)能量,關(guān)愛程序猿。
曾經(jīng)你以為,產(chǎn)品的日常黑話是:
我不管,反正你要實(shí)現(xiàn)!
做這么點(diǎn)東西要那么久嗎,分分鐘就能搞定吧!
要不你先做一版,先看看效果再說,不行再改。
我的需求很簡單,很簡單的,照著這個做就行了,一模一樣就好!
現(xiàn)實(shí)卻是:
好的,我今晚加班,晚上把原型和RFP郵件發(fā)給你們。
別慌,我去跟領(lǐng)導(dǎo)申請下增加開發(fā)資源!
穩(wěn)住,你們先榮耀一把吧,晚上一起加班呀。
如果你還行走在互聯(lián)網(wǎng)圈子里,基礎(chǔ)技術(shù)知識是產(chǎn)品必須要了解的。
我日常游走在一群前后端狂魔中,被灌輸很多毒藥,但也只能自行一一消化,現(xiàn)在一一吐露。
一、少不了的接口
說到接口,它“無處不在”,當(dāng)打開APP的時候,你會看到一個菊花轉(zhuǎn)啊轉(zhuǎn)啊轉(zhuǎn)呀,然后加載出來的那些文字、圖表、炫酷的動畫就是前端ajax通過接口提交數(shù)據(jù)從后端請求回來的數(shù)據(jù)。
一個完整的APP項目一般都是由客戶端(前端)和服務(wù)端(后端)相結(jié)合。
- 接口,就是后端將數(shù)據(jù)源或數(shù)據(jù)庫提供給外部應(yīng)用去調(diào)用的一段程序。
- 接口可以完成某個任務(wù),但是它需要有相應(yīng)的輸入(即入?yún)ⅲ?。在工作中,少不了要定義五花八門的接口。
后端定義好URL,前端按照規(guī)定的格式請求它,它就會把數(shù)據(jù)給你,這就是接口。
前端負(fù)責(zé)將數(shù)據(jù)展示給用戶并快速響應(yīng)用戶所有的操作(點(diǎn)擊、長按、左滑、右滑、下拉刷新等等),后端則負(fù)責(zé)將數(shù)據(jù)在服務(wù)器上進(jìn)行一系列處理(增、刪、改、查)后返回給前端。
前端負(fù)責(zé)拿到數(shù)據(jù)并處理數(shù)據(jù)展示出來。
千萬不要覺得前端工作簡單,不就是寫個html頁面展示數(shù)據(jù),但是他們需要考慮各種瀏覽器的兼容性、各種土豪、土鱉等設(shè)備適配性,響應(yīng)式設(shè)計、VR、AI、3D效果層出不窮的新概念新挑戰(zhàn),且行且珍惜。
接口四要素:
- 方法 :Post(增)、Delete(刪)、 put(改)、Get(查)
- url: /userinfo
- 請求參數(shù):字段、說明、類型、備注、是否必填
- 返回參數(shù):code/message/data
看個示例:
{
“code”:200,
“msg”:“成功”,
“time”:“677788888”,
“data”:{“name”:“張三”,“age”:“23”},
}
規(guī)范的接口得保證:
- 要保持好身材,瘦,瘦,瘦!盡量前端不要處理業(yè)務(wù)邏輯、不進(jìn)行金額計算、且減少處理請求參數(shù)的校驗(yàn);
- 要有可拓展性:文章、圖片最好由后端來提供;
- 要可靠安全、性能優(yōu)化、體驗(yàn)流暢。
在項目進(jìn)行中,接口聯(lián)調(diào)尤為關(guān)鍵。
接口聯(lián)調(diào),就是[前后端平心靜氣、坐在一起校對數(shù)據(jù)]==[一言不合就開懟、項目一完就吹水。
聯(lián)調(diào)主要是為了解決數(shù)據(jù)格式問題和數(shù)據(jù)參數(shù)問題。
這里提一下接口文檔。
接口文檔一般由后端進(jìn)行編寫,需要和前端一起協(xié)商補(bǔ)充,注意要溝通、溝通、溝通!在項目開發(fā)過程中,前后端工程師會根據(jù)這份文檔為主,要共同維護(hù)和更新它,直到項目結(jié)束。
- 它可以讓前后端工程師圍繞一個統(tǒng)一的文檔進(jìn)行溝通交流開發(fā),減少溝通成本;
- 項目維護(hù)中或者項目人員更迭,方便后期人員查看、維護(hù),減少學(xué)習(xí)成本;
- 也可一定程度上體現(xiàn)程序猿的表(wen)達(dá)(mang)能力;
- 最重要一點(diǎn),它可以是后期甩鍋的強(qiáng)有力證據(jù)。
通常,前端開發(fā)人員和后臺開發(fā)人員是不同的人。當(dāng)然,部分種子選手兩者兼顧,曰全棧工程師(仰望大神)。不過,前后端的思維模式不一樣,要打造一個全棧工程師,學(xué)習(xí)成本極高。
一般來說,核心業(yè)務(wù)都會分離開,畢竟人的精力有限,要保質(zhì)保量保安全,一個人兼顧不過來。
附上一小段前后端聯(lián)調(diào)接口日常對話:
后臺:接口好了,你試試。
前端:不行,500。
后臺:我看看。
半個小時飄過。
后臺:好了,修復(fù)了個bug,你再試試。
前端:不行呀,還是500。
過了很久……
后臺:好了,我重構(gòu)了下代碼,參數(shù)改了,接口文檔有更新,你看看。
前端:好的(心里MMP)。
產(chǎn)品:下周一提測哦。
前端、后臺:網(wǎng)易云音樂-涼涼……
二、坑不死你的“寫死”
不是你們說的那個編劇又把男主角寫死的那個意思。
回到正題,我們前面說到了接口可以請求到數(shù)據(jù)。
對一個頁面而言,頁面的數(shù)據(jù)一方面由前端直接寫死,也就是靜態(tài)數(shù)據(jù),另一部分需要有后端接口提供,前端需要從后端請求接口拿到數(shù)據(jù)并按照要求展示到頁面上,比如淘寶的商品列表。
但數(shù)據(jù)有靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),有些數(shù)據(jù)可以由前端寫死的,雷打不動。這就是靜態(tài)數(shù)據(jù)。
例如某些APP首頁下方的那些TAB欄,就是寫死的,因?yàn)槟切㏕AB基本不會有變化。
類比你去飯店吃飯,你點(diǎn)了個螺獅粉,老板問你要不要辣,你腦子一熱就說加辣,那端上來的肯定是紅通通的一端,基本就這樣了。如果你覺得辣,那你只能重新點(diǎn)一碗。
- 優(yōu)點(diǎn):減少和服務(wù)端進(jìn)行請求。
- 缺點(diǎn):后期如有擴(kuò)展,要填坑。
三、高逼格的組件及框架
跟前端小伙交(si)流(bi)多了,組件這個詞,除非你聾,不然一定會有所耳聞。
前端在寫頁面的時候,發(fā)現(xiàn)很多頁面有相似的地方,相似的地方功能也相同。比如都是一個表單,一個banner輪播圖,一個下拉框。So,為了提高代碼復(fù)用性,減少重復(fù)性的開發(fā),就把頁面封裝起來以便下次復(fù)用,這就是一個組件。
組件可以看作是自定義的CSS+HTML+JavaScript重新組合,它是一種可拼裝的功能集合。
簡單說下HTML+CSS+JavaScript,舉個某寶的首頁,首頁看到的圖片、文字都是一個個的HTML元素,然后頁面的背景顏色、圖片大小,按鈕位于整個頁面的什么位置,這就是CSS做的。
至于JavaScript,簡稱js,可以看成首頁的大腦,主要實(shí)現(xiàn)內(nèi)部的邏輯,比如按鈕點(diǎn)擊之后怎么處理,界面之間如何跳轉(zhuǎn),什么時候刷新信息,如何請求數(shù)據(jù)。它需要把后端返回的數(shù)據(jù)添加到頁面中,或者讓元素運(yùn)動起來,或者是改變頁面的CSS,或者是操作HTML元素。
?類比產(chǎn)品Axure作原型圖,每個頁面都需要有頂部狀態(tài)欄,我們會運(yùn)用幾個按鈕、矩形框進(jìn)行組合,命名為母版。
類比我們以前高考備戰(zhàn)采用大量的習(xí)題戰(zhàn)術(shù),我們會有一本錯題集,學(xué)霸們會怎么利用這本錯題集呢?他們會按照考點(diǎn)對錯題集分類。對組件也是一樣,有相似的功能可以歸并為一類。
你寫的代碼越來越多,你封裝的組件就越來越多。慢慢的,你就有個組件庫,包括樣式組件、UI組件、基礎(chǔ)組件、業(yè)務(wù)組件等等。Perfect,組件還可以進(jìn)行再組合,把組件再整合起來,是一種組件間相互關(guān)系的設(shè)計。
類比你手機(jī)裝了支付寶APP,它可以用來買理財產(chǎn)品、可以用來買保險,可以使用第三方服務(wù),但是對一些人而言,他不需要這些功能,他只是把錢放在余額寶里,偶爾迷茫的時候去看一眼。
框架不是越大越好??蚣苤恍璞A艋镜墓δ?,但是它會提供方式給你去擴(kuò)展,這才是好的框架。
四、天天念叨的DOM
- DOM全稱Document Object Model,翻譯就是文檔對象模型。
- DOM是一系列功能集合,是處理HTML和XML文檔的編程接口。
- DOM允許開發(fā)人員從文檔中增、刪、查、改頁面數(shù)據(jù)。直白的講,它給文檔提供了一種結(jié)構(gòu)化的表示方法,可以改變文檔的內(nèi)容和呈現(xiàn)方式。
- DOM技術(shù)使頁面可以動態(tài)地變化,如可以動態(tài)地顯示或隱藏一個元素,改變它們的屬性,增加一個元素等。
- 可以把DOM認(rèn)為是頁面上數(shù)據(jù)和結(jié)構(gòu)的一個樹形表示。
- DOM的功能是把瀏覽器支持的文檔(包括HTML、 XML、 XHTML)都當(dāng)成對象來解析。
請看下面這個HTML文件:
html
head
titleDOM/title
/head
body
h1DOM Lesson one/h1
phello world/p
/body
/html
你可以看出,最外面一層是html,html嵌套著head和body標(biāo)簽,head嵌套著title標(biāo)簽,body嵌套著p標(biāo)簽。
同理,DOM也是一層一層嵌套著,這種層級關(guān)系不是隨便定的,是有一定的規(guī)則。
- 這可類比于我們存放的文件路徑: 我的電腦-CDEFG盤-學(xué)習(xí)資料-日本語音-島國電影。
- 也可類比于我們博大精深的親人關(guān)系表。
DOM它易用性強(qiáng),并且遍歷簡單,直接操作DOM無所不能。
但操作DOM效率低,解析速度慢,內(nèi)存占用量過高,且DOM機(jī)制中所運(yùn)用的大量對象的創(chuàng)建和銷毀影響效率。
所以出現(xiàn)了虛擬DOM。這個我就編不下去了。
五、Cookie、Session、Token哪家強(qiáng)
在傳統(tǒng)的web應(yīng)用中,服務(wù)器端通過一種存儲機(jī)制保存了會話信息(Session)。
Session可以理解為后臺服務(wù)器的一小片內(nèi)存。
每個會話信息都對應(yīng)一個唯一的編號:Session ID,這個字符串隨機(jī)產(chǎn)生,服務(wù)器端會把Session ID放在Cookie里面,Cookie數(shù)據(jù)存放在客戶端。Session的狀態(tài)是存儲在服務(wù)器端,客戶端存的只有Session id。
Cookie是服務(wù)器給客戶端的憑證,可以理解為存在客戶端的一個txt文件。
里面包括你登錄信息之類,這樣你下次在登錄某個網(wǎng)站,就會自動調(diào)用Cookie,取到Session id到后端服務(wù)器獲取對應(yīng)的Session具體信息,進(jìn)行數(shù)據(jù)的保存和修改,但Cookie存放在客戶端易被盜用篡改,不是很安全。
這類比于你去逛超市,你存放了私人物品在儲物柜子里,它會給你個取件的紙條,等你逛完超市后,就可以掃描紙條打開柜子。
在前后端沒有分離的時候,前端頁面往往都屬于后臺管理,這個大部分是同源請求。
但是在前后端分離后,這個時候一般涉及到跨域,跨域的請求不攜帶Cookie,要攜帶Cookie又要后臺指定允許的跨域地址,比較麻煩,于是出現(xiàn)了Token。
Token就是令牌。
Token一般是由uid+時間戳+設(shè)備號+自定義規(guī)則經(jīng)過算法加密后的一串字符串。字符串通常很長,難偽造。
這類比于服務(wù)器生成了一個單號返回給客戶端,客戶端帶著單號過來請求請求器,這時候怎么證明單號是服務(wù)器生成的呢,可以通過單號來檢查。
比如你授權(quán)(登錄)一個程序時,它就是個依據(jù),判斷你是否已經(jīng)授權(quán)程序;Token的狀態(tài)是存儲在客戶端。
在APP開發(fā)中,都是使用Token作為驗(yàn)證后的憑證。
一般采取的措施是客戶端輸入用戶名和密碼,客戶端登錄后,服務(wù)器端會返回一個Token,之后所有的請求都會帶著Token,客戶端把Token放在請求頭(header)里,在應(yīng)用中一般使用https會增加安全性,拿到Token才能進(jìn)入頁面內(nèi)。
后端通過檢驗(yàn)請求頭判斷是否登錄、是否正常請求、是否安全后再提供服務(wù)。
六、程序猿又說要重構(gòu)
開發(fā)人員經(jīng)常抱怨 :
“這么爛的代碼,維護(hù)不了啦,需要重構(gòu)!”
“這代碼怎么能這么不優(yōu)雅?誰來重構(gòu)一下?”
我。。。。忍不住給你們這些卓越的工程師打Call。
重構(gòu)是對代碼做任何更動,以增加可讀性或者簡化結(jié)構(gòu),而不影響輸出結(jié)果。
- 輕一點(diǎn):優(yōu)化原有代碼,改善代碼質(zhì)量,比如三行代碼用一行就解決,降低復(fù)雜度。
- 重一點(diǎn):完全重寫,幾乎不用原來的代碼。
- 再嚴(yán)重一點(diǎn)說:為了有事干!知道它的重要性了吧!
重構(gòu)成功的話,從長遠(yuǎn)來看應(yīng)該是利大于弊的,對用戶而言:更快、更流暢、更美觀;對碼農(nóng)而言:易維護(hù),更易讀,一看就是優(yōu)雅的代碼,特別是人員流動比較大的項目。
作為產(chǎn)品經(jīng)理,我表示:重構(gòu)有風(fēng)險,重構(gòu)需謹(jǐn)慎,得做到:
1. 充分的測試!?。。?/strong>
看似簡單,但是往往都做不到,項目成員對于充分的定義標(biāo)準(zhǔn)都不一樣,產(chǎn)品經(jīng)理永遠(yuǎn)都覺得沒有測試足夠,也不可能百分百的覆蓋率。這個時候,利用自動化測試工具未免不是一個有效途徑。
2. 充分的溝通?。。?!
很多需求提出方不理解為什么要重構(gòu),但他們卻要為重構(gòu)買單,在他們看來往往就像個騙局。
對于新功能的重構(gòu),應(yīng)該融入到正常開發(fā)過程中,如何讓上帝理解重構(gòu)的價值,反思一下遇到的問題:是由于早起技術(shù)架構(gòu)的缺陷,還是業(yè)務(wù)領(lǐng)域模型變動太大?如何避免今后再次遇到,得到上帝的理解和認(rèn)可,這至關(guān)重要。
3. 充分的思量?。。?!
考慮時間成本!人力成本!學(xué)習(xí)成本!盡量避免大的重構(gòu),這樣可以減少多方的工作量,也會減少項目延期的風(fēng)險。
對于一些核心功能,進(jìn)行重構(gòu)之前盡早告知團(tuán)隊,并重點(diǎn)闡述下重構(gòu)的周期、目的以及會涉及到的業(yè)務(wù)區(qū)域,這樣做一方面可以讓項目經(jīng)理合理地安排排期。盡量避免上線前進(jìn)行重構(gòu),因?yàn)轱L(fēng)險無法預(yù)估。
七、調(diào)試、打包、部署
啊,不是那個你去店里點(diǎn)餐,跟老板說的那個打包!
程序猿做項目的時候,會在本地搭建一個開發(fā)環(huán)境,用于調(diào)試自己的代碼。
程序猿說的碼代碼只有程序猿自己才認(rèn)識,計算機(jī)根本不認(rèn)識,計算機(jī)只認(rèn)識二進(jìn)制。
打包,就是將自己寫的代碼(Bug)打包成一個文件,即二進(jìn)制文件(010101這種格式)。
但要區(qū)分下,前端的打包,實(shí)質(zhì)是合并壓縮處理前端資源文件:包含HTML文件、js文件、CSS文件、圖片、字體、svg等等。
前端的打包工具, 流行的有:Gulp、Grunt、Webpack等工具。
打包工具可以讓開發(fā)網(wǎng)頁的時候使用import export require,像后端程序員一樣進(jìn)行模塊化開發(fā),每個模塊異步請求加載,可以減少請求提高性能,這樣瀏覽器可以通過少量的請求獲取到所需要的前端資源,節(jié)省流量,加快頁面加載速度,關(guān)鍵還起到混淆代碼的作用。
打包是為了運(yùn)行,打包完了就代表整裝待發(fā)了。
項目要上線的時候,程序猿要將自己的代碼部署到生產(chǎn)環(huán)境上。這需要你準(zhǔn)備就緒:版本號要高于線上版本、去除一些調(diào)試信息、混淆、簽名、做對齊等等。
部署,一般指服務(wù)器端程序上線,但是要給程序提供所需要的資源,讓它好好的運(yùn)行起來。
就像你養(yǎng)花,你如何讓它在花盆里面存活,你得有空氣,有水,有養(yǎng)料。
同樣,要運(yùn)行起你的一大坨代碼,就要配置好環(huán)境,比如使用幾個服務(wù)器、放在什么服務(wù)器上、開什么端口、怎么才能扛住大量的請求等等。
八、負(fù)載均衡有一手
負(fù)載均衡(又稱為負(fù)載分擔(dān)),英文名稱為Load Balance。
官方說法:
將負(fù)載(工作任務(wù))進(jìn)行平衡、分?jǐn)偟蕉鄠€操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。
通俗來講:就是將用戶請求分發(fā)到N臺服務(wù)器,一臺服務(wù)器需要處理的任務(wù)分給N臺服務(wù)器來處理,但不能簡單理解為分配給所有服務(wù)器一樣多的任務(wù),因?yàn)榉?wù)器的承載能力各不相同。N臺服務(wù)器一起處理任務(wù)叫集群。
負(fù)載均衡設(shè)備不是基礎(chǔ)網(wǎng)絡(luò)設(shè)備,而是一種性能優(yōu)化設(shè)備。
負(fù)載均衡的核心就是“分散壓力”,使所有的服務(wù)器都不會超過自己可承受的程度,避免宕(dang)機(jī)。
為什么要有負(fù)載均衡,對于網(wǎng)絡(luò)應(yīng)用而言,并不是一開始就需要負(fù)載均衡,當(dāng)網(wǎng)絡(luò)應(yīng)用的訪問量不斷增長,單個處理單元無法滿足負(fù)載需求時,網(wǎng)絡(luò)應(yīng)用流量將要出現(xiàn)瓶頸時,負(fù)載均衡才會起到作用。
類比你每逢節(jié)假日逛超市的時候,就能看到“負(fù)載均衡“的例子,收銀員高峰期只能服務(wù)10位顧客,當(dāng)做活動時有20位顧客需要服務(wù)的話可能就會排長隊,這樣購物體驗(yàn)將會很差(類比客戶抱怨系統(tǒng)/網(wǎng)站訪問太慢)。最簡單的辦法就是再招個營業(yè)員,重新開通一個收銀窗口。
九、F5不是一個快捷鍵
其實(shí),一說到負(fù)載均衡,就會聯(lián)想到F5=刷新快捷鍵嗎?就服你!
其實(shí)F5是只是負(fù)載均衡產(chǎn)品的一個品牌,其地位類似于諾基亞在手機(jī)品牌中的位置。
F5作為一級路由器,它是流量總?cè)肟?,相?dāng)重要,因?yàn)樗钢饨缢械恼埱髩毫Α?/strong>
有人會問?為什么不搞多臺F5?
F5如此卓越穩(wěn)定,當(dāng)然貴呀!貴呀!貴呀!死心了吧。
所以在它這里不會去做運(yùn)算,它需要做的就是轉(zhuǎn)發(fā)流量<,轉(zhuǎn)發(fā)給二級路由器nginx,nginx需要解析協(xié)議內(nèi)容,做更加精細(xì)化路由。
F5和nginx其實(shí)只是負(fù)載工具,只是分工不同而已,這是他們的價值所在。
十、負(fù)載均衡實(shí)現(xiàn)一二三
1. 重定向
這種方式,是通過將請求全部發(fā)送到前置機(jī),由前置機(jī)通過算法得出要分配給那臺應(yīng)用服務(wù)器,然后響應(yīng)給客戶端,由客戶端重定向到應(yīng)用服務(wù)器的一種方式。
類比個例子,一家公司舉辦招聘活動,每個人都可能要去往不同的樓層進(jìn)行投遞簡歷,所有的面試者都會先集中在一樓前臺處,然后由前臺MM為大家一一查詢所對應(yīng)的樓層,然后告知每一個面試者對應(yīng)的樓層,由面試者自行前往自己的樓層投遞簡歷。
你可以看到,每一個的請求,都要重定向一下,效率不高。
2. 反向代理
這種方式,是通過在前置機(jī)使用反向代理方式,將請求分發(fā)到應(yīng)用服務(wù)器,客戶端無需再請求一次,實(shí)現(xiàn)方式通常有兩種,一種是用交換機(jī)實(shí)現(xiàn),還有一種是用nginx實(shí)現(xiàn)。
這就相當(dāng)于前臺MM為面試者查詢到對應(yīng)的樓層之后,直接將簡歷分發(fā)到對應(yīng)樓層。不需要面試者再自行跑一趟。樓層收到簡歷后,也會響應(yīng)請求。
這種方式,對比重定向,效率較高,但是由于請求和響應(yīng)都是通過前置機(jī)來的,所以對前置機(jī)的考驗(yàn)很大。
3. 數(shù)據(jù)鏈路返回
這種方式,通過給應(yīng)用服務(wù)器設(shè)置虛擬IP,然后通過修改mac地址的方式,將請求分發(fā)出去,而應(yīng)用服務(wù)器收到請求后,可以直接響應(yīng)給客戶端,而不需要經(jīng)過前置機(jī)。
這類比于面試者不需要通過前臺MM,自己直接將簡歷投遞到對應(yīng)樓層,樓層收到簡歷后,會想要面試者的請求。
這種方式中,由于前置機(jī)只需要接受請求,不需要響應(yīng)數(shù)據(jù),所以,效率較第二種較高。
十一、風(fēng)風(fēng)火火的小程序
上次前端小伙在進(jìn)行內(nèi)部分享的時候,我去偷師了一下。
小程序=高逼格一點(diǎn)的H5頁面。
微信自己定義一套html標(biāo)簽,稱之為wxml,又封裝了一些樣式規(guī)則,叫wxss,其實(shí)就等同于html+css+js。
封裝一方面是為了降低開發(fā)成本,根本上是為了收攏控制權(quán)限,開發(fā)者能用的東西越多,微信需要操心的事情也就越少。
1.要做小程序開發(fā),你得裝個開發(fā)工具,微信提供的;
附上開發(fā)地址:
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html?t=20171227
2.然后,你需要去微信公眾平臺開通個小程序賬號;
3.接著你就要去學(xué)js;
微信小程序用js來作為開發(fā)語言,用定義的wxml來描述界面,用wxss來表達(dá)樣式,這些也是最基本的幾個要素。開發(fā)語言不用說,js非常成熟,解析js的引擎也有很多。
十二、寫在最后
作為打不死的產(chǎn)品,我的座右銘:與天斗 、與地斗、 與程序猿斗, 其樂無窮。
千萬不要影響他們的開發(fā),程序猿需要一片凈土。沒有買賣就沒有傷害。
最后,腦容量有限,歡迎各位補(bǔ)充。寫這種文章,我也很慌,有不對之處請多多指教,謝謝!
作者:黃麗嫦,微信公眾號:野生派產(chǎn)品錄
本文由 @黃麗嫦 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash ,基于 CC0 協(xié)議
寫的好棒
很干貨,謝謝
小姐姐寫的很好啊,請問這邊是有幾年經(jīng)驗(yàn)了。我感覺干了好幾年了 吵架還是吵不過開發(fā)啊。
寫的不錯,怎么可以加到作者的微信
新手想問一下:接口定義是由產(chǎn)品來寫嗎?我們公司要求我們產(chǎn)品會寫接口定義。。就是需要多少接口,接口需要入?yún)⑹裁?,輸出什么都要寫出來,直接給后端來編寫?
接口入?yún)?、出參、使用場景、性能要求,這些是產(chǎn)品來寫的—來自美團(tuán)
太牛了吧,我們這都是開發(fā)寫,產(chǎn)品要會寫必須懂很多開發(fā)知識了吧
如獲至寶,謝謝老師
沒有買賣就沒有傷害……笑尿
看一半 對新人很有幫助,謝謝!先收藏。
有收益
厲害啊,小姐姐,能幫我生動的解釋一下code是啥意思么,網(wǎng)上搜到的都太官方。
200是服務(wù)器返回的請求狀態(tài)碼,比如:500,表示服務(wù)器錯誤。你經(jīng)常見的404,表示頁面找不到的意思。而200,表示請求成功的意思。
非常不錯,比某本書有用多了
文章整理的很用心,可能是因?yàn)閮?nèi)容比較多,出現(xiàn)了一個Bug:“打包,就是將自己寫的代碼(Bug)打包成一個文件……”
只是作者的一種調(diào)侃罷了
很棒啊,生動形象!
不錯。通俗易懂。
不錯。收藏了
到目前還只接觸到接口,前端后端,重構(gòu),組件,寫死,全是排在前面的。。
先mark了,很有用。
本人前端轉(zhuǎn)產(chǎn)品4個月,真是自愧不如,小姐姐真是很厲害了,膜拜膜拜
反手一個訂閱+轉(zhuǎn)發(fā)
對于我這個學(xué)八個月ui設(shè)計出來啥也不懂就被逼進(jìn)產(chǎn)品坑的小小白來說,這篇文章我看到了幾個很親切的字眼。css js token 重構(gòu),打包,接口這樣的字眼時,相當(dāng)親切,看文從不留言,這篇文章我甚是喜歡,同樣是九年義務(wù)教育,小姐姐你怎么可以那么有趣還有才,
作為產(chǎn)品狗,看完之后我覺得這下可以去硬剛程序猿了,因?yàn)橹酥?/p>
年輕的brother,保持謙虛、學(xué)習(xí)的心態(tài)。這些都還只是基礎(chǔ),冰山一角呢。
嗯嗯,曉得曉得,謙虛、學(xué)習(xí) ??
一口氣看完這篇文章,深深感覺這為小姐姐是一個有趣的人,2333333
你會看到一個菊花轉(zhuǎn)啊轉(zhuǎn)啊轉(zhuǎn)呀。。。233333333 小姐姐你是認(rèn)真的嗎
菊不菊花的無所謂,主要是轉(zhuǎn)啊轉(zhuǎn)啊
別的公司開發(fā)不收膝蓋了?
哈哈,感謝,好文?。∠戎烙羞@么回事再說吧,具體還要等業(yè)務(wù)上遇到了再細(xì)細(xì)理解
太厲害啦,小白也能看懂一大半,現(xiàn)在正在經(jīng)歷被各種強(qiáng)勢開發(fā)懟的階段,學(xué)習(xí)!
表白一個,作為無技術(shù)基礎(chǔ)的產(chǎn)品這些只停留在概念中,受教了
作為一個后端出身的全干型產(chǎn)品,表示你這技術(shù)還不錯啊!程序猿一定搞不過你哈哈哈
受教了