跳到主要內容

發表文章

目前顯示的是與搜尋查詢「node.js」相符的文章

[鐵人賽] Node 30 day 初介- Day1

鐵人賽 Node 30 day 在 Node.js 台灣社群一起合作寫了一本 Node.js 開發手冊,當初主要是希望能夠藉由蒐集,將中文資料集中,讓更多人可以學習如何使用 Node.js,而這次鐵人賽,希望透過這三十天,將內容做個濃縮,讓大家對於 Node.js 有個重新的學習,同時也將這兩年來開發 Node.js 的經驗導入於本書中。 這次資料預計分成四個章節,為編排。 環境建置 雖然 JS 可以在瀏覽器的環境中執行,不過為了流程順暢,初探的部份會先從環境建置開始講起,從 Node.js 在各個不同平台如何安裝。因應 Node.js 版本更新迅速,也會順便提到 NVM (Node.js Version Management) 的安裝方式,以及使用方法。 當然你也需要找個環境,讓你的程式可以進行佈署,因此這邊也會推薦幾個免費的環境給各位使用。 JavaScript 介紹 (接下來 JavaScript 一詞,將會縮減為 JS) 在閱讀此章節之前,請先拋開以往在瀏覽器編輯 JavaScript 的經驗,從現在起將討論是的 JavaScript 本質部份,會從 JavaScript 的變數、陣列、迴圈、函式、類別開始介紹,當中會使用到許多方法,只有在 Node.js 才會看到的方法,所以請記住我先前所說的,拋開以往對於瀏覽器的觀念,在這裡已經沒有瀏覽器的存在。 畢竟在 Node.js 的程式開發中,目前還是使用 JavaScript ,就算全面改用 CoffeeScript, TypeScript,本質上還是回到 JavaSCript 身為一個技術書籍來說,就是教大家最基本的東西,從中體驗 Node.js 開發,請好好的重新體會 JS 的好。 首先會先從 JS 的基本型態開始講起,從 JS 擁有哪些型態,用什麼方式宣告,一開始該怎麼寫,繼續講到 Array 怎麼宣告,其中有哪些方法,可以讓陣列 iterateor 完成自的使命。 Closure ,在大陸名詞翻譯為閉包,這在 JS 裡面是個有趣的議題,關係到 js 變數生命週期,當然這也是個很重要的概念釐清。 接著開始講解 Class, 什麼是類別,什麼是 function ,一個 function 怎麼生成 Class。當然談到這邊就會同時提到 JS Class 最特別東西,...

開發者轉換到 node.js 開發方向 - Node.js for php develpers PHP

Node.js for php develpers 從某一種語言跳到另外一種語言,通常來說痛感應該是不會太大,只要有些觀念釐清即可,畢竟每種語言存在都是有某些特別的道理,或者是有他的歷史存在意義,所以語言的對戰比較之類的事情,我對於這種事情通常是一笑至之。有時間去吵那些莫名其妙的事情,倒不如發揮自己所長,好好將產品快速產出,這才是 『實現的王道』 。 話說回來,前面談到前端開發者來說 JavaScript 是一個很棒的利基點,也是一個很好出發點,轉向到後端開發當中。那是否意味著其他語言開發者就沒有相對的機會呢? 就個人在其他語言上琢磨並沒有這麼多, PHP 倒是寫過不少年,因此我從 PHP 開發者的角色來檢視一下,有哪些觀念需要被改變,需要被調整。 Node.js 是一個整體的服務 / 語言 對於 php 開發者來說,一開始的環境就是要先開始架設 Apache / Nginx,接著使用 cgi 的方式來起動 php ,當然在 linux 底下的話,直接使用套件管理,直接進行安裝會是更為方便。 apt-get install php apache 但是在 node.js 裡面,node 本身就是一個服務,不需要其他相關的程式進行啟動, node 本身就可以是一個後端的服務,或者一個 web service ,更或者是一個 command line 的進行,所以 node.js 是不需要任何相依設定。 也因為如此,所以許多 apache 幫你處理掉的事情,在 node 裡面都需要自己處理,這件事情聽起來或許很煩,事實上也是如此,開發 php 的時候許多事情 apache 都已經幫你處理完的事情,node.js 在 web 上,前面的所有開發都需要自己來,這是一個很大的不同,你需要稍微了解一下之前 apache 到底幫 php 做了哪些事情,接下來開發 node.js 才能夠了解,為什麼他要做這些事情。 Node.js 每個檔案都是獨立的 Class node.js 每一個檔案都可以視為獨立的 Class ,這跟我們之前所認知的 JavaScript 似乎有很大的不同,JavaScript 本身都是採用 fuction call ,變數宣告也很容易互相影響,可是因為 Node.js 採用 CommonJS 標準,因此在每個程式裡面,變數...

