搜尋
首頁web前端js教程在Mac OS下使用Node.js的簡單教學_node.js

這裡有一篇很好的Node.js 介紹文章great nodejs intro ,它將給你一個非常方便的介紹Node.js 和CouchDB,並給出一個實例實現REST 的服務用於執行書籤的CRUD 操作,使用CouchDB 作為資料庫。

本文將介紹在 Mac OS X 下安裝並開始使用 Node.js ,這個過程大概需要 30 分鐘左右的時間,其中我們還將安裝 CouchDB,並實作基於 CouchDB 的 REST API。

本文假設你機器上已經裝有Git,如果還沒有,請參考此文進行安裝。

安裝 node.js 和 npm

最簡單的方法是在node.js 的官網上通過the nodejs download section 頁面並選擇Mac 下的安裝程序,它將在你的機器上安裝Node.js 和npm (node package manager). 
 安裝成功後你就可以使用 node 和 npm 指令了。

安裝 CouchDB

因為本文需要使用 CouchDB 來儲存對象,因此也需要安裝 CouchDB.

安裝 CouchDB 稍微麻煩一些,因為我們需要下載原始碼然後編譯I,在此之前需要先安裝 Homebrew ,請執行以下命令:
 

git clone https://github.com/mxcl/homebrew.git
cd homebrew/bin
brew install autoconf automake libtool
brew install couchdb


重要的提示:CouchDB 之前報出一個問題可能會阻止你安裝,要修復這個問題需要手工編輯 ~/couch/homebrew/Library/Formula/couchdb.rb 文件,編輯內容如下:
 

複製程式碼 程式碼如下:
require 'formula'
 
class Couchdb   url 'http://www.apache.org/dyn/closer.cgi?path=couchdb/source/1.1.1/apache-couchdb-1.1.1.tar.gz'
  homepage "http://couchdb.apache.org/"
  md5 'cd126219b9cb69a4c521abd6960807a6'


請注意需要將 url 中的 source 刪除,最終修改結果如下:
 

複製程式碼 程式碼如下:
require 'formula'
 
class Couchdb   url 'http://www.apache.org/dyn/closer.cgi?path=couchdb/1.1.1/apache-couchdb-1.1.1.tar.gz'
  homepage "http://couchdb.apache.org/"
  md5 'cd126219b9cb69a4c521abd6960807a6'

如果安裝過程被掛起了,你需要 CTRL-C 終止並執行下面命令重試:
 

複製程式碼 程式碼如下:
./brew install -v couchdb

更多關於 Mac OS X 上安裝 CouchDB 的資訊請閱讀 "Installing CouchDB on OSX".

一旦 CouchDB 編譯完成,我們可以手動執行 ./couchdb 來啟動它,你可以在瀏覽器中開啟 http://127.0.0.1:5984/_utils 這個位址以驗證 CouchDB 安裝是否成功。

201562495503417.jpg (1009×575)

 下載教學

現在所需的軟體都已經安裝完成,我們接下來繼續 Node.js 的介紹實例。

首先我們使用 Git 來取得實例原始碼
 
git clone https://github.com/indexzero/nodejs-intro.git
建立 CouchDB 資料庫
在開始教學之前我們需要建立一個 CouchDB 資料庫,先確保 CouchDB 已經啟動,然後使用以下指令建立資料庫:
 
$ curl -X PUT http://127.0.0.1:5984/pinpoint-dev10
{"ok":true}

你可以在瀏覽器中造訪 http://127.0.0.1:5984/_utils 就可以看到新建立的資料庫。

這裡還有一個非常棒的 CouchDB 的指南。

開始教學

node js 實例使用模組化的方式構建,lib 目錄包含很多模組,而伺服器腳本在 bin 目錄下。

例如,我們要啟動 CouchDB 教程,可以在 bin 目錄下執行下面命令:
 
./server -t 02couchdb -s

其中 -t 參數可讓你指定要執行的 lib 目錄下的模組,-s 參數用以設定我們剛建立的 pinpoint-dev 資料庫。

sys - util 變化

根據 Node.js 的版本不同,你可能會看到如下的錯誤或是警告:
 

複製程式碼 程式碼如下:
$ node -v
v0.7.7-pre
 
$ ./server -t 02couchdb -s
 
node.js:247
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: The "sys" module is now called "util".
    at sys.js:1:69
    at NativeModule.compile (node.js:572:5)
    at Function.require (node.js:540:18)
    at Function._load (module.js:297:25)
    at Module.require (module.js:357:17)
    at require (module.js:373:17)
    at Object. (/home/ubuntu/nodejs-intro/bin/server:3:11)
    at Module._compile (module.js:444:26)
    at Object..js (module.js:462:10)
    at Module.load (module.js:351:32)

