1. 程式人生 > >小白學習node.js的心得

小白學習node.js的心得

2012年2月6日 學習Node.js的目的,主要是為了瞭解Web技術,以便順應近些年以及未來可能持續幾十年的網際網路熱潮,以備不時之需。說來慚愧,已經成了CS Master了,對於Web開發還是小白的水準。 很久以前(我不知道具體時間,姑且就這麼說吧),網頁都是靜態的。使用者通過瀏覽器請求指定的頁面(通過輸入網址或者點選已有的頁面上的超連結)來獲得靜態的頁面。靜態,不僅是說沒有可以滿頁亂動的圖片,發光的文字等等,更重要的意思是說網頁的內容是固定的,儲存在伺服器上的,不可定製(例如,不可能將每一個訪問者的姓名顯示在訪問者請求的頁面上)。後來有了動態網頁,圖片可以動了,文字可以閃光了,網頁內容變得可定製了,程式可以在瀏覽器後面跑了,例如最簡單的例子,瀏覽器後臺的程式可以動態地檢查你在註冊某一個賬戶時候輸入的兩個密碼是否一致。 這是怎麼做到的呢?一方面,對於網頁的生成,本質上就是生成html文字。那麼顯而易見,一定要有一個程式,接受相應的引數,來生成這樣的文字。這樣的程式過去用perl和CGI搭配著寫,現在呢,可以用PHP,JSP,ASP,等等等,以及Node.js這樣的指令碼語言去寫。當然這些語言的功能絕不僅僅是生成html文字,還包括對資料庫的訪問,對檔案的讀寫,甚至他們本身就可以構建一個HTTP伺服器,像Node.js。 要構建一個網站,需要開發許多頁面。在MVC架構下,通常是開發頁面模板,然後再利用模板引擎,結合相關的頁面資料,生成最終的html頁面。使用者對頁面的請求封裝在由瀏覽器傳送至伺服器的http資料包裡,請求的方法有GET,POST,DELETE等。我們開發的伺服器程式,必須根據請求中所包含的資源生成(或直接提取現有)的html頁面返回給客戶端,這一過程叫做路由控制。一個瀏覽器傳送的請求的例子是:http://www.renren.com/login。那麼伺服器程式中就必須對'/login'這一訪問請求進行處理,例如新增處理函式等。 今天遇到的問題是:在呼叫req.flash()方法試圖在網頁上顯示訊息時,有異常丟擲'req.flash() requires sessions'。 2014年2月9日 坑啊,上一篇提到的'req.flash() requires sessions'問題,上網查了下資料,居然說“把app.use(app.router);放到session之前就會undefined,之後就好了”,我一試,還真是的!原文連結。 另外那天遇到的,ejs不能使用layout.ejs的問題,解決方法是:要在工程目錄下的package.json檔案中新增"express-partials": "*"; 也就是說要安裝express-partials這個依賴項。當然,也許以後的ejs版本就不需要這樣,或者又有了新的方法,但是我現在不care了。PS:目前我用的ejs的版本是2.5.8。 2014年2月11日 至此,完成了利用node.js對一個極其簡單的微博系統的“開發”(- -! 幾乎是照著書上的程式碼複製的)。然而起到的作用是符合預期的:對網站的構建有了系統化,全域性地認識。更加理解了“前端”與“後端”的概念,區別,聯絡。理解了伺服器和瀏覽器如何互動地工作,共同為使用者服務。 所謂前端,就是直接與使用者打交道的網頁和其上的所有元素,例如,表單,動畫,資料,等等。決定在一張網頁上顯示什麼,怎麼顯示,要不要動畫,設計動畫,是前端工程師的事;伺服器接收到客戶端發來的請求,是否要與資料庫互動,怎麼互動,存還是取,有沒有資料需要運算的,怎麼運算,要不要與其他的網路終端通訊,以及最終返回給使用者什麼樣的資訊,什麼樣的頁面,等等一系列網頁“之後”的動作,都是後端工程師的問題。兩者的區別和功能劃分是大體明確的,但又互相耦合。後端工程師不可能完全不懂前端,否則例如簡單的使用者註冊的事情都處理不了的(這件事需要用到前端提供的一個表單,後端必須處理這個表單)。當然這樣的聯絡僅僅是要求後端或者前端工程師,稍微瞭解彼此,以至於能夠在設計後端程式或者前端頁面時能面向統一的目標,可行的解決方案,最終構建成功的網站。 總的來說,構建一個網站是容易的:首先,明確並且精確地描述需求(相當相當重要);然後,根據需求設計網站地圖,即有哪些頁面,頁面之間的路由關係;再然後,編寫後臺程式;最後是測試和釋出。 但構建一個可靠的網站是極其困難的。什麼是可靠的網站?即,面臨極大的流量不會故障或故障率很低或能夠自我修復從而不至於服務終止,響應時間快,伺服器消耗低。上述都是從後臺的角度考慮,從前臺的話,無非就是,好看,操作簡便,結構清晰,等等。以上這些,才真正是無數Web開發者為之日夜操勞的問題。解決這些問題,歸根結底還是解決演算法和資料結構的問題(也許前端不是這樣的)。因此,如果立志投身Web開發,開發的方法和技術必須知道,同時也必須要有紮實的演算法和資料結構基礎,以及紮實的計算機理論和工程的基本功,才能構建出可靠的網站。