[分享] JavaScript for backend - Webconf 2013

Webconf 2013 兩天的活動,順利落幕,這次感謝龍哥、PCT 的邀請。 這次的分享以 { 重新認識 JavaScript } 為出發點,讓有興趣的朋友能夠初步的認識,JavaScript 這個語言除了對於瀏覽器以外,後端語言所帶來的衝擊。 歡迎大家多多指教,如有口誤歡迎指正,以下是投影片,和整個 slide 的準備稿。 如果對於 Node.js 有興趣的朋友,歡迎加入討論, Node.js Taiwan Node.js Taiwan 共筆書籍 Node.js Taiwan Facebook group JavaScript for backend from Caesar Chi JavaScript for backend - WebConf 2013 who is designer, raise ur hand. who is developer, raise ur hand. who is marketing. ASK 3 question to audience, raise ur hand and response with my question. all the ppl follow me. Do u write Javascript in both side(frontend and backend) know node.js? write some node.js or installed node.js before? Start the slide share Node.js we could not tell detail Node.js is JavaScript Node.js is JavaScript for backend. (found a back door image) So let's talk about JavaScript for backend. (3mins) who am I Node.js TW Node.js book Node.js Taiwan Party welcome join us. (2mins) Most of us known JavaScript is jQu...

技術轉換需知,學習 Node.js 的前期準備

技術轉換需知,學習 Node.js 的前期準備 持續推廣 node.js 對於新手教學上,通常會遇到許多狀況,以及許多不同的迷思,總和出來其實可以看到一些常見的問題。 這篇文章也是藉由數次的活動發想實踐當中,延伸出來的導讀文章之一,也是每次在活動一開始的時候,就會跟大家介紹的這門技術的一個初探介紹部分。 學習之前,先學會忘記 就像是所有武功絕學一樣,要學一門武功,一個新的技術,首先你需要改變自己的既有思想,這實際上真的很難,但就對於自己來說,也很有多既有概念,框架其實是無法捨棄,但是既然決定學習一件新事物,那勢必就是要改變。 對於已經有學習過一些程式編輯,或者一些程式框架的開發者,建議一開始學習 node.js 的朋友,先忘記掉所有你學過的語言,以及開發方式,試著忘記既有框架的狀況下,去學習這門技術。 在沒有既定框架下,不去過分討論,比較任何語言上的差異,而是先從他的背後歷史意義,演進接著再瞭解近期的改變以及未來規劃等。 以 Node.js 來說,在 2009 年,給與的示範就是一個聊天室,也表現提高 high concurrency 的實做,在當時定爲爲處理高承載量的新語言新服務,透過 JavaScript 實踐出來的結果。 到了 2012, 2013 年開始, Node.js 朝向不同環境中,透過許多公司投入全職開發者,將 Node.js 發佈到不同平臺上,同時依靠社群的力量,開始有極具的成長,也帶來不同的聲量。 最近的趨勢是開始走向, Node.js 嘗試解決分散式系統架構,以及直接嵌入式系統中,所以意味着開始有許多不同的發展,也有發展出不同於 Web 的應用。 JavaScript 並不是 bala, bala, bala … 講了許多過去歷史,雖然說大家已經開始試著要去忘記以往框架這件事情,但是我相信一開始還是做不到,這真的很難,但是請務必嘗試著,至少試著親手輸入每次的程式碼以及每次的相關測試,哪怕只是 hello world,跟着一起從頭開始進行所有流程。 在開宗明義上,根大家說,Node.js 其實就是在寫 JavaScript ,拋棄以往對於所有瀏覽器上的謬誤,以及對於所謂 IE 或者其他瀏覽器上面可能發生的錯誤。現在開始所有的事情都發生在背後,全部的事情都是在伺服器裏面進行。 所以可以說是,Node...

[鐵人賽] NVM, 安裝管理你的 node.js - Node.js day 3

