首要之首:不要急於選擇一種語言 新手們有一個常見的錯誤就是猶豫於判斷哪種編程語言是做好的、最該先學的。 我們有很多的選擇,但你不能說那種語言「最好」。 我們應該理解:說到底,什麼語言並不重要。 重要的是理解數據結構、控制邏輯和設計模式。 任何一種語言—甚至一種簡單的腳本語言—都會具有所有編程語言都共有的各種特徵,也就是說各種語言是貫通的。 我正在攻讀我的計算機學學位,我編程使用Pascal,匯編,和C語言,事實上我從來沒有把它當成職業以求獲得回報。 我一直在自學編程,工作上用不到它,我使用現有的知識,參考各種文檔和書本,學習它們的用法。 因此,不要急於選擇何種編程語言。 找出你想要開發的東西,使用一種能夠完成這項任務的語言,這就可以了。 根據各種開發平台的不同,有很多不同的軟體開發形式可供你選擇:從網站應用到桌面軟體到智能手機軟體到命令行腳本工具。 這篇文章里,我將重點介紹一些很受歡迎的入門教程和資源,它們能幫助你學會如何在各種主流的平台上編程開發。 我先假設你是一個悟性很強的讀者,但對於新手,當我談論程序代碼時還是要按照入門級的水平。 因為即使是你自己看一篇編程入門手冊,如果發現都能理解時,心情自然會很高興,這樣利於你進一步學習。 桌面腳本 想要動手在Windows里或蘋果系統里編程,最簡單的方法是從一種腳本語言或宏語言開始,例如AutoHotkey(Windows) 或Automator(蘋果系統)。 如今一些硬體程序員沖著他們的屏幕大喊大叫,說AHK和AppleScript並不是「真正」的編程語言。 也許他們說的是對的—技術上,這些種類的語言只能做一些上層的編程。 但是對於那些只是想來脫盲、想在他們的電腦里實現一些能自動運行的程序的新手來說,這些語言會是一個絕妙的入門入口—而且你會吃驚於它們豐富的功能。 例如,大家都喜愛的Texter就是Adam使用AutoHotkey開發的能獨立運行的Windows應用程序,所以說這種腳本語言遠不是只能開發小規模腳本軟體。 如果你想從AutoHotkey入手,可以參考Adam的指導:how to turn any action into a keyboard shortcut using AutoHotkey(然後,你可以下載Texter源代碼看看這個功能齊全的使用AHK開發的Windows應用程序的內部結構)。 Web開發 HTML 和 CSS:開發網站,你第一件要知道的事情就是HTML(網頁就是由它組成的)和CSS(一種讓外觀更好看的樣式標記)。 HTML 和 CSS 並不是編程語言—它們只是頁面的結構和樣式信息。 然而,在開始開發web應用程序之前你必須要學會如何手工的編寫簡單的HTML和CSS,web頁面是任何webapp的前端顯示部分。 這個HTML 指導是你入手的好地方。 javaScript:當你可以通過HTML和CSS構建一個靜態頁面後,事情就開始變得有趣了—因為到了該學JavaScript的時候了。 JavaScript是一種web瀏覽器上的編程語言,它的魔力就是能在頁面里製造一些動態效果。 JavaScript可以做bookmarklets,Greasemonkey腳本, 和Ajax, 所以它是web上各種好東西的關於因素。學習JavaScript從這里開。 伺服器端腳本:一旦你學會了網頁里的知識,你就要開始對它添加一些動態伺服器操作—為了實現這些,你需要把目光轉移到伺服器端腳本語言,例如php, Python, Perl, 或 Ruby。 舉個例子,如果想要製作一個網頁形式的聯系方式表單,根據用戶的輸入發送郵件,你就需要使用伺服器端腳本來實現。 像PHP這樣的腳本語言可以讓你跟web伺服器上的資料庫進行溝通,所以如果你想搭建一個用戶可以登錄注冊的網站,這樣的語言正是你需要的。Webmonkey是一個優秀的web開發資源網站,裡面有大量的各種web編程語言的指導手冊。 閱讀一下他們的PHP 初學者指南。 當你感覺差不多了的時候,看看WebMonkey』s PHP and MySQL tutorial學習如何使用PHP跟資料庫交互。 網上最好的要數PHP語言官方的在線文檔和函數參考了。 每個知識點上 (例如strlen function這個)都在後面列出來用戶的評論注釋,這些對於文檔的本身是非常有價值的。 (我很喜歡PHP,但還有很多其他種伺服器端的腳本語言你們都可以選擇。) Web框架:過去數年裡,web開發人員在開發動態網站的過程中不得不一遍又一遍的針對重復遇到的問題寫出重復的代碼。 為了避免這種每次開發一些新網站都會重復勞動一次的問題,一些程序員動手搭建了一些框架,讓框架替我們完成重復性的工作。 非常流行的Ruby on Rails框架,作為一個例子,它利用Ruby編程語言,為我們提供了一個專門面向web的架構,普通的web應用程序都能使用它來完成。 事實上,Adam使用Rails開發了他的第一個正式的(而且是嘆為觀止的!)web應用程序,MixTape.me。這就是他的如何在沒有任何經驗的情況下搭建一個網站。還有一些其他的web開發框架包括CakePHP(針對 PHP 編程者),Django(針對 Python 編程中), 以及jQuery(針對 JavaScript). Web APIs:API (應用層序編程介面)是指不同的軟體之間相互交換的程序途徑。 例如,如果你想在你的網站上放一個動態的地圖,你可以使用Google Map,而不需要開發自己的地圖。The Google Maps API可以輕松的讓你通過JavaScript在程序中引入一個地圖到你的頁面上。 幾乎所有的現代的你所知道的和喜愛的web服務都提供了API,通過這些API你可以獲取到他們的數據和小工具,在你的應用程序里就可以使用這些交互過來的東西了,例如Twitter, Facebook, Google Docs, Google Maps, 這個列表遠不止這些。 通過API把其他web應用集成到你的web應用里是現在富web開發的前沿地帶。 每個優秀的主流的web服務API都附帶有完整的文檔和一些快速入手的指導(例如,這個就是Twitter的)。 瘋狂吧。 命令行腳本 如果你想開發一個程序,讓它讀取文字或文件、輸入輸出一些有用的東西,那麼,命令行腳本語言將是個不錯的選擇。 然而它並不像web應用程序和桌面應用程序那樣有吸引力和好看的外觀,但是作為快速開發的腳本語言,你卻不能忽視它們。 很多的在linux平台上運行的web腳本同樣能以命令行模式運行,例如Perl,Python和PHP,所以如果你學會了使用它們,你將能在兩種環境中使用它們。 我的學習道路一直沒離開Perl太遠,我自學Python使用的是這本優秀的在線免費書Dive into Python。 如果成為一個Unix高手也是你學習的目標,那麼你絕對要精通bash這個腳本語言。 Bash是Unix和Linux環境下的一種命令行腳本語言,它能夠為你做所以的事情:從自動備份資料庫腳本到功能齊全的用戶交互程序。 起初我沒有任何使用bash腳本的經驗,但最終我用bash開發了一個全功能的個人代辦任務管理器:Todo.txt CLI。 插件(Add-ons) 如今的web應用程序和瀏覽器都可以通過一些擴展軟體來豐富自己的功能。 由於一些現有的軟體,例如Firefox、WordPress越來越受到開發人員的關注,插件的開發也日益流行,人們都在說「But if only it could do THIS…」 只要你掌握了HTML,JavaScript和CSS,你就可以在任何的瀏覽器里開發你想要的很多東西。 Bookmarklets,Greasemonkeyuser scripts, 和Stylishuser styles這些軟體都是用的更普通頁面一樣的語言寫成的, 這幾個東西都值得你去研究一些。 更高級的瀏覽器擴展程序,例如Firefox的擴展,它們可以幫助你很多。 開發Firefox的擴展,舉個例子,需要你精通JavaScript和XML(一種標記語言,類似HTML,但具有更嚴格的格式)。 早在2007年我就寫下來how to build a Firefox extension, 這是我在笨手笨腳的研究網上的一些學習資料後獲得的成果。 很多免費的、受歡迎的web應用程序都提供了擴展框架,例如WordPress 和 MediaWiki。 這些應用程序都是用PHP寫成的,所以只有對PHP熟悉你才能做這些事情。 這個就是如何編寫WordPress插件。 而想駕馭Google Wave前沿技術的開發人員可以從使用HTML, JavaScript, Java, 和 Python 寫小組件和小工具開始。 我寫的第一個Wave bot是跟著這個一個下午時間的快速入門指導開始的。 開發桌面上的Web應用程序 學習編程最好的結果是你在一個環境下學的東西可以應用到另外的環境中。 先學習開發web應用程序的好處就是我們有一些方法可以讓web應用程序直接在桌面上運行。 例如,Adobe AIR是一個跨平台的即時運行平台,它能讓你編寫的程序運行在任何裝有AIR的操作系統的桌面上。 AIR應用程序都是由HTML, Flash, 或 Flex 寫成的,所以它能讓你的web程序在桌面環境中運行。 AIR是開發部署桌面應用程序的一個優秀的選擇,就像我們提到過的10個讓你值得去安裝AIR的應用程序。 移動應用開發 能在iPhone或者Android智能手機上運行的手機應用程序的開發如今正呈現井噴之勢,所以你也可以夢想一下如何在iTunes應用商店裡通過你的天才程序大賺一筆。 但是,作為一個編碼新手,直接奔向移動開發所經歷的學習曲線可能會很陡,因為它需要你熟悉高級的編程語言,例如Java和Objective C。 然而,你當然應該看看iPhone 和 Android 編程究竟是什麼樣子的。 閱讀這個簡單的iPhone應用開發例子可以初步認識一下iPhone程序的開發過程。 Android 程序都是由Java寫成的,這有一個簡單的視頻教程教你如何開發第一個」Hello Android「程序(註:可能需要代理才能看這個視頻)。 耐心,刻苦,嘗試,失敗 好的程序員都有一個不達目的誓不罷休的品質,他們會驚喜於通過長期推敲和失敗換來的一點成績。 學會編程會有很好的回報的,但是學習的過程可能會是飽受挫折和孤獨的。 如果有可能,最好找個伴一起陪你做這件事。 想精通編程,這和其他事情一樣,需要堅持,反復嘗試,獲得更多的經驗。
『貳』 前端開發主要要學什麼
web前端開發在目前的塵悔IT行業是一個比較重要的崗位,web前端開發是直接與用戶接觸,前端體驗的好壞,以及美觀程度是非常重要的,畢竟現在是一個看臉的時代。
web前端開發中需要掌握的技術:
1、學習HTML,這是最簡單,最基本的是要掌握div,formtable、Ulli、P、跨度、字體這些標簽,這些都是最常用的,尤其是DIV和表格,DIV,表也可以用於布局,但不靈活,和用於基本表處理數據。
2、學習CSS,CSS這里說的不包括CSS3 Web前端開發工程師裡面我們看到的,一個可以使用HTML或CSS + CSS+DIV的界面布局,所以CSS是用來協助HTML布局和顯示,我們稱之為「CSS樣式」,為什麼說DIV+CSS?因為我說div是HTML主要用於布局的,所以div是這個東西的核心!CSS必須配合部。CSS必須掌握浮、位置、寬度和高度,以及最大值和最小值,以100%,溢出,邊緣、填充虧租等。這些都是與布局相關的樣式。
3、JS。你覺得還過的去,看看JS是可怕的,事實上,JS入門很簡單,不需要很多東西,只要根據ID或名稱DOM或」風格,或價值,然後以一個ID或名稱元標簽,或額外的數據,在HTML,這是對數據的操作有關系,那麼數據邏輯的影響,無非是一個跳躍,彈框,隱藏什麼,這一切都是結合其他應用,代碼一點都不難,將這些基本的JS。網路其他好。然後多看一些,不是什麼問題。銷兄兆
4、學習jQuery,相當於封裝一組JS插件的JS。其目的是操作更方便,編寫更少的代碼,jQuery條目也非常簡單。這些都是切入點,要學會像JS,只是改變了JQ代碼。剩下的就跟網路一樣。
5、最好是指出背景語言,如java,php,為什麼?因為我們是前台介面數據,從後台到點,如果後台代碼,你知道如何與後台數據交互是最好的,它節省了時間,也可以使前端代碼更加規范。否則,可能是因為你回來了,無法忍受的數據,然後前端代碼再次重寫,這將是可怕的。
6、研究CSS3 + HTML5,為什麼放在最後呢?呵呵,因為我不會,畢竟是專門做IT的,雖然這很流行,但是我沒有用它來結束,在工作中,只有在自己的網站需要改變風格,或者朋友網站風格問題的時候,我才會去臨時學習。但是,如果你准備從事專業戰線,最好是學習。
以上的回答希望對你有所幫助
『叄』 前端程序員怎麼自學
自學方法:
1、作為一個初學者,你必須明確系統的學習方案,我建議一定有一個指導的人,全靠自己學,放棄的幾率非常大,在你對於web前端還沒有任何概念的時候,需要一個人領進門,之後就都靠自己鑽研,第一步就是確定web前端都需要哪些內容,並且在多少時間內學完,建議時間6個月保底。
2、視頻為主,書為輔。很多初學者在學習前端的時候非常喜歡去買書,但是最後的結果是什麼?看來看去什麼都不會寫,所以在這里給大家提醒,書可以看,但是是在建立於你已經對於某個知識點有了具體操作的執行後,在用書去鞏固概念,這樣更加利於你對於知識的理解。
3、對於學習技術來講,掌握一個學習方法是非常重要的,其實對於學習web前端來講,學習方法確實很多都是相通的,一旦學習方法不對,可能就會造成「方法不對,努力白費」。其實關於這方面還是很多的,我就簡單說個例子,有的人邊聽課邊跟著敲代碼,這樣就不對,聽課的時候就專心聽,做題的時候就專心做題,這都是過來人的經驗,一定要聽。根據每個人的不同,可能學習方法也會有所出路,找到適合你自己的學習法方法是學習的前提。
4、不建議自己一個人瞎學,在我了解學習編程的這些人來看,從零基礎開始學並且最後成功做這份工作的其實並沒有幾個,我覺得大部分原因就是因為他們都不了解web前端是干什麼的,學什麼的,就盲目的買書看,到處找視頻看,最後看著看著就放棄了,所以我建議初學者在沒有具體概念之前,還是找有經驗的人請教一下,聊過之後你就會知道web前端具體是干什麼的,該怎麼學,這是我個人的小建議,可以不採納。
自學路線:
第1階段:前端頁面重構(4周)
內容包含了:(PC端網站布局項目、HTML5+CSS3基礎項目、WebApp頁面布局項目)
第2階段:JavaScript高級程序設計(5周)
內容包含:(原生JavaScript交互功能開發項目、面向對象進階與ES5/ES6應用項目、JavaScript工具庫自主研發項目)
第3階段:PC端全棧項目開發(3周)
內容包含:(jQuery經典交互特效開發、HTTP協議、Ajax進階與PHP/JAVA開發項目、前端工程化與模塊化應用項目、PC端網站開發項目、PC端管理信息系統前端開發項目)
第4階段:移動端項目開發(6周)
內容包含:(Touch端項目、微信場景項目、應用Angular+Ionic開發WebApp項目、應用Vue.js開發WebApp項目、應用React.js開發WebApp項目)
第5階段:混合(Hybrid,ReactNative)開發(1周)
內容包含:(微信小程序開發、ReactNative、各類混合應用開發)
第6階段:NodeJS全棧開發(1周)
內容包括:(WebApp後端系統開發、一、NodeJS基礎與NodeJS核心模塊二、Express三、noSQL資料庫)
基礎書籍:
1、《Head First HTML與CSS(第2版)》,入門真的是經典書籍,手把手教學,豐富的案例讓你從 0 開始學前端。
2、《CSS權威指南(第三版)》,這本書作為 CSS 的經典著作,把原理講得非常的通透,除了 w3c 標准,算最權威的一本了,畢竟權威指南。
3、《CSS揭秘》神書,47 個 css 技巧讓你在面對各種 css 問題的時候游刃有餘。是 css 書籍中評分最高的了,css 進階必備。
4、《javascript語言精粹》,這本書可以在入門之前了解一下基本語法,以及在學習之前可以了解下 JS 裡面的精粹以及糟粕,雖然這本書很薄很薄,但是值得反復去讀的一本書。
5、《JavaScript DOM編程藝術(第2版)》,本書在簡潔明快地講述JavaScript和DOM的基本知識之後,通過幾個實例演示了專業水準的網頁開發技術,透徹闡述了平穩退化等一批至關重要的 JavaScript編程原則和最佳實踐。
6、《JavaScript權威指南》:犀牛書是每個FE都繞不過的一本書,可以先大致通讀幾遍,也可以把其當作工具書,時時翻閱。
視頻教程:
網頁鏈接
『肆』 前端程序員需要會什麼
前台化工作。包括HTML頁面可以用表格或div都可以。然後頁面上的js代碼。flash。前台要明白一些編程,以便後台技術人員加代碼的時候能夠順利銜接。
後台就是內部的程序架構。他要懂一些html好知道往哪加代碼。
後台就是保證前台所有功能實現所進行的編碼。
『伍』 如果要學習web前端開發,需要學習什麼
從各大招聘平台可以看到,Web前端行業招聘需求量巨大,一直呈現出供不應求的趨勢,但是由於高等院校很少有開設相關的課程,導致每年新增的前端開發人員遠遠不夠,所以現在的Web前端主要還是用過自學和參加培訓為主,由於自學難度大,大部分人都選擇去找相對的Web培訓班學習,接下來就為大家介紹一下優就業的Web前端的學習內容。
優就業的Web前端一共分為六個階段
第一階段Html5+CSS3:主要學習HTML5基礎、CSS基礎、HTML5進階、CSS3進階、Less
第二階段JS交互設計:主要學習JavaScript核心語法、DOM和BOM、JavaScript高級進階、面向對象編程、Touch、jQuery、Zepto
第三階段Node開發:主要學習JavaScript
ES6、Node、Express、MySQL、Webpack+Gulp+模塊化、WebSocket+Koa2
第四階段前端框架:主要學習Vue基礎、Vue進階、TypeScript、React
第五階段小程序+數據可視化:主要學習小程序基礎、雲開發、uni-app基礎、數據可視化
第六階段就業指導+項目提升:就業指導、企業面試復盤
想要了解更多關於WEB前端的學習內容,可以看看優就業喲~
『陸』 做前端開發主要學些什麼
要學前端開發,首先要熟悉幾種最基礎的程序語言。宴雹前端需要用到的是:HTML、CSS,JavaScript,在頁面的布局時, HTML將元素進行定義,CSS對展示的元素進行定位蠢唯,再通過JavaScript實現相應的效果和交互。這些基礎語言,必須在熟練掌握之後,結合不同的開發工具,開發出高質量的頁面。
最開始用到的開發工具主要有如下幾個:
1,Dreamweaver:,集網頁製作和管理網站於一身的所見即所得網頁代碼編輯器。晌檔帆
2,Sublime,全稱Sublime Text ,是一個主要功能包括拼寫檢查,書簽,完整的 Python API , Goto 功能,即時項目切換,多選擇,多窗口的代碼編輯器
3,HBuilder:是DCloud,推出的一款支持HTML5的Web開發IDE。
當然,並不局限於這些工具,如果要開發出更好的作品,要用到的肯定是更廣泛的工具,工作中不同工具的靈活運用也是一種能力的體現,比如可以將圖標 web 字體放到自己的項目中的FontelloFontello、能夠自動實施安全相關的 header 規則的Secureheaders、針對於編寫現代 web 和雲應用的跨平台編輯器的Visual Studio CodeVisual Studio Code。
前端開發要學習的知識很廣泛,不過最重要的,就是要打好基礎,熟練掌握三種基礎技能,無論什麼網頁的製作都不在話下。
『柒』 前端程序員必須了解的幾個CSS使用技巧
1、元素的margin的top、bottom及padding的top、bottom使用百分比作為單位時,其是相對父元素的寬度width的而不是我們想像的高度height;其實出現這種現象,我們可以巧用margin/padding的百分比值實現高度自適應。當然該元素高度上的百分比是相對其父元素高度的百分比的,min-height及max-height也適用這條規律。
2、含有定位屬性的元素,其top、bottom單位為百分比時,該百分比是相對於父元素的高度的。同理,left、right則是相對於父元素的寬度的。
3、邊框寬度不允許使用百分比值。這點就不解釋了。
4、width:100%,當父容器里有絕對定位的子元素時,子元素設置width:100%實際上指的是相對於父容器的padding+content的寬度。當子元素是非絕對定位的元素時width:100%才是指子元素的 content ,其等於父元素的 content寬度。
5、line-height。你知道line-height:150%和line-height:1.5的區別嗎? line-height有單位時,子元素是繼承父元素的line-height的,無單位時,其line-height等於無單位的數值乘以子元素本身的字體大小。顯然為了不出現意外,還是建議首選無單位的。
6、ex和 ch單位。ex:取當前作用效果的字體的x的高度,在無法確定x高度的情況下以0.5em計算;ch:以節點所使用字體中的“0”字元為基準,找不到時為0.5em。
ex和 ch單位,類似於 em和 rem,依賴於當前的字體和字體大小。但是,不同的是,這兩貨是基於字體的度量單位,依賴於設定的字體。7、使用calc時運算符之間要有空格 ,否則可能無效。
以上這7個知識點你們掌握了嗎?更多的內容資訊,小編會及時發布在本平台,請及時關注哦!
『捌』 前端主要學什麼
前端學什麼?
第一階段:HTML+CSS+JS基礎
(1) HTML+CSS:
HTML進階、 CSS進階、DIV+CSS布局、HTML+CSS整站開發、
(2) JavaScript基礎:
Js基礎教程、js內置對象常用方法、常見DOM樹操作大全、ECMAscript、DOM、BOM、定時器和焦點圖。
(3) JS基本特效:
常見特效雀余、例如:tab、導航、整頁滾動、輪播圖、JS製作幻燈片、彈出層、手風琴菜單、瀑布流布局、滾動事件、滾差視圖。
程序猿的生活:前端只需要掌握這些,你也能拿8K!((附簡歷模板102份)最頃局滾完整面試題含答案)
23 贊同 · 2 評論文章
(4)JS高級特徵:
正則表達式、排序演算法、遞歸演算法、閉包、函數節流、作用域鏈、基於距離運動框架、面向對象基礎、
(5) JQuery:基礎使用
懸著器、DOM操作、特效和動畫、方法鏈、拖拽、變形、JQueryUI組件基本使用。
第二階段:HTML5和移動Web開發
(1)HTML5:
HTML5新語義標簽、HTML5表單、音頻和視頻、離線和本臘凱地存儲、SVG、Web Socket、Canvas.
(2)CSS3:
CSS3新選擇器、偽元素、臉色表示法、邊框、陰影、flex布局、background系列屬性改變、Transition、動畫、景深和深透、3D效果製作、Velocity.js框架、元素進場、出場策略、炫酷CSS3網頁製作。
(3)Bootstrap:
響應式概念、媒體查詢、響應式網站製作、刪格系統、刪格系統原理、Bootstrap常用模板、LESS和SASS。
(4) 移動Web開發:
跨終端WEB和主流設備簡介、視口、流式布局、彈性盒子、rem、移動終端JavaScript事件、手機中常見JS效果製作、手機聚劃算頁面、手機滾屏。
第三階段:HTTP服務和AJAX編程
(1)WEB伺服器基礎:
伺服器基礎知識、Apache伺服器和其他WEB伺服器介紹、Apache伺服器搭建、HTTP介紹。
(2) AJAX上篇:
Ajax簡介和非同步的概念、Ajax框架的封裝、XMLHttpRequest對象詳細介紹方法、兼容性處理方法、Ajax框架的封裝、Ajax中緩存問題、XML介紹和使用、會處理簡單的GET或者POST請求、
(3) AJAX下篇:
JSON和JSON解析、數據綁定和模板技術、JSONP、跨域技術、圖片預讀取和lazy-load技術、JQuery框架中的AjaxAPI、使用Ajax實現爆布流案例額。
『玖』 Web前端新手應該了解的Cookie知識!
今天小編要跟大家分享的文章是關於Web前端新手應該了解的Cookie知識。正准備學習Web前端知識和准備從事Web
前端工作的小夥伴怎麼能散孫不了解Cookie。今天小編就為大家帶來了這篇文章,讓我們一起來看一看Web前端新手應該了解的Cookie知識。
一、Cookie的出現
瀏覽器和伺服器之間的通信少不了HTTP協議,但是因為HTTP協議是無狀態的,所以伺服器並不知道上一次瀏覽器做了什麼樣的操作,這樣嚴重阻礙了互動式Web
應用程序的實現。
針對上述的問題,網景公司的程序員創造了Cookie。
二、Cookie的傳輸
伺服器端在實現Cookie標準的過程中,需要對任意HTTP請求發送Set-CookieHTTP頭作為響應的一部分:
1.Set-Cookie:name=value;expires=Tue,03-Sep-201914:10:21GMT;path=/;
domain=.#;
瀏覽器端會存儲這樣的Cookie,並且為之後的每個請求添加CookieHTTP請求頭發送回伺服器:
1.Cookie:name=value
伺服器通過驗證Cookie值,來判斷瀏覽器發送請求屬於哪一個用戶。
三、瀏覽器中的Cookie
瀏覽器中的Cookie主要由以下幾部分組成:
·名稱:Cookie唯一的名稱,必須經過URL編碼處理。(同名會出現覆蓋的情況)
·值:必須經過URL編碼處理。
·域(domain):默認情況下cookie在當前域下有效,你也可以設置該值來確保對其子域是否有效。
·路徑(path):指定Cookie在哪些路徑下有效,默認是當前路徑下。
·
失效時間(expires):默認情況下,瀏覽器會話結束時會自動刪除Cookie;也可以設置一個GMT格式的日期,指沖扒鏈定具體的刪除日期;如果設置的日期為以前的日期,那麼Cookie會立即刪除。
·安全標志(secure):指定之後只允許Cookie發送給https協議。
瀏覽器在發送請求時,只會將名稱與值添加到請求頭的Cookie欄位中,發送給服務端。
瀏覽器提供了一個非常蹩腳的API來操作Cookie:
1.document.cookie
通過上述方法可以對該Cookie進行寫操作此耐,每一次只能寫入一條Cookie字元串:
1.document.cookie='a=1;secure;path=/'
通過該方法還可以進行Cookie的讀操作:
1.document.cookie//"a=1"
由於上述方法操作Cookie非常的不直觀,一般都會寫一些函數來簡化Cookie讀取、設置和刪除操作。
對於Cookie的設置操作中,需要以下幾點:
對於名稱和值進行URL編碼處理,也就是採用JavaScript中的encodeURIComponent()方法;
expires要求傳入GMT格式的日期,需要處理為更易書寫的方式,比如:設置秒數的方式;注意只有的屬性名的secure;
每一段信息需要採用分號加空格。1.functionsetCookie(key,value,attributes){
2.if(typeofdocument==='undefined'){
3.return
4.}
5.attributes=Object.assign({},{
6.path:'/'
7.},attributes)
8.
9.let{domain,path,expires,secure}=attributes
10.
11.if(typeofexpires==='number'){
12.expires=newDate(Date.now()+expires*1000)
13.}
14.if(expiresinstanceofDate){
15.expires=expires.toUTCString()
16.}else{
17.expires=''
18.}
19.
20.key=encodeURIComponent(key)
21.value=encodeURIComponent(value)
22.
23.letcookieStr=`${key}=${value}`
24.
25.if(domain){
26.cookieStr+=`;domain=${domain}`
27.}
28.
29.if(path){
30.cookieStr+=`;path=${path}`
31.}
32.
33.if(expires){
34.cookieStr+=`;expires=${expires}`
35.}
36.
37.if(secure){
38.cookieStr+=`;secure`
39.}
40.
41.return(document.cookie=cookieStr)
42.}
Cookie的讀操作需要注意的是將名稱與值進行URL解碼處理,也就是調用JavaScript中的decodeURIComponent()方法:1.functiongetCookie(name){
2.if(typeofdocument==='undefined'){
3.return
4.}
5.letcookies=[]
6.letjar={}
7.document.cookie&&(cookies=document.cookie.split(''))
8.
9.for(leti=0,max=cookies.length;i
10.let[key,value]=cookies[i].split('=')
11.key=decodeURIComponent(key)
12.value=decodeURIComponent(value)
13.jar[key]=value
14.if(key===name){
15.break
16.}
17.}
18.
19.returnname?jar[name]:jar
20.}
最後一個清除的方法就更加簡單了,只要將失效日期(expires)設置為過去的日期即可:1.functionremoveCookie(key){
2.setCookie(key,'',{expires:-1})
3.}
介紹Cookie基本操作的封裝之後,還需要了解瀏覽器為了限制Cookie不會被惡意使用,規定了Cookie所佔磁碟空間的大小以及每個域名下Cookie的個數。
四、服務端的Cookie
相比較瀏覽器端,服務端執行Cookie的寫操作時,是將拼接好的Cookie字元串放入響應頭的Set-Cookie欄位中;執行Cookie的讀操作時,則是解析HTTP請求頭欄位Cookie中的鍵值對。
與瀏覽器最大的不同,在於服務端對於Cookie的安全性操碎了心
signed
當設置signed=true時,服務端會對該條Cookie字元串生成兩個Set-Cookie響應頭欄位:
1.Set-Cookie:lastTime=2019-03-05T14:31:05.543Z;path=/;httponly
2.Set-Cookie:lastTime.sig=URXREOYTtMnGm0b7qCYFJ2Db400;path=/;
httponly
這里通過再發送一條以.sig為後綴的名稱以及對值進行加密的Cookie,來驗證該條Cookie是否在傳輸的過程中被篡改。
httpOnly
服務端Set-Cookie欄位中新增httpOnly屬性,當服務端在返回的Cookie信息中含有httpOnly欄位時,開發者是不能通過JavaScript來操縱該條Cookie字元串的。
這樣做的好處主要在於面對XSS(Cross-sitescripting)攻擊時,黑客無法拿到設置httpOnly欄位的Cookie信息。
此時,你會發現localStorage相比較Cookie,在XSS攻擊的防禦上就略遜一籌了。sameSite
在介紹這個新屬性之前,首先你需要明白:當用戶從#發起#的請求也會攜帶上Cookie,而從#攜帶過來的Cookie稱為第三方Cookie。
雖然第三方Cookie有一些好處,但是給CSRF(Cross-siterequestforgrey)攻擊的機會。
為了從根源上解決CSRF攻擊,sameSite屬性便閃亮登場了,它的取值有以下幾種:
·
strict:瀏覽器在任何跨域請求中都不會攜帶Cookie,這樣可以有效的防禦CSRF攻擊,但是對於有多個子域名的網站採用主域名存儲用戶登錄信息的場景,每個子域名都需要用戶重新登錄,造成用戶體驗非常的差。
·lax:相比較strict,它允許從三方網站跳轉過來的時候使用Cookie。
為了方便大家理解sameSite的實際效果,可以看這個例子:1.//#服務端會在訪問頁面時返回如下Cookie
2.cookies.set('foo','aaaaa')
3.cookies.set('bar','bbbbb')
4.cookies.set('name','cccccc')
5.
6.//#服務端會在訪問頁面時返回如下Cookie
7.cookies.set('foo','a',{sameSite:'strict'})
8.cookies.set('bar','b',{sameSite:'lax'})
9.cookies.set('baz','c')
如何現在用戶在#中點擊鏈接跳轉到#,它的請求頭是這樣的:1.RequestHeaders
2.
3.Cookie:bar=b;baz=c
五、網站性能優化
Cookie在服務端和瀏覽器的通信中,主要依靠HTTP的響應頭和請求頭傳輸的,所以Cookie會占據一定的帶寬。
前面提到瀏覽器會為每一次HTPP請求自動攜帶上Cookie信息,但是對於同站內的靜態資源,伺服器並不需要處理其攜帶的Cookie,這無形中便浪費了帶寬。
在最佳實踐中,一般都會將靜態資源部署到獨立的域名上,從而可以避免無效Cookie的影響。
以上就是小編今天為大家分享的關於Web前端新手應該了解的Cookie知識,希望本篇文章能夠對正在從事Web前端工作和准備從事Web
前端學習的小夥伴們有所幫助。想要了解更多Web前端相關知識記得關注北大青鳥Web培訓官網!
作者|descire
來源|#/article/286535
*聲明:內容與圖片均來源於網路(部分內容有修改),版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜
『拾』 學習web前端需要學資料庫嗎
前端程序員也是程序員,資料庫知識是程序員必備技能,無論從事的是什麼崗位,前端、後端、運維甚至數據分析師、運營都應該掌握。如果是計算機專業的,資料庫是必修課程。如果是其它專業或者培訓班出生,也會或多或少的接觸資料庫相關知識。前端程序員可能會很少用到資料庫,但是基礎的資料庫知識和操作必須要掌握。基本的select、insert、update操作要會。熟悉資料庫知識,前端程序員在與後端程序員協作的過程中,就可以更好的理解後端的資料庫模型,也能更好的理解後端的API介面。而且,在遇到一些數據統計的需求的時候,自己也可以去資料庫統計,不用找後端程序員去幫忙統計。【點擊測試我適不適合學設計】
如果您想要學習IT知識,來千鋒教育。作為擁有IT基因和數字技術能力的教育機構,千鋒十分注重聯手高校和企業協同培養數字化人才,建立數字技能人才培育機制和行業標准,引領新時代職業教育實現高質量發展。展望未來,千鋒將在高校、企業、學員和各方合作夥伴支持下,努力成為一個有情懷、有良心、有品質的一流教育機構,為國家培養更多高質量數字技能人才,助力職業教育提質培優,助推國家數字經濟蓬勃發展。