本文目錄一覽:
低代碼究竟是什麼?
簡介: 什麼是低代碼?我們為什麼需要低代碼?低代碼會讓程序員失業嗎?本文總結了低代碼領域的基本概念、核心價值與行業現狀,帶你全面了解低代碼。
什麼是低代碼
「Low-Code」是什麼?如果你是第一次聽說,沒準也會跟我當年從老闆口中聽到這個詞後的內心戲一樣:啥?「Low-Code」?「Code」是指代碼我知道,但這個「Low」字是啥意思?不會是老闆發現我最近趕工寫的代碼很醜很「Low」吧… 想多了,老闆怎麼可能親自review代碼呢。那難道是指,「Low-level programming」里的「Low」?老闆終於發現讓我等編程奇才整天堆Java業務代碼太浪費,要派我去閉關寫一個高性能C語言網絡庫… 顯然也不是,老闆哪能有這技術情懷呢。那到底是什麼意思?作為一名搜商比情商還高的程序員,能問Google的絕不會問老闆。於是我一頓操作後,不假思索地點開了第一條搜索結果:Low-code development platform。
Wikipedia定義
從Wiki的這段定義中,我們可以提煉出幾個關鍵信息:
• 低代碼開發平台(LCDP)本身也是一種軟件,它為開發者提供了一個創建應用軟件的開發環境。看到「開發環境」幾個字是不是很親切?對於程序員而言,低代碼開發平台的性質與IDEA、VS等代碼IDE(集成開發環境)幾乎一樣,都是服務於開發者的生產力工具。
• 與傳統代碼IDE不同的是,低代碼開發平台提供的是更高維和易用的可視化IDE。大多數情況下,開發者並不需要使用傳統的手寫代碼方式進行編程,而是可以通過圖形化拖拽、參數配置等更高效的方式完成開發工作。
Forrester定義
順着Wiki的描述還能發現,原來「Low-Code」一詞早在2014年就由Forrester提出了,它對低代碼開發平台的始祖級定義是這樣的:
請點擊輸入圖片描述
相比Wiki的版本,這個定義更偏向於闡明低代碼所帶來的核心價值:
• 低代碼開發平台能夠實現業務應用的快速交付。也就是說,不只是像傳統開發平台一樣「能」開發應用而已,低代碼開發平台的重點是開發應用更「快」。更重要的是,這個快的程度是顛覆性的:根據Forrester在2016年的調研,大部分公司反饋低代碼平台幫助他們把開發效率提升了5-10倍。而且我們有理由相信,隨着低代碼技術、產品和行業的不斷成熟,這個提升倍數還能繼續上漲。
• 低代碼開發平台能夠降低業務應用的開發成本。一方面,低代碼開發在軟件全生命周期流程上的投入都要更低(代碼編寫更少、環境設置和部署成本也更簡單);另一方面,低代碼開發還顯著降低了開發人員的使用門檻,非專業開發者經過簡單的IT基礎培訓就能快速上崗,既能充分調動和利用企業現有的各方面人力資源,也能大幅降低對昂貴專業開發者資源的依賴。
低代碼核心能力
基於上述的定義和分析,不難總結出如下這3條低代碼開發平台的核心能力:
請點擊輸入圖片描述
• 全棧可視化編程:可視化包含兩層含義,一個是編輯時支持的點選、拖拽和配置操作,另一個是編輯完成後所及即所得(WYSIWYG)的預覽效果。傳統代碼IDE也支持部分可視化能力(如早年Visual Studio的MFC/WPF),但低代碼更強調的是全棧、端到端的可視化編程,覆蓋一個完整應用開發所涉及的各個技術層面(界面/數據/邏輯)。
• 全生命周期管理:作為一站式的應用開發平台,低代碼支持應用的完整生命周期管理,即從設計階段開始(有些平台還支持更前置的項目與需求管理),歷經開發、構建、測試和部署,一直到上線後的各種運維(e.g. 監控報警、應用上下線)和運營(e.g. 數據報表、用戶反饋)。
• 低代碼擴展能力:使用低代碼開發時,大部分情況下仍離不開代碼,因此平台必須能支持在必要時通過少量的代碼對應用各層次進行靈活擴展,比如添加自定義組件、修改主題CSS樣式、定製邏輯流動作等。一些可能的需求場景包括:UI樣式定製、遺留代碼復用、專用的加密算法、非標系統集成。
不只是少寫代碼
回到最初那個直擊心靈的小白問題:Low-Code中的「Low」,到底是啥意思?答案已經顯而易見:既不是指抽象程度很低(相反,低代碼開發方式的抽象程度要比傳統編程語言高一個level),也不是指代碼很low(也相反,低代碼所生成的代碼一般都經過精心維護和反覆測試,整體質量強於大部分手寫代碼),而是單純的「少寫代碼」 —— 只在少數需要的情況下才手寫代碼,其他大部分時候都能用可視化等非代碼方式解決。
再往深一點兒看,低代碼不只是少寫代碼而已:代碼寫得少,bug也就越少(正所謂「少做少錯」),因此開發環節的兩大支柱性工作「趕需求」和「修bug」就都少了;要測的代碼少了,那麼測試用例也可以少寫不少;除了開發階段以外,平台還覆蓋了後續的應用構建、部署和管理,因此運維操作也更少了(Low-Code → Low-Ops)。
然而,少並不是最終目的:如果單純只是想達到少的效果,砍需求減人力、降低質量要求也是一樣的。低代碼背後的哲學,是少即是多(Less is More),或者更準確說是多快好省(Do More with Less) —— 能力更多、上線更快、質量更好,成本還更省,深刻踐行了阿里「既要,又要,還要」的價值觀精髓。
請點擊輸入圖片描述
平台的職責與挑戰
上面說的是低代碼給開發者提供的能力與吸引力,那麼作為服務的提供方與應用的承載者,低代碼開發平台自身應該承擔怎樣的職責,其中又會遇到多大的挑戰?是否就一定要如阿里雲所主張的那樣,「把複雜留給自己,把簡單留給別人」?雖然這句話聽起來很深明大義,但不知道大家有沒有想過,為什麼我們一定要抱着複雜不放,平白無故給自己找事?就不能直接幹掉複雜,也給咱阿里雲自己的員工留點簡單嗎?是工作太容易就體現不出來KPI價值了,還是家裡的飯菜不如公司的夜宵香?
冥思苦想許久後,我從熱力學第一定律中找到了答案:開發一個應用的總複雜度是恆定的,只能轉移而不可能憑空消失。要想讓開發者做的更少,安心享受簡單的快樂,那麼平台方就得做的更多,默默承擔儘可能多的複雜度。就像一個滿身腱子肉的雜技男演員,四平八穩地托舉着在高處旋轉與跳躍的女搭檔;上面的人顯得越輕盈越毫不費力,下面的人就得越穩重越用盡全力。當然,不是說上面的女演員就很輕鬆沒壓力,只是他們各自的分工不同,所承擔的複雜度也不一樣。
根據《人月神話》作者Fred Brooks的劃分,軟件開發的複雜度可以劃分為本質複雜度(Essential complexity )和偶然複雜度(Accidental complexity)。前者是解決問題時固有的最小複雜度,跟你用什麼樣的工具、經驗是否豐富、架構好不好等都無關,而後者就是除此之外在實際開發過程中引入的複雜度。通常來說,本質複雜度與業務要解決的特定問題域強相關,因此這裡我把它稱為更好理解的「業務複雜度」;這部分複雜度不是任何開發方法或工具能解決的,包括低代碼。而偶然複雜度一般與開發階段的技術細節強相關,因此我也相應把它稱為「技術複雜度」;而這一部分複雜度,恰好就是低代碼所擅長且適合解決的。
為開發者儘可能屏蔽底層技術細節、減少不必要的技術複雜度,並支撐其更好地應對業務複雜度(滿足靈活通用的業務場景需求),這是身為一個低代碼開發平台所應該盡到的核心職責。
請點擊輸入圖片描述
在盡到上述職責的同時,低代碼開發平台作為一個面向開發者的產品,還需要致力於為開發者提供簡單直觀的極致開發體驗。這背後除了巨大的工作量,還得能在「強大」和「易用」這兩個很難兩全其美的矛盾點之間,努力找到一個符合自己產品定位與目標客戶需求的平衡點 —— 這也許是設計一個通用低代碼開發平台所面臨的最大挑戰。
三、低代碼相關概念對比
純代碼(Pro-Code / Custom-Code)
「純代碼」可能算是我杜撰的一個詞,更常見的說法是專業代碼(Pro-Code)或定製代碼(Custom-Code);但意思都一樣,就是指傳統的以代碼為中心(Code-Centric)的開發模式。之所以我選擇用「純代碼」,是因為如果用「專業代碼」會顯得似乎低代碼就不專業了一樣,而用「定製代碼」又容易讓人誤解成低代碼無法支持定製的自定義代碼。
當然,更準確的稱謂我認為是「高代碼」(與低代碼恰好對應,只是名字太難聽,被我嫌棄了…),因為即便是使用傳統的代碼IDE,有些開發工作也支持(甚至更適合)以非代碼方式完成,比如:iOS端開發時使用的SwiftUI界面設計器、服務端開發數據庫應用時使用的PowerDesigner建模工具。不過這部分可視化工作在傳統開發模式下只是起輔助作用,最後通常也是生成開發者可直接修改的代碼;開發者仍然是以代碼為中心來開展主要工作。
低代碼與純代碼之間的關係,其實跟視頻和文章之間很像:
低代碼就像是現代的「視頻」,大部分內容都由直觀易理解、表達能力強的圖片組成,因此更容易被大眾所接受。但與此同時,視頻也不是死板得只能有圖片,完全可以添加少量文字(如字幕、標註)來彌補圖片表達不夠精確的問題。BTW,關於「圖」和「文字」之間的辯證關係,可以進一步參考《架構製圖:工具與方法論》[1]這篇文章中的相關描述。
純代碼則更像是傳統的「文章」,雖然很久以來都一直是信息傳播的唯一媒介,但自從視頻技術誕生以及相應軟硬件基礎設施的普及以來,便逐漸開始被搶走了風頭。如今,視頻已成為大部分人獲取信息的主要渠道(從電視電影到B站抖音),而經常讀書讀文章的人卻越來越少。但不可否認的是,文章依然有它存在的意義和受眾(不然我也不會費這勁敲這麼多字了),即使「市場份額」一直在被擠壓,但永遠會有它立足的空間。
請點擊輸入圖片描述
如果按上面這種類比關係推導,低代碼未來也會遵循與視頻類似的發展軌跡,超越純代碼成為主流開發模式。Gartner的預測也表達了相同的觀點:到2024年,所有應用程序開發活動當中的65%將通過低代碼的方式完成,同時75%的大型企業將使用至少四種低代碼開發工具進行應用開發。
但同樣地,就像是視頻永遠無法取代文章一樣,低代碼也永遠無法徹底取代純代碼開發方式。未來低代碼和純代碼方式將以互補的形態長期共存,各自在其所適合的業務場景中發光發熱。在後面的「低代碼業務場景」章節,會詳細列出哪些場景在現階段更適合用低代碼模式開發。
零代碼(Zero-Code / No-Code)
從分類的完備性角度來看,有「純代碼」自然也應該有完全相反的「零代碼」(也稱為「無代碼」)。零代碼就是完全不需要寫代碼的應用開發平台,但這並不代表零代碼就比低代碼更高級和先進,它只是做了一個更極端的選擇而已:徹底擁抱簡單的圖形可視化,完全消滅複雜的文本代碼。選擇背後的原因是,零代碼開發平台期望能儘可能降低應用開發門檻,讓人人都能成為開發者(注意:開發 ≠ 寫代碼),包括完全不懂代碼的業務分析師、用戶運營,甚至是產品經理(不懂裝懂可不算懂)。
即便是專業開發者,在技術分工越來越精細的趨勢下(前端/後端/算法/SRE/數據分析..),也很難招到一個能獨立開發和維護整套複雜應用的全棧工程師。但零代碼可以改變這一切:無論是Java和JavaScript傻傻分不清楚的技術小白,還是精通深度學習但沒時間學習Web開發的算法大牛,都可以通過零代碼實現自己的技術夢或全棧夢。「改變世界的idea已有,就差一個程序員了」,這句玩笑話或許真的可以成真;哦不,甚至都用不着程序員,有idea的人自己就能上。
請點擊輸入圖片描述
當然,所有選擇都要付出代價,零代碼也不例外。完全拋棄代碼的代價,就是平台能力與靈活性受限:
• 一方面,可視化編輯器的表達能力遠不及圖靈完備的通用編程語言,不引入代碼根本沒法實現靈活的定製與擴展(當然,理論上也可以做成Scrach/Blockly那樣的圖形編程語言,但那樣不過是換一種形式在手寫代碼而已)。
• 另一方面,由於目標受眾是非專業開發人員,平台能支持的操作會更趨於「傻瓜化」(e.g. 頁面只支持大塊業務組件的簡單堆疊,不支持細粒度原子組件和靈活的CSS布局定義),同時也只會透出相對「親民化」的模型和概念(e.g. 使用「表格」表示數據,而不是用「數據庫」),無法支撐強大專業的底層開發原語和編程理念。
請點擊輸入圖片描述
雖然零代碼與狹義上的低代碼有着上述明顯差異,但從廣義上來說,零代碼可以當作低代碼的一個子集。Gartner在其相關調研報告中,就是將「No Code」劃在了範圍更廣的低代碼應用平台「LCAP」(Low-Code Application Platform)中。而當前市面上很多通用的低代碼開發平台,也都兼具一定程度的零代碼能力;比如低代碼領域領頭羊Mendix,既提供了簡單易用的零代碼Web IDE – Mendix Studio,也包括一個功能更強大的低代碼桌面IDE – Mendix Studio Pro。
HpaPaaS(高生產力應用PaaS)
上文提到,「Low-Code」一詞是拜Forrester所賜。作為同樣是國際知名調研機構(a.k.a 造詞小能手)的Gartner,顯然不會輕易在這場可能決定低代碼領域江湖地位的新概念作詞大賽中認輸,於是也於2017年發明了「HpaPaaS」(High-productivity application Platform as a Service)這個聽上去更高大上的縮寫詞。
按照Gartner的定義,HpaPaaS是一種支持聲明式、模型驅動設計和一鍵部署的平台,提供了雲上的快速應用開發(RAD)、部署和運行特性;這顯然與低代碼的定義如出一轍。但事實證明,名字起得太專業並不見得是好事,「HpaPaas」最終還是敗給了起源更早、更接地氣也更順口的「Low-Code」:從2019年開始,Gartner在其相關調研報告中也開始全面採用「Low-Code」一詞(如LCAP),親手為「HpaPaaS」打上了 @deprecated 印記。
請點擊輸入圖片描述
圖源:What』s the difference between SaaS / IaaS / PaaS / aPaaS / HpaPaaS?
值得補充的是,「HpaPaaS「這個詞也並非橫空出世,而是傳承自更早之前Gartner提出的「aPaaS」,它倆之間的關係是:HpaPaaS只是aPaaS的一個子類;除了HpaPaaS這種通過低代碼實現的高生產力應用開發平台以外,aPaaS還包括面向純代碼的傳統應用開發平台(High-control aPaaS,即可控度更高的純代碼開發方式)。
不值得但就想八卦一下的是,「aPaaS」這個詞也非憑空捏造,而是與雲計算的興起淵源頗深。相信各位雲道中人都已猜到,aPaaS與IaaS/PaaS/SaaS這些雲計算遠古概念是一脈相承的:aPaaS介於PaaS和SaaS之間,相比PaaS提供的服務更偏應用,但又不像SaaS一樣提供現成的軟件服務(更詳細的說明可參考配圖來源文章)。
四、為什麼需要低代碼
低代碼是什麼可能並沒那麼重要,畢竟在這個信息爆炸的世界,永遠不缺少新奇而又短命的事物。大部分所謂的新技術都只是曇花一現:出現了,被看到了;大部分人「哦」了一聲,已閱但表示不感興趣;小部分人驚嘆於它的奇思妙想,激動地點了個贊後,回過頭來該用什麼還是什麼。真正決定新技術是否能轉化為新生產力的,永遠不是技術本身有多麼優秀和華麗,而是它是否真的被需要,即:為什麼需要低代碼?如果用不同的主語填充上面這個問句(冷知識:這叫做「延遲主語初始化」),可以更全面地看待這個問題:
為什麼「市場」需要低代碼?
在這個大爺大媽都滿嘴「互聯網+」和「數字化轉型」的時代,企業越來越需要通過應用(App)來改善企業內部的信息流轉、強化與客戶之間的觸點連接。然而,誕生還不太久的IT信息時代,也正面臨著與我國社會主義初級階段類似的供需關係矛盾:落後的軟件開發生產力跟不上人民日益增長的業務需求。
請點擊輸入圖片描述
Gartner預測,到2021年應用開發需求的市場增長將至少超過企業IT交付能力的5倍。面對如此巨大的IT缺口,如果沒有一種革命性的「新生產力」體系,很難想像僅憑現有傳統技術體系的發展延續就能徹底解決問題。而低代碼技術正是帶着這樣的使命而降臨,期望通過以下幾個方面徹底革新應用開發生產力,拯救差一點就要邁入水深火熱的IT世界:
提效降本 質量保障
雖然軟件行業一直在高速發展,新的語言、框架和工具層出不窮,但作為從業者我們不得不承認:軟件開發仍處於手工作坊階段,效率低、人力成本高、質量不可控。項目延期交付已成為行業常態,而瓶頸幾乎總是開發人員(對機器能解決的問題都不是問題);優秀的開發人才永遠是稀缺資源,還賊貴;軟件質量缺陷始終無法收斂,線上故障頻發資損不斷。
相比而言,傳統製造業經過幾百年工業革命的發展,大部分早已擺脫了對「人」的強依賴:從原料輸入到製品輸出,中間是各種精密儀器和自動化流水線的穩定支撐,真正實現生產的標準化和規模化。雖然信息化號稱是人類的第三次工業革命,但以軟件行業目前的狀況,遠遠還沒到達成熟的「工業化」階段。
所以,親愛的程序員朋友,當你與前端聯調了一上午接口,又與產品撕逼了一下午需求,再與自己的bug抗爭了一整晚,好不容易遁入夢鄉又被一連串報警短訊吵醒時,是否有抬頭對着星空憧憬過:「I have a dream… that one day,軟件開發也能像工業製品一樣,批量流水化生產,穩定高效沒煩惱。」 事到如今,不管你有沒有意識到,這個憧憬正在慢慢變成現實。
請點擊輸入圖片描述
是的,低代碼正在將應用軟件開發過程工業化:每個低代碼開發平台都是一個技術密集型的應用工廠,所有項目相關人員都在同一條產線內緊密協作。開發主力不再是熟知for循環一百種寫法的技術Geek,而是一群心懷想法業務sense十足的應用Maker。藉助應用工廠中各種成熟的基礎設施、現成的標準零件、自動化的裝配流水線,開發者只需要專註於最核心的業務價值即可。即便是碰到非標需求,也可以隨時自己動手,用最靈活的手工定製(代碼)方式來解決各種邊角問題。
擴大應用開發勞動力
通過讓大部分開發工作可以僅通過簡單的拖拽與配置完成,低代碼(包括零代碼)顯著降低了使用者門檻,讓企業能夠充分利用前面所提到的平民開發者資源。部分純零代碼需求場景下,低代碼還能讓業務人員實現自助式(self-service)應用交付,既解決了傳統IT交付模式下的任務堆積(backlog)問題,避免稀缺的專業開發資源被大量簡單、重複性的應用開發需求所侵佔,也能讓業務人員真正按自己的想法去實現應用,擺脫交由他人開發時不可避免的桎梏。
請點擊輸入圖片描述
至此,應用開發能力不再是少數專業開發者的專利和特權,且今後所需要的技能門檻與擁有成本也會越來越低,真正實現所謂的「技術民主化」(democratization of technology)。
加強開發過程的溝通協作
多方調查結果顯示,軟件項目失敗的最主要原因之一就是缺乏溝通(poor communication)。傳統開發模式下,業務、產品、設計、開發、測試與運維人員各司其職,且各有一套領域內的工具和語言,長久以來很容易形成一個個「豎井」(silos),讓跨職能的溝通變得困難而低效。這也是為什麼當前熱門的敏捷開發和DevOps都在強調溝通(前者是協同Biz與Dev,而後者是協同Dev和Ops),而經典的DDD領域驅動設計也主張通過「統一語言」來減少業務與技術人員之間的溝通不一致。
請點擊輸入圖片描述
有了低代碼後,這一狀況將得到根本改善:上述各角色都可以在同一個低代碼開發平台上緊密協作(甚至可以是同一個人),這種全新的協作模式不僅打破了職能豎井,還能通過統一的可視化語言和單一的應用表示(頁面/數據/邏輯),輕鬆對齊項目各方對應用形態和項目進度的理解,實現更終極的敏捷開發模式,以及在傳統DevOps基礎之上更進一步的BizDevOps[2]。
統一開發平台下的聚合效應
低代碼嘗試將所有與應用開發相關活動都收斂到同一個平台(one platform)上後,將會產生更多方面的聚合效應與規模收益:
• 人員聚合:除了上一點所提到的各職能角色緊密協作以外,人員聚合到統一的低代碼開發平台進行作業後,還能促進整個項目流程的標準化、規範化和統一化。
• 應用聚合:一方面,新應用的架構設計、資產復用、相互調用變得更容易;另一方面,各應用的數據都天然互通,同時平台外數據也能通過集成能力進行打通,徹底消除企業的數據孤島問題。
• 生態聚合:當低代碼開發平台聚合了足夠多的開發者和應用後,將形成一個巨大的、連接一切、有無限想像力的生態體系,徹底放飛低代碼的價值。
怎麼學好js?
頁面要想實現好的互動性Java是必不可少的,特別是在一些網站專題頁面對於互動性要求更高,中級和高級web前端工程師js是必須要掌握的,下面為大家詳細介紹一下Java。
雖然仍有一些人對 Java 的批評特別是對Java 用於後端任務心存疑慮,但這些並不妨礙Java成為廣泛用於客戶端的語言,成為前端開發必不可缺少的工具。Java和html一樣都是客戶端(瀏覽器執行)的語言,通常Java腳本是通過嵌入在HTML中來實現功能的。
下面為大家介紹java的特點:
1、java是一種解釋性腳本語言不進行預編譯,而c、c++等編程語言都是先編譯後執行,java是逐行解釋運行的。
2、基於對象的語言,它不僅可以創建對象,也能使用現有的對象。
3、以嵌入HTML頁面,也可寫成單獨的js文件。
4、多平台運行,在大部分瀏覽器瀏覽器的支持下,可以在多種平台下運行比如Android、iOS等。
那麼,怎麼才能在js領域內學的輕鬆甚至遊刃有餘呢?我總結了一些實戰意義的js學習經驗:
首先要緊緊抓住它的地位
時刻都不能忘記,否則很容易犯「一葉障目不見泰山」的錯誤。
不要學了很久就知道js是編程語言,就是寫代碼、而且特點就是亂七八糟就完了,那樣是學不好js的。
要時時抓住它的地位,確切的說是它在整個WEB中的地位:它屬於前端的核心,主要用來操控和重新調整DOM,通過修改DOM結構,從而來達到修改頁面效果的目的。
要用這個中心思想去指導後續的一切js的學習,並且形成條件反射。
要有一條清晰的學習路線
這個只能是過來人給你提供參考了。
我的學習路線如下:
A:js基礎部分,如:定義變量、函數、數組、字符串等的處理,內置函數、內置對象等。
B:js面向過程編程思想,封裝出各個函數,試着用這些去做一些常見的小功能,如:選項卡,自定義多選按鈕,自定義播放器,3D幻燈片;
C:js面向對象編程思想,試着去封裝一些你自己的對象,提供出有意義的接口出來;
D:學了上述的內容,然後學常用的庫,這裡必須學jquery;
E:學基於Jquery之上的常見插件,如:bootstrap,Layer,富文本編輯器等。
F:綜合應用上面的多種庫寫實際項目的模板,多寫幾套。
注意學習方法
我的學習方法總結如下:
A:多買幾本國外的js書籍,不要購買那種20天精通之類的書。
否則你是很難學通的,更怕的是:本來你買本好書自學3個月可能學會的,它們硬是能折騰你兩年……
書籍推薦(僅供參考)
《Java DOM編程藝術》
《Java權威指南》
《java DOM高級程序設計》
《Java設計模式》
《鋒利的jquery》
爭取把書上的功能都自己練習多次,不是一次。書讀百篇,其義自見。
B:從多角度去學習和領悟
充分調動你所學的東西,從多角度的去做某一功能,如:以前你是從面向過程角度做的,
現在改為從面向對象的角度再來做,或者繼續做成可以直接使用的插件,提供屬性、方法等出來。爭取讓你做的這個功能逐漸能使用到實際項目中來。
這樣的好處:既綜合應用了你的所學,又能有實際意義。
C:一定不要好高騖遠
不要放過哪怕很小的動手機會,如做一個選項卡。
千萬不要認為有了類似的甚至更好的插件就不需要自己寫了,知識是別人的,不是你的,你即使會用了也對你的技術技能水平沒有任何提升。
你要多問自己,如果要我來做,我該怎麼做?
D:腳踏實地的同時,也不要脫離實際
多看現在網上已經出現的效果好的功能,讓它去激發你的學習熱情,盡量去學着模擬,調動你的知識去和實際相結合。
E:多寫總結
這種總結不但包括源代碼、顯示效果截圖,還應該很容易犯的錯誤和對應的解決方法以及最後一兩句精簡的結論性語句。
對自己寫的總結不是寫完了就了事了,要多回顧,多改進,多精簡。到做項目的時候,應該是看裏面的一兩句話就知道是講什麼了,而不要再去看長篇大論了。
F:構建知識導圖
這個可以讓你越學越清晰,比如:,你可以按你喜歡的任何形式去做,只要自己印象深刻就行。
注意:知識導圖也應該是經常修改、修正,讓它更合理、更清晰。
注意事項
A:充分利用一切手段
很多人總感覺時間緊,沒有大塊的時間學習。我要說你不會學了,你不應該只是抱怨,而是要利用一切手段去學習,要知道,不一定只有看書才叫學習。
當你冷靜的坐在某個地方,思考了一下,總結了一下,你也都叫學習,但凡有靈感,就可以記錄下來,比如:記錄在手機上,等方便了再記錄在專門的地方。這都叫學習。
B:貴在堅持
要沉的下心。沒有一蹴而就的成功,否則那也不是成功,只能叫「僥倖」。
不但要老老實實的把每個功能都試着去實現,而且要精益求精的不斷去修正,這個過程是漫長的,也是考驗一個人是否是人才的標準。
C:注意培養信心
此時的你,不適合一來就看很複雜很炫的網頁效果的源代碼,也不適合一來就學jquery,angular,vue,bootstrap這些東西。
這些內容包含了很多深奧的知識在裏面,在沒有任何基礎的情況下直接學這些,會嚴重打擊你的自信心。
而此時你是弱小的,你需要的是培養信心,而不是反過來,否則結局很可能是「夭折」,離學有所成也就遙遙無期了。
D:多跟學的好的過來人學習
站在巨人的肩上,才能看的更遠。
E:不要浪費在工具的不停選擇上
js的編輯工具很多,如果無從下手,建議使用:sublime,或者使用Hbuilder;很多公司里的技術人員都用這些,你直接用這個也減少了和別人之間的溝通問題。
我也是用這個,感覺很好。
總結
感覺js學起來「雜而亂」的原因是因為你太「聰明」了,一開始就管的太寬,利害得失也計算的太精細。
要求太完美則心裏承受能力下降,很容易出現「障」。此時,你應該「笨」一些,不要考利那麼長遠,「傻人有傻福」,只要做好今天就夠了。
一些不合理的學習方法和心態也讓你迷失了自我:如:心浮氣躁、眼高手低、好高騖遠,這些都會讓你在「亂七八糟」的js面前深陷迷霧、不能自拔。
此時,你應該重新定位自己的位置,重新去認識js,放下包袱,方能輕鬆上陣。把杯子先倒空,才能灌新水……
其實,js是前端的核心。影響越來越深的互聯網+會渴求越來越多的js人才,只有經歷過真正刻骨銘心的學習經歷,才能造就出贏得未來的真正精英。
關於JavaScript 的好書有哪些
1. JavaScript DOM 編程藝術
這本書作為被大家推薦的最多的前端入門書籍是有道理的。
他能真正讓大家了解dom腳本編程,或是說前端編程技術背後的思路和原則。
對於初學者來說,這本書沒有任何門檻,按部就班跟着書籍實例編寫代碼即可。
我們會知曉如何對瀏覽器元素操作和掌控,會學會如何實現簡單的頁面效果。
這種簡單易得的成就感是一個編程語言入門時最難能可貴的體驗。
閱讀建議:
這本書雖然簡單,但是能讓人快速對前端產生興趣和成就感。
不過後續學習jquery的時候可能會產生挫敗感。原生js dom操作的成就感會被jquery便捷的API所徹底打敗。所以一定要恰當的調整心態,轉換思維方式,正確認識到jquery和原生js分別的優劣之處。
在熟練使用jquery後還能想起來翻看這本書,找到之前未曾發現的閃光點,就是入門成功了。
2. JavsScript高級程序設計(第三版)
無論何時,這都是學習js最好的書。
如果說其他的書都是在合適的階段會有不一般的體驗。
這本書就是無論什麼階段,都夠你感悟一番的。
當你看完了市場上js相關(不包括框架類庫的最佳實踐類)的所有書籍。你再回去看這本書,也會發現其實95%的內容早就寫在這本書里了,只不過你當時等級不夠,根本沒有意識到。
這本書排版舒服,翻譯得體,內容豐富,語言流暢。涵蓋了js語法(面向對象,閉包作用域等),js使用(dom,bom,html5API),編程實踐(高階函數,編碼規範)等程序員使用javascript時會遇到的大部分問題。
(今天在上海面試了一天。大部分很順利,只是有幾個比較偏的問題沒回答好。晚上回去之後一翻高程三,果然在裏面都寫得明明白白的。不得不服。)
閱讀建議:
人們喜歡把他和犀牛書拿一起推薦,不過就我看來,他們完全不是一個可讀性上的。
一個是課本一個是字典。而且還是佶屈聱牙的字典。
所以無論何時我都會把高程三排在js推薦書籍的第一位。
3. 鋒利的jQuery
圖忘了拍了,就不補了。
這本書如果緊接着dom編程看,會如我我說的那樣瞬間摧毀你的小小的成就感。
因為這本工具書級別的書簡單暴力到不給你思考什麼「平穩退化」,「js動畫計時器」這些dom編程中提及的問題,就直接就甩出一大片簡單有效的jqueryAPI顛覆你的世界觀。
這本書是如此的易懂以至於看完之後瞬間就覺得自己能把web玩出一片花來了。
作為工具書級別的書,或是說學習jqueryAPI的書,這是首選。
閱讀建議:
熟悉jquery是每個前端必須要會的事。
只是不要被Jquery的便捷迷惑,而拋離原生js,把原生js貶得一文不值,否則後面會付出昂貴的代價。
4. 學習Javascript數據結構與算法
這本書相對是一本冷門書。
為什麼我會推薦他,是因為他能解決每個半路出家的js程序員都曾思考過的一些問題:
1. 我們的數組Array這麼強大,要棧Stack,隊列Queue這些功能少,半半拉拉的東西幹什麼呢?
2. 我們學的數據結構搞來搞去好像也就那些玩意,為什麼被大家這麼推崇,還要分門別類討論呢?
所以這本書只是為何告訴你上面這些問題的答案:
1. 棧和隊列本來就沒有Array功能強。沒有Stack和Queue類只是因為ES5不去實現它而已。作為一種相互之間存在一種或多種特定關係的數據集合,其存在意義是不應該被其功能強大與否來決定的。
2. 數據結構和編程語言無關。語言死了,他們會在下一門語言里重生。哪怕計算機死了,他們都會在下一個概念體里重生。
閱讀建議:
跟着書本把這裏面的結構全部敲一遍,快的話一天就能搞定。
從此你便再不怕懼怕js相關的簡單數據結構問題。
但是,遇上高級的樹,圖等問題該跪還是要跪。因為這本書虎頭蛇尾,後面的高級點的數據結構介紹的不夠深。
適合經常反思「它從哪裡來,要到哪裡去?」的js程序員,或後悔以前數據結構沒好好學的前端同學。
5. JavaScript設計模式與開發實踐
我認為騰訊AlloyTeam的這本書對我幫助媲美高程三。
那時候我恰好換公司,從原來的開發方式切換成另一種完全不同的開發方式,讓我很不適應。
這本書及時的蹦出來,他拿實際的應用場景舉例,告訴你不同js項目里如何共通設計模式,還極其詳細的介紹了函數的高級用法,能讓你對js高階函數的認知上升一個台階。
難能可貴的是他還拿java作為靜態語言的類比。從語言統一高度來給你分析這些問題。
和上本介紹數據結構的書一樣,這本書有的放矢,能完美的解決對js設計模式有疑問的同學的實際問題。
他比上本書更深刻,更易讀,也更貼近實踐。
閱讀建議:
這是本適合反覆閱讀的書籍。
如果你的思路能根據應用場景自動切換到最適合的設計模式,說明你已吃透這本書了。
6. 高性能JavaScript
作為Orelly唯一一本我確實認可的javascript相關的書。作為Orelly唯一一本我確實認可的javascript相關的書。
他摒棄了Orelly系列所有我不喜歡的特點:
老外的聊天說教式閱讀體驗,樣例不夠豐富,排版單一,破事水等。
他的優點如下:
1. 情景豐富,基本涉及所有js性能優化的場景。還會給出不同場景的實際測試數據,真實可信。我們在閱讀這些場景實例的同時也豐富了自己js的使用經驗。
2. 給出了很多看似”旁門左道”的解決方案,而這些冷門的解決方案恰恰是有些人死活百度不到的真正能解決問題的最優解。
3. 在說問題的同時說原理,深入淺出,遊刃有餘。所以這本書不僅僅是一本介紹js性能相關的書,而是一本涉及瀏覽器原理,js解析原理,用戶體驗等知識的javascript最佳註解。
閱讀建議:
建議和高程三一起看,可以算是高程三閱讀的最佳伴侶。
高程三告訴你「他叫什麼,他什麼樣」,
這本書就告訴你「他為什麼」,「他該怎樣」。
所以,當別人還在為某些問題絞盡腦汁的時候,你已經從起點上干翻他們了。
7. 你不知道的JavaScript(YOU DONT KNOW JAVASCRIPT)
大名鼎鼎的Github開源的書籍。大名鼎鼎的Github開源的書籍。
為了他的名氣我也得買一本實體書來拜讀下。
這本是上卷,只涉及作用域和閉包,this和對象原型兩部分。
不過其深入程度是其他js書籍難以企及的。
可以說,這已經是大部分前端程序員對js語法可以深入了解的最底層了,再往下就直面編譯原理了。
騰訊會議好玩的代碼
一、背景虛化:騰訊會議在使用過程中,可能會在各種環境下,為了提升會議效率,不被一些雜亂的環境影響,背景虛化功能是非常實用且高效的。這裡就教大家如何設置背景虛化。在PC端直接進入「設置」,選擇「虛擬背景」進行設置;移動端進入騰訊會議之後選擇更多,然後同樣在「虛擬背景」中設置。但需要注意的一點是這兩端對應的硬件配置需要支持CPU雙核,以及AVX2指令集擴展,不過小夥伴們也不用被這個配置嚇到,2013年以後推出的CPU芯片已經都具備了這樣的功能。
二、彈幕功能:在B站彈幕崛起之後各大視頻網站紛紛開啟了彈幕「之旅」,並且也都收穫到了不小的益處,給大家提供了一個吐槽的平台,當然我們黑科技滿滿的騰訊會議也不甘示弱,也是可以支持發送彈幕的,並且是有趣好玩的表情彈幕,例如好,點贊,鼓掌等,在開會中對領導的講話表達自己的認同可是非常的使用的。
三、自定義背景:接下來要介紹的是騰訊會議最火也最受歡迎的黑科技之一就是背景的自定義,這個對於喜歡個性化配置的小夥伴是很大的福利。重點是騰訊會議不僅僅支持圖片背景,甚至支持自定義視頻背景,在使用的時候小夥伴要注意以下幾點:圖片規格:16:9,jpg/png/bmp/jpeg,4K分辨率,最大20M,視頻規格:mov/MP4,1080P,無大小限制。千萬不要因為圖片規格原因導致上傳失敗影響體驗。還有一點要說的是移動端暫不支持自定義背景,但是小巴感覺移動端自定義背景的功能也將會很快上線的。
四、智能降噪:對聲音高保真有一定追求的小夥伴的福音來了,俗話說耳機不夠,黑科技來湊,騰訊會議自帶降噪功能,支持智能消除環境噪音,高保真還原人聲。不管是在嘈雜的環境中,還是對聲音的清晰度有要求,都可以滿足順利的完成會議,設置方式也是非常的簡便,電腦上:進入會議後點擊設置然後來到beta實驗室選擇音頻降噪,移動端同樣進入會議後找到更多進入設置選擇音頻降噪,學到的小夥伴趕緊使用起來吧。
五、美顏功能:說道美顏功能騰訊會議可以說是非常的貼心了,也是考慮到了小夥伴們對美的最求,雖然咱們使用騰訊會議的小夥伴本來就很美。下面就來教大家如何設置:
使用電腦的小夥伴先進入騰訊會議後找到設置進入beta實驗室內打開美顏功能設置項。移動端在會議界面下方點擊更多按鈕進入設置選擇美顏等功能設置項開啟就好了,是不是方便又好用。
六、最後就是咱們最常用的視頻布局調整功能,將自定義個性化能力放大最大,雖然同是騰訊會議,但實現千人千面的效果,讓大家使用起來更加的得心應手,騰訊會議目前共提供了三種布局:演講者模式,畫廊模式或是畫中畫模式,小夥伴根據自己的個人習慣任意調整,也可根據不同的使用場景來切換對應的模式。
這六大黑科技可以幫助朋友們更好的使用騰訊會議,特別是美顏功能,在視頻面試的時候,能給HR一個很好的印象呢。
編輯於 2021-08-17 08:40
評論
寫評論
文章被以下專欄收錄
教你用騰訊會議
教你用騰訊會議
騰訊會議有哪些黑科技,哪些新的功能,教你用!
推薦閱讀
使用騰訊會議你可能不知道的5個冷知識
雲博爵
使用騰訊會議你可能不知道的5個冷知識
騰訊會議使用介紹
騰訊會議使用騰訊會議與騰訊課堂的區別——教師版想必在老師…
Shawn
騰訊會議使用介紹
騰訊會議裡邊我就要玩的不一樣
騰訊會議怎麼完成花來?自從學會虛擬攝像頭後,每一次會議換一個形象,別人開會,我玩裝扮。 上乾貨,怎麼把騰訊會議個人形象變成視頻,如一個舔屏幕的狗狗,一個打瞌睡的小貓,一個啃胡蘿…
追鴿子的人
超實用的騰訊會議操作流程(小白入門版)
蘊計 · 發表於蘊計
超實用的騰訊會議操作流程(小白入門版)
北大青鳥設計培訓:有用的JavaScript和CSS庫?
高質量的網頁設計需要直觀和用戶友好的界面,而且屏幕上的元素也起着非常重要的作用。
Web設計師不斷地尋找優秀代碼的集合,希望能提升工作效率。
但找到合適的工具庫並不總是那麼容易的。
網絡上有太多的資源可以使用,而且也是免費的,因此西安電腦培訓發現很難判斷哪些資源比較好。
這就是精心搜索並編寫這個最好的庫列表的原因。
無論是希望創建一個視覺上吸引人和功能強大的布局,還是需要在表單和其他區域添加屏幕上的規則和驗證,你都會喜歡這個集合。
這裡列出的庫是由具有豐富網頁設計經驗的專家創建的,這些庫不僅是經驗豐富的設計師的優秀工具,也是適用於初學者的好工具。
這個集合將會幫你節省很多時間,來看一看吧!0.Buefy適用於Vue.js項目的輕量級UI框架,使用流行的基於flexbox的CSS庫Bulma構建。
它具有典型的WebAPP所需的全部組件,包括像模態框、吐司和通知這樣的動態元素,使開發者可以快速添加任何用戶界面到現有的Vue.js項目。
1.HR.js零依賴庫,用於在DOM中以編程的方式高亮顯示並替換字符串,HR.jsAPI的使用不能再簡單了—只需使用CSS選擇器來定位目標文本的父HTML元素,選擇要突出顯示的單詞,設置背景顏色,然後就完成了!2.ReactVRReactVR是為VR應用而創建的框架,運行在Web瀏覽器中。
它將現代API(例如WebGL和WebVR)與React的聲明能力結合起來,通過各種設備提供適用於消費者的體驗。
3.Tippy.js輕量的純JavaScript動態提示工具插件庫。
它提供了大量的不同懸停效果和超過20個可定製的選項。
Tippy.js是超級輕量的,並且具有相當不錯的瀏覽器兼容性,當不被支持時會自動回退到常規的title屬性。
4.Barba.js沒有依賴關係的JavaScript庫,用於在單頁面應用程序的視圖之間創建平滑的過渡。
該邏輯是圍繞PJAX(pushstateAJAX)構建的,它會檢查所有有效的URL,阻止它們的正常行為,並通過XMLHttpRequest加載新頁面。
Barba還會確保通過使用PushStateAPI,使得狀態的更改可在頁面的URL中正確反映出來。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/229135.html