NVM, 安裝管理你的 node.js 前言 Node.js 需要管理不同版本的問題,在 unix 底下有個優良的安裝是, NVM 是大家在 unix 開發,最佳選擇。 如果你的環境是 windows 請跳過這個章節。 nvm,全名稱呼為 Node.js Version Management,為何會有這種東西,是因為 Node.js 在不同時期, API 的部份有些改版,經歷最大的改版歷程是 v0.4 - v0.6 - v0.7 - v0.8 ,到近期內,幾乎每一個大改版都有某個部分重要的 API 會進行重新調整。 應印不同的版本,所以需要有個完善的版本控制來做為需求,因此建議各位只要是在 *unix 的環境中,可以采用 NVM 作為 Node.js 的環境安裝,這邊我也建議大家這麼做。 準備工具 python 2.6 + GCC / G++ compiler Git 1.6 + wegt 以上幾個工具需要事先準備好,至於怎麼安裝,大家可以針對自已的 OS 搜尋一下,如何安裝。 NVM 安裝 進入 Terminal 之後輸入以下指令, git clone git://github.com/creationix/nvm.git ~/nvm . ~/nvm/nvm.sh 為了之後重新載入 unix 環境都可以正常執行,因此建議將 nvm.sh 檔案內容載入 bashrc (這邊設定大家使用預設的 bash 為 shell)。 echo ". ~/.nvm/nvm.sh" >> ~/.bashrc 測試看看 nvm 是否安裝完成, nvm 應該會看到說明畫面如下, Usage: nvm help Show this message nvm install Download and install a nvm uninstall Uninstall a version nvm use Modify PATH to use nvm run [ ] Run with as arguments nvm ls ...

[鐵人賽] Node.js 執行程式 & 環境介紹 - day 5

Node.js 執行程式 & 環境介紹 前言 環境目前已經都建置完成,也對於基本的架構有個認識,在這邊還是要花個章節,跟大家介紹怎麼樣執行 node.js 程式,凡事總是要有個 hello world. 執行程式 所有的 Node.js 程式都必須要在『終端機』模式底下進行執行(沒錯,就是那個黑色的畫面,請慢慢習慣跟黑色畫面的鍵盤輸入對話框當好朋友。) 而我們從 node.js 偷來第一個簡單的 Web 簡易程式。 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 上面這串程式,儲存成 server.js,接著執行 node server.js 就可以開啟瀏覽器,連結 url: http://127.0.0.1:1337/ ,可以看到畫面顯示, Hello World 恭喜完成第一個 node module Node.js 程式說明 Node.js 的程式架構中,採用了 CommonJS 為規範,所以我們可以看到許多和其前端開發有所差異的用法。 require require 這個關鍵字,主要是用於某個模組載入,例如上面的程式,就是直接讀取 http 模組,而 Node module 分為三種,原生,和之後透過 npm 安裝,還有另外一種自己寫的。 var http = require('http'); 上面的程式就是直接載入 Node.js 原生的 http 模組,至於要怎麼知道這個模組是不是原生,可以在 nodejs.org 上面找 API 就可以找到答案。 var express = require('express'); 上面...

從 node.js 開始使用 io.js

從 node.js 開始使用 io.js 多想想你可以開始嘗試使用 io.js ,io.js 是從 node.js fork 出來的一個分支專案。 我們可以很直接的說 io.js 有可能就是 node.js 的未來 ,因為 node.js 目前專案掌控權在於在 joyent 手上,可是基於種種理由久久不肯釋出更新的版本,於是更新腳步上逐漸緩慢。 有興趣的各位可以看看 node.js 到 io.js 故事 。 現在 v8 (node.js engine) 幾乎都可以支援許多 es6 的 feature ,可是對於 node.js 久久等待的大大,就這樣子 - 生氣了。 於是 io.js 就是這樣子誕生了,在短短數個月中已經快速的釋出了 v1.0.0 - v1.0.x 版本,目前都屬於公告尚未穩定版本,不過對於 es6 想要嘗試的朋友已經可以進行安裝下載。 installation via nvm 現在你可以透過 nvm 直接安裝 io.js , 請先更新你的 nvm (請注意目前 windows 平台無法直接使用 nvm 指令,詳情請查 官方網站 ),接著可以透過以下指令。 已經安裝過 nvm 的朋友可以透過網站上面介紹的 安裝方式 ,重新進行安裝之後,再進行 source 即可。 nvm install io.js nvm install iojs-v1. 0.3 快速安裝完成之後,顯示的訊息應該為。 ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### 100.0 % WARNING : checksums are currently disabled for io.js Now using node iojs-v1 .0 .3 恭喜你可以開始進入 es6 的世界,開始進入到另外一個 JavaScript 的未來國度中。 推薦你可以開始嘗試使用 koa 來建立自己的服務,或者開始另外一個 es6 探索之旅。 如果對於 es6 feature 有興趣可以從底下文章開始, ECMAScript 6 intro A glimpse into the f...

