網(wǎng)頁(yè)制作的前端和后臺(tái)要學(xué)會(huì)什么?
網(wǎng)頁(yè)制作的前端需要學(xué)習(xí)
1、html語言
首先要學(xué)這個(gè),任何網(wǎng)頁(yè)的顯示都要靠html語言來表達(dá),瀏覽器解釋html語言顯示在我們面前。
2、服務(wù)器架設(shè)
要制作網(wǎng)頁(yè)就需要架設(shè)服務(wù)器來調(diào)試你做出來的網(wǎng)頁(yè),有iis等很多種,可以在網(wǎng)上搜索得到。
3、css語言
用網(wǎng)頁(yè)制作三劍客做出來的東西,css大部分是自動(dòng)生成的,很難理解,需要學(xué)習(xí)基本的css知識(shí),是步入高手的必經(jīng)之路。css控制著網(wǎng)頁(yè)圖片、表格、文字等等內(nèi)容在我們面前的顯示樣式,比如顏色,邊框,大小等。
4、divcss布局
這個(gè)東西是走向?qū)I(yè)制作的必經(jīng)之路,網(wǎng)頁(yè)元素靠它來搭建基本框架,像百度空間,QQ空間的皮膚等就是利用這個(gè)來做的。
5、數(shù)據(jù)庫(kù)
走向動(dòng)態(tài)網(wǎng)頁(yè)的基礎(chǔ),比如百度知道的提問回答這些,都涉及數(shù)據(jù)庫(kù)的讀、寫、改、刪。常見的數(shù)據(jù)庫(kù)有mysql、mssql、access等。數(shù)據(jù)庫(kù)是所有軟件的基礎(chǔ),80%以上的應(yīng)用程序都涉及數(shù)據(jù)庫(kù),而作為網(wǎng)頁(yè)制作來說沒有必要學(xué)得很深,夠用就行。
6、動(dòng)態(tài)語言,asp,php,jsp,.net(c#等)
要操作數(shù)據(jù)庫(kù),交互就需要?jiǎng)討B(tài)語言,現(xiàn)在好多動(dòng)態(tài)語言像php都有“框架”,用框架建站好比用活動(dòng)板房的零件建房子,全部自己寫好比一塊一塊磚砌房子。
7,java
網(wǎng)頁(yè)里面的驗(yàn)證碼,彈窗,特效等就靠它了,一個(gè)沒有java的頁(yè)面基本沒有,這個(gè)也有好多的框架可用,這個(gè)語言是難的,也是強(qiáng)大的,網(wǎng)頁(yè)木馬,病毒大多用這個(gè)語言。
8、平面涉及軟件
flash,photoshop等,頁(yè)面美化還要靠圖片等東西。
這些個(gè)東西你會(huì)一個(gè),或者一個(gè)都不會(huì),都能做出一定水平的網(wǎng)頁(yè)(用三劍客,或者直接用word做好后另存為htm文件就行),要深入的學(xué),這些知識(shí)基本的。
網(wǎng)頁(yè)制作的后端需要學(xué)習(xí)1. 學(xué)習(xí)一門語言
語言的選擇有很多種,為了方便您的選擇,我將它們進(jìn)行了分類。對(duì)于剛接觸后端開發(fā)的新手,我強(qiáng)烈建議你們選擇一門腳本語言,因?yàn)樗鼈兊男枨蠛芏嗲疑鲜州^快。最好的選擇當(dāng)然是Python,它的需求正在急速增長(zhǎng),有大量的職位可供選擇。
2. 學(xué)以致用
最后的學(xué)習(xí)方法就是動(dòng)手實(shí)踐。一旦你選擇了語言,然后對(duì)其有了基本的了解,開始使用它。運(yùn)用它進(jìn)行盡可能多的練習(xí),寫一些小程序練手,熟悉它。下面是一些小例子,可以幫助你開始。
* 實(shí)現(xiàn)一些bash中你常用的命令, 比如ls的功能
* 寫一個(gè)從reddit的/r/programming頻道抓取數(shù)據(jù)并將之保存為JSON格式的小程序
* 寫一個(gè)程序?qū)⒛夸浗Y(jié)構(gòu)保存為JSON文件。
* 根據(jù)上面生成的JSON文件,生成目錄結(jié)構(gòu)。
* 想想日常工作中的任務(wù),嘗試將之自動(dòng)化。
3. 學(xué)習(xí)包管理器
一旦你了解了語言的基礎(chǔ),同時(shí)用它寫過些示例程序,接著學(xué)習(xí)該語言的包管理器。包管理器可以幫助你使用第三方庫(kù),同時(shí)你也可以通過它發(fā)布自己的庫(kù)以供他人使用。
假設(shè)你選擇的是Python,你應(yīng)該已經(jīng)學(xué)習(xí)了Pip。Node.js有NPM或Yarn、PHP有Composer,Ruby有RubyGems。無論你選擇了什么,進(jìn)一步去學(xué)習(xí)它的包管理。
4. 規(guī)范以及最佳實(shí)踐
每一種語言有其規(guī)范以及最佳實(shí)踐。你需要掌握這個(gè)東西。比如Python有PEP8跟Google Python代碼規(guī)范。Node.js各社區(qū)有不同的規(guī)范。其他語言的狀況也大同小異。
5. 安全
務(wù)必要掌握安全最佳實(shí)踐。讀讀OWASP指南,了解不同的安全問題,同時(shí)要知道如果避免這類問題。(你選擇的語言)
6. 實(shí)踐
現(xiàn)在你已經(jīng)掌握了語言基礎(chǔ),最佳實(shí)踐,安全相關(guān)以及包管理,你可以去開發(fā)自己的庫(kù)供他人使用了。如果你用Python,你需要發(fā)布在Pypi,如果是Node.js,你需要發(fā)布在Npm。
到此,你可以在Github上找一些項(xiàng)目,參與進(jìn)去。
* 重構(gòu),實(shí)現(xiàn)你學(xué)到的最佳實(shí)踐
* 修復(fù)已知的問題
* 添加新的功能
7. 測(cè)試
測(cè)試分很多種,要了解每一種測(cè)試的類型以及其目的。但是現(xiàn)在,首先學(xué)習(xí)單元測(cè)試以及綜合測(cè)試,應(yīng)用在你的程序中。此外,還要了解不同的測(cè)試術(shù)語,比如mocks,stubs等等。
8. 實(shí)踐-測(cè)試
為你所寫的所有程序編寫單元測(cè)試,特別是在Github上參與的項(xiàng)目。
同時(shí),學(xué)習(xí)覆蓋率的概念,計(jì)算測(cè)試代碼的覆蓋率。
9. 關(guān)系型數(shù)據(jù)庫(kù)
學(xué)習(xí)利用關(guān)系型數(shù)據(jù)庫(kù)保存你的數(shù)據(jù)。在學(xué)習(xí)之前,首先掌握數(shù)據(jù)庫(kù)相關(guān)的術(shù)語。比如:keys,indexes,normalization,tuples等。
可供選擇的數(shù)據(jù)庫(kù)很多,你只需要掌握一個(gè),其他的也會(huì)變得很簡(jiǎn)單。流行的有MySQL,MariaDB(MySQL分支,與之非常相似),PostgreSQL。推薦選擇MySQL開始。
10. 動(dòng)手時(shí)間 - 實(shí)踐
到了將所學(xué)融合的時(shí)候了。
創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用,運(yùn)用你所學(xué)的一切。實(shí)現(xiàn)一個(gè)想法,可能是創(chuàng)建一個(gè)簡(jiǎn)單的博客站點(diǎn),實(shí)現(xiàn)一下的特性:
* 賬戶系統(tǒng)——注冊(cè)&登陸
* 注冊(cè)用戶可以創(chuàng)建blog
* 用戶可以查看自己創(chuàng)建的所有的blog
* 用戶可以刪除自己發(fā)布的blog
* 保證用戶只能看到自己發(fā)布的blog,不能看其他人的
* 為應(yīng)用編寫單元/綜合測(cè)試
* 為查詢創(chuàng)建索引。分析查詢,確保索引生效
11. 學(xué)習(xí)一個(gè)框架
根據(jù)你的項(xiàng)目類型以及你的語言的不同,你可能會(huì)需要一個(gè)框架輔助開發(fā)。(也可能不需要)。每種語言都有不同的選擇,選擇一個(gè)合適的即可。
如果你選擇了Python,建議你選擇Django,對(duì)于微框架,建議Flask。
對(duì)于Node.js,最知名的框架是Express.js。
12. 實(shí)踐-框架
利用選擇的框架重構(gòu)你的博客應(yīng)用。不要忘記了集成測(cè)試代碼進(jìn)來。
13. 學(xué)習(xí)NoSQL(not only SQL)數(shù)據(jù)庫(kù)
首先了解什么是NoSQL,以及它們與關(guān)系型數(shù)據(jù)庫(kù)的差別,同時(shí)為什么需要它們。NoSQL數(shù)據(jù)庫(kù)也有多種選擇,了解并比較它們之間的特性以及不同之處。常用的有MongoDB,Cassandra,RethinkDB,Couchbase。建議選擇MongoDB開始。
14. 緩存
學(xué)習(xí)如何在你的程序中實(shí)現(xiàn)應(yīng)用級(jí)的緩存。了解如何利用Redis或Memcached實(shí)現(xiàn)緩存,同時(shí)在你的博客應(yīng)用中實(shí)現(xiàn)緩存功能。
15. 創(chuàng)建RESTful APIs
了解REST,學(xué)習(xí)如何編寫RESTful APIs,閱讀關(guān)于REST的白皮書。(By Roy Fielding)。理解REST不僅僅是HTTP APIs。
16. 學(xué)習(xí)不同的認(rèn)證方法
學(xué)習(xí)不同的認(rèn)證以及認(rèn)證方式。你需要明白它們是什么,它們的不同點(diǎn),以及它們適用的場(chǎng)景。
* OAuth--Open Authentication
* Basic Authentication
* Token Authentication
* JWT--JSON Web Tokens
* OpenID
17. 消息代理
學(xué)習(xí)消息代碼,了解什么時(shí)候以及為什么使用它們。有很多可供選擇,最知名的是RabbitMQ & Kafka。建議從RabbitMQ開始學(xué)習(xí)。
18. 搜索引擎
隨著應(yīng)用程序規(guī)模的增長(zhǎng),簡(jiǎn)單的查詢已經(jīng)無法滿足要求。這個(gè)時(shí)候,你需要用到搜索引擎。同樣有多種選擇,每一種有自己的特點(diǎn)。
19. 學(xué)習(xí)使用Docker(容器)
Docker可以為你的開發(fā)提供巨大的便利。它可以讓你的開發(fā)環(huán)境與生產(chǎn)環(huán)境保持一致,可以讓你的系統(tǒng)保持干凈,可以加速你的編碼,可以測(cè)試部署。Docker的好處,請(qǐng)自行g(shù)oogle。從現(xiàn)在開始,學(xué)習(xí)Docker。
20. Web服務(wù)器的知識(shí)
到了這個(gè)時(shí)候,你可能已經(jīng)處理過服務(wù)器相關(guān)的問題。這一步驟主要是了解不同的服務(wù)器之間的差異,局限,以及不同的調(diào)優(yōu)方法。
21. 學(xué)習(xí)Web Sockets
雖然不是必須,但是具備Web Sockets的技能是有好處的。學(xué)習(xí)編寫實(shí)時(shí)的web應(yīng)用。可以在博客應(yīng)用中,實(shí)現(xiàn)即時(shí)更新blog列表。
22. 學(xué)習(xí)GraphQL
學(xué)習(xí)GraphQl的APIs。了解它與REST的不同,然后為什么它被稱之為REST 2.0。
23. 研究Graph數(shù)據(jù)庫(kù)
Graph模型具備非常好的靈活性——在處理數(shù)據(jù)間的關(guān)系的時(shí)候。Graph數(shù)據(jù)庫(kù)提供高速&高效的存取以及查詢。學(xué)習(xí)了解Neo4j或者OrientDB。
24. 不停探索
在你的學(xué)習(xí)以及實(shí)踐過程中,肯定會(huì)碰到路線圖里沒有提及的東西。你只需要保持開放以及饑渴去學(xué)習(xí)新的東西。
時(shí)刻謹(jǐn)記,學(xué)習(xí)的關(guān)鍵是實(shí)踐。多動(dòng)手!剛開始的時(shí)候,你可能會(huì)感覺不大好,隨著你的堅(jiān)持以及時(shí)間的推移,你會(huì)變得越來越好。