為了避免這個問題,你需要將所有呼叫 `require("sys")` 替換成 `require("util")`

Node v0.6.14 不會拋出錯誤訊息,但會提示警告:
 

複製程式碼 程式碼如下:
$ node -v
v0.6.14
 
$ ./server -t 02couchdb -s
The "sys" module is now called "util". It should have a similar interface.
Pinpoint demo server listening for 02couchdb on http://127.0.0.1:8000

運行教學

當你執行某個教學時,會提示一些錯誤:

 

複製程式碼 程式碼如下:
$ ./server 02couchdb
The "sys" module is now called "util". It should have a similar interface.
 
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'optimist'
    at Function._resolveFilename (module.js:332:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:354:17)
    at require (module.js:370:17)
    at Object. (/Users/ddewaele/Projects/Node/nodejs-intro/bin/server:5:12)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)

该教程包含很多依赖,我们需要使用 npm 来下载这些依赖的包。
 
安装 node 包

Node packages (dependencies) 可通过 npm 命令来安装,例如:
 

$ npm install optimist
npm http GET https://registry.npmjs.org/optimist
npm http 200 https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz
npm http 200 https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz
npm http GET https://registry.npmjs.org/wordwrap
npm http 200 https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz
npm http 200 https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz
optimist@0.2.8 ../node_modules/optimist
└── wordwrap@0.0.2


这些包将被安装到 node_modules 文件夹中:
 

$ ls -l ../node_modules/
total 0
drwxr-xr-x 10 ddewaele staff 340 Apr 1 18:54 optimist


本文需要安装如下的 node 包:
 

npm install winston
npm install cradle
npm install journey
npm install optimist

运行教程

进入 bin 目录,通过下面命令来运行教程:
 

$ ./server -t 02couchdb -s
The "sys" module is now called "util". It should have a similar interface.
Pinpoint demo server listening for 02couchdb on http://127.0.0.1:8000

然后打开浏览器访问 http://127.0.0.1:8000/bookmarks ,将会看到如下的结果:
 

复制代码 代码如下:
{"bookmarks":[]}

这表示服务已经启动并运行,为了在 CouchDB 中添加点测试数据,我们可以使用 http-console 控制台来访问 CouchDB 的 REST 服务。

安装 http-console

有一个非常棒的工具可以帮助你调试服务,该工具名为 http-console ,你可使用 npm 来安装:
 

sudo npm install -g http-console

然后就可以在命令行中执行该工具,不幸的是当我们执行该命令时报错了:
 

$ http-console
 
 
node.js:201
    throw e; // process.nextTick error, or 'error' event on first tick
       ^
Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
  at Function. (module.js:378:11)
  at Object. (/usr/local/lib/node_modules/http-console/bin/http-console:6:8)
  at Module._compile (module.js:441:26)
  at Object..js (module.js:459:10)
  at Module.load (module.js:348:31)
  at Function._load (module.js:308:12)
  at Array.0 (module.js:479:10)
  at EventEmitter._tickCallback (node.js:192:40)


很麻烦,我们还需要手工编辑 /usr/local/lib/node_modules/http-console/bin/http-console 文件,然后删除下面这一行:
 

复制代码 代码如下:
require.paths.unshift(path.join(__dirname, '..', 'lib'));

现在 http-console 就可以启动了,无需任何参数,它将连接到 http://localhost:8080 ,如果你需要指定服务器和端口,把它作为第一个参数传递给 http-console 即可。

请注意我们这里使用了 \json 命令用来设置正确的 content-type:
 

$ http-console http://127.0.0.1:8000
The "sys" module is now called "util". It should have a similar interface.
> http-console 0.6.1
> Welcome, enter .help if you're lost.
> Connecting to 127.0.0.1 on port 8000.
 
http://127.0.0.1:8000/> \json
http://127.0.0.1:8000/>


访问 REST 服务

在 http-console 中,要执行 GET 请求只需要输入 GET /bookmarks 即可:
 

http://127.0.0.1:8000/> GET /bookmarks
HTTP/1.1 200 OK
Date: Sun, 01 Apr 2012 17:23:27 GMT
Server: journey/0.4.0
Content-Type: application/json;charset=utf-8
Content-Length: 16
Connection: keep-alive
 
{
  bookmarks: []
}


你也可以使用 JSON 的片段来执行 POST 请求:
 

http://127.0.0.1:8000/> POST /bookmarks
... { "url": "http://nodejs.org" }
HTTP/1.1 200 OK
Date: Thu, 05 Apr 2012 11:45:55 GMT
Server: journey/0.4.0
Content-Type: application/json;charset=utf-8
Content-Length: 91
Connection: keep-alive
 
{
  bookmark: {
    _id: 'WD-G-1',
    resource: 'Bookmark',
    url: 'http://nodejs.org'
  }
}