Express.js 的黑歷史及 Express 未來

Express.js 的黑歷史及 Express 未來 4/5 更新 , 根據讀者回饋,目前 IBM 已將 Express 及相關所有權轉移到 Node.js 基金會手中,讓 Node.js 社群能夠投入資源。 https://nodejs.org/en/blog/announcements/foundation-express-news/ Express.js (以下簡稱為 Express)相信如果有在開發 node.js 程式的人肯定不陌生,幾乎是開發 Web 應用上手的第一堂課程,而 Express 至今已經四年左右的時間,幾乎是從 Node.js 0.4 版本時期就開始有(憑藉著印象,如果有錯請大家指正),當然這當中必定要讚嘆一下,神人 - TJ (拱手作揖)。 而在 Node.js 與 io.js 的戰爭時期, TJ 也宣布將 express 釋出,最後是轉換到 StrongLoop 公司底下,全權交給 StrongLoop (包含網域名稱, Express.js 以及 github reps 的所有權),當然這中間 TJ 肯定有協調些什麼,以及與其他 contributor 。 使用 Express 不可不知的人物, Douglas Wilson ,他是在 TJ 離開 Express 幾乎所有 reivew, issue, merge 都會經過 Doug 的手中 但是燃火線在於 Express.js 4 -> 5 的這段時間, StrongLoop 被 IBM 買走,但是也因為 Express 是一個很龐大的生態系統,以及對於 node.js web 開發是一個影響許多的 open source project ,而在這段時間中, Douglas Wilson 因為某些事情憤而離開 Express 組織中。 這才真正引爆了大家對於 StrongLoop, 及 IBM 的不滿。 黑歷史重點回顧 TJ 將 Express 名字及所有內容轉移到 StrongLoop StrongLoop 並沒有指定或者對於 Express 有任何大量持續性維護 只有 Douglas Wilson 及其他志願者持續維持整個 Express 專案的進度 StrongLoop 在這之後宣稱自己有所有權管理 Express ,...

iis node - build node.js runner on windows

iis node - build node.js runner on windows 很久之前就聽說過 node.js 可以執行 在 iis 裡面,可惜一直都沒有太多緣份執行 windows 環境,這幾天剛好把 windows 環境建置完成之後,第一個想法就是安裝看看 node.js 在 windows 環境裡面。 本篇文章將會帶領大家一步一步完成 iisnode 的建立。 基礎環境 windows .net framework Node.js installed 開始安裝 在開始之前還是要貼心提醒一下各位,記得安裝好 node.js ,在 windows 環境裡面已經具備有 node.js 的執行檔案,下載好 msi 安裝包之後,直接陸續下一步就可以完成了 現在微軟已經很方變得提供 WebMartix 這個平台給予輕量級開發者,到 WebMartix 的環境中,進行安裝檔案的下載包含 express 7.x, iisnode…相關套件。 WebMartix 下載頁面 開始安裝 WebMartix, 選項都 使用預設 即可,接下來會從所有詳細的安裝資料會陸續從網路下載下來,進行安裝。 接著最後會看到完成步驟,就表示 WebMartix 安裝完成。 使用 WebMartix 開始使用 WebMartix ,正常安裝完成後,開啟會看到如下的畫面 在這邊我們選擇新增一個專案,從範本庫裡面 接著選擇 node.js 專案,這邊我選擇 express 的專案 , 輸入專案名稱之後,按下完成,畫面就會開始新增一個專案同時,會從網路上下載 express web 範本,複製到本地端。 以上步驟有正確完成,就會跳到專案畫面,有點類似程式編輯器的軟體,畫面如下, 接著按下左上角的 '執行' ,再選擇瀏覽器就可以看到開啟一個新的連結,也是大家最常看到的畫面。 WebMartix 我們就談到這邊,基本的環境就如此簡單可以架構起來。 後記 從 WebMartix 這個專案可以看到微軟對於 open source 開始有了許多不同方向的支援,讓開發者更為簡單的開發,同時讓初學者可以很快的加入他們的環境中。 當然 WebMartix 除了上述好上手的東西之外,其實還...