相關推薦

學習node.js心得

2012年2月6日 學習Node.js的目的,主要是為了瞭解Web技術,以便順應近些年以及未來可能持續幾十年的網際網路熱潮,以備不時之需。說來慚愧,已經成了CS Master了,對於Web開發還是小白的水準。 很久以前(我不知道具體時間,姑且就這麼說吧),網頁都是

學習node.js的記錄

com技術 事件 事件驅動 oob 性能 小白 文件讀取 ref hat 本人對於node.js一無所知,純純的小白一枚,想學習的初衷是了解node.js是什麽,能用它幹點什麽,說白就是好奇心使然吧。接下來記錄自己的學習過程。 註:若有錯誤歡迎指出,

菜鳥使用node.js搭建簡單伺服器(可請求圖片,html,js,css,json等檔案)

使用node.js搭建簡單伺服器 前言:以下步驟在安裝好node的環境前提下進行,未安裝者請先安裝好node,再嘗試 注:如若以下程式碼存在錯誤,歡迎讀者指出 搭建步驟如下: 一、建立server.js(主要用於搭建伺服器的檔案) const ht

我的學習node.js心得(一)

眾所周知,node.js是目前前端往中高階進階的一項必備技能,之前學習vue2,只是用了他的打包工具webpack,並沒有去深入研究。最近花心思去學習了一下,是我對前端整套流程有了進階的認識。  我學習node是從視訊開始的,大家可以看一下騰訊課堂的一個《Node.js 實戰開發:

Linux基礎入門---學習心得大資料學習|學習大資料需要滿足這六個條件你就能學好大資料

有很多學習大資料的朋友,在初期學習時,通常會對如何學習而感到迷茫。我經常收到零基礎的朋友關於如何入門、如何規劃學習大資料、大資料的學習流程是什麼的一些問題。今天我就粗淺的總結幾點學習大資料方法。 一、興趣建立 興趣是可以讓一個人持續關注一個事物的核心動力,那麼興趣的培養就非常重要了。如果你把寫程式單純作為

學習Node.js遇到的一些問題

學習Node.js遇到的一些小問題 Error: Cannot find module 'superagent' npm 切換淘寶映象幾種方式 臨時使用 持久使用 測試 通過cnpm

學習路之原生js實戰--瀑布流

瀑布流效果 這幾天看js視訊的時候學到一個用原生js實現瀑布流的方法。雖然程式碼有點難以理解,但多看幾遍實際操作一下還是有點意思。存個檔 HTML部分程式碼 <!DOCTYPE html> <html lang="en"> <h

學習路之js正則表示式