然后再次执行 GET 请求,你就可以看到新插入的数据了:
 

http://127.0.0.1:8000/> GET /bookmarks
HTTP/1.1 200 OK
Date: Sun, 01 Apr 2012 17:23:27 GMT
Server: journey/0.4.0
Content-Type: application/json;charset=utf-8
Content-Length: 16
Connection: keep-alive
 
{
  bookmarks: [
    {
      _rev: '1-cfced13a45a068e95daa04beff562360',
      _id: 'WD-G-1',
      resource: 'Bookmark',
      url: 'http://nodejs.org'
    }
  ]
}

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
ip与mac绑定什么意思ip与mac绑定什么意思Mar 09, 2023 pm 04:44 PM

ip与mac绑定是指将特定的IP地址与特定的MAC地址关联起来,使得只有使用该MAC地址的设备才能够使用该IP地址进行网络通信。ip与mac绑定可以防止被绑定的主机的IP地址不被假冒,前提条件:1、MAC地址是唯一的,并且不可假冒;只能绑定与路由器直接相连的网络上的主机(也就是主机的网关在路由器上)。

mac版下载是什么意思mac版下载是什么意思Mar 06, 2023 am 09:52 AM

mac版下载的意思是当软件在选择安装时,选择MAC版下载;Windows版和MAC版是两个不同的操作系统,所以大多数软件在选择安装的同时需要选择Windows版还是MAC版。

mac鼠标滚轮相反怎么办mac鼠标滚轮相反怎么办Mar 16, 2023 pm 05:44 PM

mac鼠标滚轮相反的解决办法:1、打开mac电脑,点击屏幕的苹果标志,然后选择“系统偏好设置”;2、在“系统偏好设置”窗口中,选择“鼠标”;3、在“鼠标”窗口中,将“滚动方向:自然”前面的勾去掉即可。

修复文件共享在 MacOS Ventura 中不起作用修复文件共享在 MacOS Ventura 中不起作用Apr 13, 2023 am 11:34 AM

修复 SMB 文件共享在 MacOS Ventura 中不起作用的问题从  Apple 菜单打开 Mac 上的“系统设置”应用程序转到“常规”,然后转到“共享”找到“文件共享”的开关并将其关闭通过转到  Apple 菜单并选择重新启动来重新启动 Mac重新启动后,返回共享系统设置面板并将“文件共享”重新设置为打开位置像往常一样恢复文件共享,它应该按预期工作如果 MacOS Ventura Mac 与另一台 Mac 或设备之间的文件共享突然再次停止工作,您可能需要在几天后或随机重复此过程。

如何防止 Mac 在显示器关闭时进入睡眠状态 (MacOS Ventura)如何防止 Mac 在显示器关闭时进入睡眠状态 (MacOS Ventura)Apr 13, 2023 pm 12:31 PM

显示器关闭时如何防止 Mac 休眠如果您希望 Mac 显示器能够在整个计算机不进入睡眠状态的情况下关闭,请在此处进行适当的设置调整:下拉  Apple 菜单并转到“系统设置”转到“显示”点击“高级...”切换“防止显示器关闭时电源适配器自动休眠”的开关现在 Mac 显示屏可以关闭,同时防止 Mac 本身进入睡眠状态。这可能主要与 Mac 笔记本电脑用户相关,但即使是那些没有 MacBook 的用户也可能会发现该功能很有用。

mac克隆是什么意思mac克隆是什么意思Jan 31, 2023 am 10:33 AM

mac克隆全称mac地址克隆,是固化在网卡上串行EEPROM中的物理地址,通常有48位长。mac克隆一般应用在路由器上,用户在用电脑直接拨号上网,后来又加了个路由器,通过路由器来实现多台电脑同时上网,这时要用到mac地址克隆了,就是把当前的电脑的mac地址克隆到路由器中去,因为运营商是把你的电脑mac地址绑定你的账号的,所以得克隆以后才能用。

mac的shift键是哪个键mac的shift键是哪个键Mar 13, 2023 pm 02:20 PM

mac的shift键是fn键上方、caps lock键下方的一个键,该键在键盘最左侧,由右下往上数第2个键;shift键是键盘中的上档转换键,可以通过“Ctrl+Shift”组合键来切换输入法。

mac解压rar用什么软件mac解压rar用什么软件Mar 03, 2023 pm 04:18 PM

mac解压rar的软件:1、The Unarchiver,是一款完全免费、小巧,而且非常易于使用的压缩、解压缩小工具;2、Keka,是一款免费、实用的压缩、解压缩工具,支持解压缩RAR格式的压缩包;3、360压缩大师,是一款免费的压缩、解压缩软件,完全支持RAR文件解压;4、MacZip,支持包括RAR在内的超过20种压缩格式的解压;5、BetterZip;6、FastZip。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)