[推薦] JavaScript 前後端學習書籍

JS 道現在已經變成一種顯學,從以前不太重要的瀏覽器端,到現在從瀏覽器(瀏覽器也只能夠使用 JavaScript 執行),到後端程式語言 Node.js ,甚至是 mobile 上都可以使用 JS 進行程式開發,因此這個語言變得越來越重要,也越來越為更多人重視。 身為網站開發者,是需要好好學習一下這個語言的奧祕, 首先從瀏覽器端,一開始對於我自己所困擾的是什麼是 AJAX,翻遍許多書籍之後,終於找到一本比較能讓自己所了解的, 前端部分: [IMG]http://i.imgur.com/RobJpDt.jpg[/IMG] Bulletproof Ajax 這本書裡面講解 AJAX 如何與伺服器互動,同時講解瀏覽器到底 DOM 是什麼東西, DOM 如何運作,到最後面漸增強的部份都有做簡單的講解,十分適合初學者入門學習。 當然這本只是概念,如果需要更深的層次,每個名次都有一本專門的書可以提供參考,會推薦 Bulletproof Ajax 給初學者,也是因為他的輕薄,試著從這種簡單的書,開始進入 AJAX 的世界。 [IMG]http://i.imgur.com/gXSJOfC.jpg[/IMG] JavaScript for web developers 當開始對於瀏覽器,DOM,ajax 有了基本概念之後,接著可以試著看這本 JavaScript for web developers ,這本書相對前一本就厚重許多,裡面從 JS 的每個屬性開始講解,到 funciton, closuure, timer 等一一解釋,甚至於瀏覽器中的事件(Evetn) 都有相當詳細的說明,裡面解釋了許多 JavaScript 在瀏覽器執行時,可能會發生的問題以及避免方式。 當真正深入開發產品的時候,可以從這本書籍裡面,避免掉許多細節問題。 [IMG]http://i.imgur.com/dPVTj1R.jpg[/IMG] JavaScript good parts 這本書籍並不分前後端,只要是寫 JavaScript 的人,過一段時間都可以重新回味一下 JavaScript Good Parts,裡面提供了對於 JS 的見解,對於自己開發的 naming, conviention, logic 這些問題處理上,偶而重新翻一下此書籍,都會有...

Deploy node.js app to heroku

這次在 Node.js 校園課程中,增加了 node.js app 佈署的部份,大部分的人都希望自己的程式結果被大家看到,找到一個適當的平台可以擺置,經過多次測試以及尋找之後,發現目前 heroku 已經符合大部分的情境,因此這次活動採用 heroku ,以下的 slide 歡迎大家照著步驟執行,如果真的不行,最後也擺上 github 專案。 目前 Node.js Taiwan 的書籍正在加緊編寫中,也請大家多多關注,繼續支持新版 Node.js 教學資料 。 -  https://github.com/nodejs-tw/nodejs-book-beginner-guide how to quick deploy node.js apps to heroku, it is easy and quick for node.js developers, if you are like node.js should be try this. platform prepare heroku dashboard introduce app.js change - node init file update set package.json deploy node.js project to heroku via git import RSA key to heroku setup heroku scale done try it, there is slides node.js app deploy to heroku PaaS from Caesar Chi

[致謝] 每個參與 Node Knockout Taiwan 2013 朋友