在JavaScript裡面判斷一個字串是否是電子郵件的格式: 程式碼如下: if(formname.email.value!=formname.email.value.match(/^\w +[@]\w +[.][\w.] +$/)) { alert("您的

Python爬蟲學習心得(一

  四、BeautifulSoup中使用Find和Find_all方法提示想要的內容。如例項物件soup.find_all("div",class_="xxx")#注意class屬性在這裡有個下劃線,要獲取某屬性的值如get('href')的用法。另外還需要了解soup.select的css選擇器方法,最主要

前端學習安裝node npm vue webpack所遇坑!

1.package.json 依賴包不全的時候 npm install 重新裝一下就可以了。 2.npm run dev 一定要在專案目錄下執行 否則會提示找不到package json。 3.mac使用者一定要記得命令前加sudo。

Linux下手動安裝node學習總結)

3.通過vsftpd上傳到阿里雲伺服器上     1)安裝vsftpdh 。  (root使用者下家目錄$ apt-get install vsftpd   修改配置檔案/etc/vsftpd.conf的第31行 write_enable=YES最後一行追加allo

滴滴系列》-線程和進程(學習,內容均參考網絡資料)

多個 系統 資料 搶占式 線程 並發 強制 資源 資源分配 1、進程就是操作系統將資源分配成一塊一塊的內存 2、線程就是在進程中運行的多個程序 3、線程是程序運行的最小單位,而進程則是分配資源的最小單位。 4、一個進程可以有多個線程 5、任務調度:采取時間片輪轉搶占式執行,

淺談身為學習Linux系統的四點實用建議

nbsp 同學 linu 系統 性格 如果 幸運 單個 都是 遊戲、辦公、安全,可以總結為是方便當代人們在生活中的剛需,我們大都是這些服務的使用者,而把單個功能整合起來那就必須談到互聯網,自然而然通過互聯網要將Service發送給Service management,經過S

Python學習之路—變量、字符編碼、字符拼接

sdi 電路 input elif action aps 類型 lam job 變量命名規則: (1)變量名只能是字母,數字,下劃線的任意組合。  ex:_amber_666NAme (2)關鍵字不能聲明為變量名  ex:[‘and‘, ‘as‘, ‘assert‘, ‘

Python學習之路—while、for循環、運算

範圍 src 格式 次循環 pen 映射 年齡 退出 finish Python裏面的循環跟其他語言裏的循環基本一致,只是書寫格式不同。 1.for循環: for [循環條件]:[循環語句]  滿足循環條件,則執行循環語句,執行一次判斷一次,不滿足則結束循環。 簡單的循環:

學習之Code First(三)

數據庫 change chang chan inf 模型 code test nbsp 上下文Context類中的base構造器的幾個方法重置(1、無參 2、database name 3 、 連接字符串) 無參:如果基類base方法中無參,code first將會以 :{

學習之Code First(二)

文件中 build 默認 dbm pcre student 技術分享 使用 類名 Code First約定: 註:EDMX模板 (SSDL:存儲模型=>數據庫表 ,CSDL:概念模型=>實體,C-S模型=>存儲和概念模型之間的映射關系) System.Da

學習安全測試——httrack的安裝和使用(二)

type mas track base launch 驗證 解決方案 我沒 ted httrack是一款免費的網站鏡像程序,簡單理解就是可以在網站結構(網頁及一些主要信息文件),下載到本地,可離線瀏覽,我是按照搭建成功後的console直譯過來的 下面說下安裝: 我都是在L

學習安全測試(三)——掃描工具-Nikto使用

sdn plugins 技術 use 開發 服務器 update 自動 網站目錄 掃描工具-Nikto #基於WEB的掃描工具,基本都支持兩種掃描模式。代理截斷模式,主動掃描模式 手動掃描:作為用戶操作發現頁面存在的問題,但可能會存在遺漏 自動掃描:基於字典,提高速度,但存

學習安全測試(四)——掃描工具-Vega

論壇 工作模式 bsp 用戶 出現 註意 修改內容 app 抓取數據 WEB掃描工具-Vega 純圖形化界面,Java編寫的開源web掃描器。兩種工作模式:掃描模式和代理模式【主流掃描功能】。用於爬站。處理表單,註入測試等。支持SSL:http://vega/ca.crt