Node Knockout Taiwan 2013 活動在 11/10 圓滿結束,本次活動延續前年風格以 Node.js 程式開發為主,48 小時連續馬拉松程式開發競賽,以 Node.js 語言特性,高承載量,高連接數方向為主,進行程式開發。 活動真的很不簡單,參賽者能夠堅持到最後,完成 48 小時的馬拉松開發競賽,實在是體力與精神力的耗損,這次成品較前年度不論是完整度,還是實用性都勝於前年許多,並且在這短短的時間內,創造出來了許多令人驚豔的作品(詳情可參考  http://nodejs.tw/t/nkotw2013  ) ,Node Knockout Taiwan 賽程之後,各參賽組別緊接著繼續國際賽事 ( http://nodeknockout.com/  ),透過這樣的方式,讓更多開發者能夠了解什麼是 Node.js ,Node.js 到底帶來什麼樣不同的衝擊,對於後端開發的整個架構來說,會有什麼不一樣的思考方式。同時透過此活動與國際連接,讓台灣與國際接軌,讓世界看見台灣。 Node Knockout Taiwan 2013 此活動是由 Node.js 台灣社群 , JSDC , 神通資科 , 育秀基金會 共同主辦,特別感謝神通資科, MiCloud 成員,配合 Node Knockout 活動全程參與協助,協調,以及場地,網路支援等。活動中參與的志工Mervyn, Stanney, 家宇, 安傑, 孝玠,方姊,Cyril, 乃筠。 Node Knockout 活動這次中有幾個首要不同的地方,第一是 Node.js 台灣社群終於有自己的 Logo,由 JSDC logo 的設計師 Roca 全力協助設計完成。而 Node Knockout Taiwan 2013 Logo, 貼紙,及會場中所有的看板,印刷品,設計品都是由 金寶 製作完成,這邊要特別提出他們的設計貢獻,真的讓會場更有聲有色。 神通大樓這次提供了現場會場,電力,網路支援,特別要感謝 MiCloud 成員 Benson, Ethan, 宜禎, 振偉, Sunny。網路設備,羅利,伃玲,神通場地,以及事務協調,Lisa, Simo, Helen, Felix。特別要致謝幕後推手,Jesse 才能夠讓這次活動如此順利完成,以及達成這次與育秀基金會的合...

使用 Gitbook 寫一本書

使用 Gitbook 寫一本書 很多人會期待自己都可以擁有自己一本書籍,或者是期待自己可以推出自己的小說,透過 gitbook 這個工具其實非常容易完成。 在約莫一個多月前, Node.js 中文書籍進行改寫計畫 ,當時似乎沒有找到 gitbook 這類的工具,那時候社群就打算自己打造類似 gitbook 這樣的工具,讓大家可以透過 cli 直接可以產生 html, pdf, epub 等不同格式,讓大家都可以直接線上閱讀。 我們就來看一下 gitbook 到底要怎麼使用。 gitbook gitbook gitbook github gitbook 編輯器 gitbook 是一個 open source 的專案,主要是針對電子書寫手可以直接入門,讓大家可以透過開發者所習慣的 markdown 格式,以及 cli 的方法直接產出靜態網站,以及資料。 安裝方法 安裝方式只要透過 npm 就可以立刻安裝完成, npm install -g gitbook 使用方法 快速上手的方法,其實十分簡單,我們只需要在專案資料夾底下設定檔案 SUMMARY.md ,建立書籍大綱, SUMMARY.md 的範例檔案可以參考。 範例 # Node.js 網站開發快速上手指南 一本屬於繁體中文,從華人自身發起給予『Node.js 新手的學習手冊』,藉由實際動手開發的過程中,讓大家了解到 Node.js 開發有趣之處。 * [Node.js 介紹](source/intro/nodejs.md) * [Node.js 安裝](source/install/installNode.md) * [Node.js 安裝](source/install/installNode.md) * [Node.js 線上測試環境](source/install/onlineEnv.md) gitbook 指令 gitbook 提供幾種不同的指令給予大家參考, 當一開始 SUMMARY.md 檔案建立好之後,可以透過 init 的步驟,gitbook 會自動幫忙建立對應的資料夾,以及檔案名稱。 gitbook init 建立 static server ,會自動幫你開啟一個 4000 port 的靜態伺服器,當然你可以透過...

[鐵人賽] 安裝 Node.js - Node day2

安裝 Node.js 前言 一開始先從 Node.js 的安裝講起,之後會開始講基本的 JS 原則,不過為了讓大家環境統一,所以先從環境建置開始講起,如何安裝 node.js 開始講起。 Node.js 下載安裝檔案頁面。 Windows Windows 的安裝方法十分簡單,node.js 對於 windows 環境也有做特別的調教,進入下載點,將檔案下載之後, 接著持續按下, next ,就可以完成 node.js 的安裝。 迫不及待需要直接測試 node.js ,進入 『命令提示字元』,看到黑色的輸入對話框,輸入 node -v ## get node version Mac Mac 基本上也是跟 Windows 安裝方式大同小異,只要到下載頁面,點選 Mac 版本,開啟 pkg 檔案,點擊兩下,開始進入安裝畫面,一樣都是『下一步』動作就可以完成。 如果要進行測試,可以開啟『終端機』之類的服務,輸入, node -v ## get node version Linux linux 的安裝,推薦采用 NVM ,至於安裝方法,在明天會跟各位介紹,請大家期待。

[教學]Node.js 安裝教學. node.JS install

修改紀錄: 2011/10/18 目前nodeJS 已提供windows 執行版本,以及linux 自行編譯的步驟,程序上也都大為降低錯誤率,因此本篇文章將內容縮減為Linux、Windows 兩種版本安裝說明。 所有的nodeJS文章,通常一開始的簡介,之後就是環境安裝介紹,當然也不免俗的來介紹一下,隨著時間的演進與發展,在各種環境都已經有自己一套node repository ,這邊就介紹最基本的unix 底下compile,和windows 兩種方式 Linux 執行以下指令 git clone --depth 1 git://github.com/joyent/node.git ./configure make -j2 make install # 如果出現權限問題,再加上sudo 試試看 以下事項提醒,安裝前先行確認環境中已安裝: git gcc python 同時不要使用root權限安裝,否則會導致node module 因為權限問題,執行出現錯誤。 Windows http://nodejs.org/#download 至此網址,下載 node.exe  Windows executable ,下載完後預設放入C:\node\node.exe,同時設定環境變數: NODE_PATH="c:\node\" 設定完後可以將其他module 放置此目錄底下,執行node 程式時,將會引用此目錄中module,如不存在才會尋找相對路徑。

[鐵人賽] NPM 介紹及使用說明 - node.js day 4

NPM 介紹 導讀 npm 在 Node.js v0.6.x 版本之後,就變成內建的系統之一,npm 全名為 node.js package management,主要用於套件管理, 至於 npm 有什麼強大之處,接下來慢慢介紹。 開始 Node.js 其中好用的一個部份就是因為有 npm,擁有完整管理的架構,讓套件可以被妥善管理,每個專案間的 dependecy 也可以妥當的被使用,目前在 npm 上也已經有 8000 多個模組,提供開發者使用。 基於開發者不要重複自己造輪子,從 npm 上面找到適合自己的模組,就是開發者應該做的工作。 npm 基本使用方法 npm 資料網站 https://npmjs.org/ 可以從上面的網站找到許多套件,使用方法也非常簡單 內容詳細的項目,可以參考 npm 的說明,在終端機輸入 npm ,會得到如下的訊息, where is one of: add-user, adduser, apihelp, author, bin, bugs, c, cache, completion, config, ddp, dedupe, deprecate, docs, edit, explore, faq, find, find-dupes, get, help, help-search, home, i, info, init, install, la, link, list, ll, ln, login, ls, outdated, owner, pack, prefix, prune, publish, r, rb, rebuild, remove, restart, rm, root, run-script, s, se, search, set, show, shrinkwrap, star, start, stop, submodule, tag, test, tst, un, uninstall, unlink, unpublish, unstar, up, update, version, view, whoami npm -h quick help on npm -l display fu...

[鐵人賽] JS 基本解說,變數型別,宣告 - Node.js Day 6

JS 基本解說,變數型別,宣告 前言 前面已經有建立基本的 Node.js ,以及第一個基本範例,在開發 Node.js 之前,讓我們先建立 JavaScript 應該要知道的一些基本觀念。 本文開始 在進入 node.js 開發之前,還是必須要說, node.js 雖然稱為 node.js ,不過本質在開發上還是在寫 JavaScript。對於 JavaScript 的基本認知還是要有。 基本型態 JavaScript 有以下幾種基本型態。 Boolean Number String null undefined 變數宣告的方式,就是使用 var,結尾使用『;』,如果需要連續宣告變數,可以使用 『,』 做為連結符號。 // 宣告 x 為 123, 數字型態 var x=123; // 宣告 a 為456, b 為 'abc' 字串型態 var a=456, b='abc'; 布林值 布林,就只有兩種數值, true, false var a=true, b=false; 數字型別 Number 數字型別,可以分為整數,浮點數兩種, var a=123, b=123.456; 字串型別 字串,可以是一個字,或者是一連串的字,可以使用 ‘’ 或 “” 做為字串的值。 var a="a", a='abc'; 運算子 基本介紹就是 +, -, *, / 邏輯運算就是 && (and), || (or), ^ (xor), 比較式就是 >, <, !=, !==, ==, ===, >=, <= 判斷式 這邊突然離題,加入判斷式來插花,判斷就是 if,整個架構就是, if (判斷a) { // 判斷a 成立的話,執行此區域指令 } else if (判斷b) { // 判斷a 不成立,但是 判斷b 成立,執行此區域指令 } else { // 其餘的事情在這邊處理 } 整體架構就如上面描述,非 a 即 b的狀態,會掉進去任何一個區域裡面。 整體的判斷能夠成立,只要判斷轉型成 Boolean 之後為 true,就會成立。 大家可...

[分享] watchFile 陷阱與進階討探 (Node.js), watchFile tricky way on Node.js

watchFile 陷阱與進階討探 這兩天因為之前寫得一個 simple-livereload 無法支援 Windows, Mac ,開始進行小改版,也稍微對 file system , Path 做些小小測試,其中發現了一個關於 watchfile 小小的問題。 問題探討 先來看一下程式碼 var fs = require('fs'); var fullpath = '/home/clonn/test.html'; fs.watchFile(fullpath, function (curr, prev) { console.log('file update') }); 接著進行檔案執行之後,會發現出現一個問題,當我修改 test.html 的時候,照理來說應該只有出現一次 file update ,可是卻出現 兩次 ,這實在有點不合乎邏輯。 拜了一下 Google 大神之後,終於找到原因,因為 file system 的 watchFile 實做,當關注的檔案片段(data chunk) 被更動的時候,就會觸發(trriger),接著檔案修改完成,又會重新觸發一次事件,所以導致當一個檔案修改,會被觸發兩次。 處理方法 在 filewatch 的 listen 事件當中會提供 curr, prev,之前和目前的物件(Object) ,接著使用此事件進行時間比對,所以剛才的檔案我們修改如下, var fs = require('fs'); var fullpath = '/home/clonn/test.html'; fs.watchFile(fullpath, function (curr, prev) { if (curr.mtime.getTime() !== prev.mtime.getTime()) console.log('file update'); }); 如此就可以得到正確結果,檔案修改,就只會進行一次觸發。 進階處理 其實 fs.watch, fs.watchFile 會回傳 listener 物件,如果要使用可以將程式碼修改如下, var ...

回顧 JavaScript for backend 講題

這次準備 WebConf 活動,受龍哥,PCT 的邀請講解 Node.js 相關議題,其實就技術來說與開發許多專案的前輩相比較,自己還是有許多地方需要精進,跟大家分享的方向也都是比較粗淺的部份,太多深入的議題可能就要請前輩來指導。 剛開始準備方向是希望與大家分享 Node.js 分散式架構上的應用,整體來說也比較像是自己在 MiCloud 環境中實際應用的架構,會使用到 Load Balancer,Middle server,DB Server ,還有加上 SmartOS SMF 服務,一開始的確是這麼想,也是要朝這方向準備。畢竟這樣的課題是自己日常生活所在接觸,準備起來也是稀鬆平常,還可以充當內部說明簡報,當然最後卻沒有這樣子做。 主因是相信來到 WebConf 的朋友大多沒有接觸過  Node.js,Node.js 某方面來說對各位也算是新的技術,如果對於一個沒有接觸過的朋友,相信還是 Node for beginner 會比較適合。 在思考準備方向的時候開始有了許多矛盾,也有許多不同的想法,當時心中更呈現了『一起來寫程式吧!』這個詭異的念頭,回到實際面就是,我只有 『30 分鐘』 ,超出這個時間,就表示… 『你已經死了』 轉變 許多念頭許多想法,但是三十分鐘只能讓我呈現一個重點。最後決定的主題就是『 說明 JavaSCript 本質 』,在這個課題上良葛格已經寫了一系列的好文章給予後進,當然我所能著墨的就在於 JavaScript 在後端程式語言如何應用,以及差異上怎麼分別,最少讓大家在這三十分鐘內能夠知道 『JavaScript 已經不一樣』,就跟當時第一屆 『JSDC 2012』 舉辦的心情一樣,只要讓參與者,感受到 JavaScript 已經不一樣了,能夠讓大家體會到這件事情,就足夠了。 開始著手改自己的大綱,以及投影片的製作開始,將幾個重要的事情點出來。  * 介紹平常所認知的 JS, 與實際 JS 差異  * 如何判讀自己在前端、後端的 JS 環境  * Node.js 如何替 JS 帶來新的契機  * 簡單介紹 Node.js 能夠做什麼 驚喜 這個 slide 放在 slideShare ,希...