Using Node modules - composite/nw.js GitHub Wiki
node.js λ 3κ°μ§ λ°©μμ λͺ¨λμ΄ μμ΅λλ€.
-
λ΄μ₯ λͺ¨λ (Node API λΆλΆ)
-
JavaScriptλ‘ λ§λ νμ¬ λͺ¨λ
-
C/C++ λ‘ λ§λ λ€μ΄ν°λΈ νμ¬ λͺ¨λ
μ΄λ€μ λͺ¨λ nw.js μμ μ¬μ©ν μ μμ΅λλ€.
μ°Έκ³ : node.js wikiμ κΈ°μ¬λ βλͺ¨λβ μ΄λ, npm κ²μ μΌλ‘ μ°Ύμ λͺ¨λ λ±μΌλ‘ λ€μν μ€ν μμ€ λͺ¨λμ μΆκ°ν μ μμ΅λλ€.
node.js λ΄μ₯ λͺ¨λμ λ³λ€λ₯Έ κ³Όμ μμ΄ node.js λ°©μμΌλ‘ μΆκ°ν μ μμ΅λλ€. λͺ¨λ μΌλμ API λ¬Έμλ₯Ό μ°Έκ³ νμΈμ.
μλ₯Ό λ€λ©΄, var fs = require('fs') μΌλ‘ νμΌμμ€ν
λͺ¨λμ μ¬μ©ν μ μμ΅λλ€.
λλ€λ₯Έ μλ‘ require(β¦) κ°μ λ³λ μ²¨λΆ μμ΄ λ°λ‘ process λͺ¨λμ μ¬μ©ν μ μμ΅λλ€.
κ·Έλ¬λ node.js APIμ nw.js APIκ° μ½κ° μ°¨μ΄μ μ΄ μμ΅λλ€. μμΈν μ¬νμ node.js μ nw.js API μ°¨μ΄μ μ μ°Έκ³ νμΈμ.
λ§μ½ νμ¬ λͺ¨λμ΄ λ€μ΄ν°λΈ μμ΄ μμ μλ°μ€ν¬λ¦½νΈλ‘λ§ μ§μ¬μ§ λͺ¨λμ΄λΌλ©΄, λ°λ‘ nw.js μμ require('moduleName') λ°©μμΌλ‘ 첨λΆνμ¬ μ¬μ©ν μ μμ΅λλ€.
κ·Έλ¬λ μλ κ²½λ‘λ μ±μ μλ λΆλͺ¨ κ²½λ‘κ° μ΄λ€ λ°©μμ μ°λμ λ°λΌ λ¬λΌμ§λλ€.
-
require()λ₯Ό μ¬μ©ν κ²½μ°, λΆλ¬μ€λ μμμ κ°μ Έμ¬ λ μλ κ²½λ‘λrequire()λ₯Ό μ¬μ©ν νμΌ κΈ°μ€μΌλ‘ κ²°μ λ©λλ€. -
λ§μ½ μΉν€νΈ κΈ°λ° μμ€ν μμ λ€λ₯Έ νμΌ κ²½λ‘λ₯Ό λΆλ¬μ¬ κ²½μ° (
window.open(),XMLHttpRequest,<script src="...">λ± μΉμμ μ°μ΄λ μΈλΆ κ²½λ‘ μ¬μ© κΈ°λ₯) μλ κ²½λ‘λ μ± μ΅μμ κ²½λ‘λΆν° μμν©λλ€.
μ μμ λ»μ λͺ¨λ node.js λͺ¨λμ νμ λͺ¨λκ³Όμ μ νν μ°λμ μν κ·μΉμ λλ€.
κ·Έλ¬λ λ³΄ν΅ ../, ./ λ±μ λͺ
μμ νμ κ²½λ‘λ₯Ό μ μμ°μ£ . λμ , κ·Έλ₯ require('modulename') μ΄λ κ² λΆλ₯΄λ κ² λ§μΌλ‘ μΆ©λΆν©λλ€. μ΄λ κ² νλ©΄ μ±μ μλ /node_modules ν΄λμ νμ ν΄λλ₯Ό μ°Ύμ ꡬλν ν
λκΉμ.
(μμΈν API νΈμΆ ꡬ쑰λ βnode_modules ν΄λμμ λͺ¨λ λΆλ¬μ€κΈ°β μΉμ
μ μ°Έκ³ νμΈμ.)
μλ₯Ό λ€λ©΄, npm ν¨ν€μ§λ₯Ό ν΅ν΄ npm install modulename μ΄λ κ² μ€μΉ λͺ
λ Ήμ λ΄λ¦¬λ©΄ (λ§€λνμ€νΈκ° μλ μ± ν΄λλΌλ©΄) μλμΌλ‘ /node_modules λΌλ νμ ν΄λλ₯Ό λ§λ€κ³ κ±°κΈ°μ λͺ¨λμ μ€μΉνλ κ²μ
λλ€.
async λͺ¨λμ λν μ€μΉ μλ₯Ό λ€κ² μ΅λλ€.
$ cd /path/to/your/app
$ npm install asyncμ΄λ κ² νλ©΄ νμΌ κ΅¬μ‘°λ μ΄λ κ² λμ€κ² λκ² μ΅λλ€.
$ find .
.
./package.json
./index.html
./node_modules
./node_modules/async
./node_modules/async/.gitmodules
./node_modules/async/package.json
./node_modules/async/Makefile
./node_modules/async/LICENSE
./node_modules/async/README.md
./node_modules/async/.npmignore
./node_modules/async/lib
./node_modules/async/lib/async.js
./node_modules/async/index.jsκ·Έλ¦¬κ³ μ± λ§€λνμ€νΈ(./package.json) ꡬ쑰λ μ΄λ κ² λμ€κ² μ£ .
{
"name": "nw-demo",
"main": "index.html"
}index.html νμΌ μμ μ
λλ€.
<html>
<head>
<title>test</title>
<script>
var async=require('async');
</script>
</head>
<body>
ν
μ€νΈκ° μλλμ΄μΌ κ² μ£ .
</body>
</html>C/C++ νμ₯μ΄ ν¬ν¨λ λͺ¨λμ μν©μ΄λΌλ©΄ μκΈ°κ° μ’ λ¬λΌμ§λλ€. μ‘°κΈ λ³΅μ‘ν΄μ§μ£ . μλλ©΄ nw.jsμ ABI(μ± μ΄μ§ μΈν°νμ΄μ€; application binary interface)μ nw.js ABI ꡬ쑰μ μ‘°κΈ μ°¨μ΄κ° μκΈ° λλ¬Έμ λλ€.
node.js μμ npm install μ΄λ κ² λͺ¨λμ μ€μΉνλ©΄ npm μ μ체 λ΄μ₯λ node-gyp μ ν΅νμ¬ μμ€λ₯Ό λΉλν κ²μ
λλ€.
nw.jsμμ λΉλνλ €λ©΄ nw-gyp (nw.jsμμ μ¬μ© κ°λ₯ν node-gyp) κ° νμν©λλ€. κ·Έλ¦¬κ³ nw-gyp λ₯Ό μ§μ μ€νν΄μΌ νμ£ . npm μ΄ node.js κΈ°λ°μΈμ§ nw.js κΈ°λ°μΈμ§ λͺ¨λ₯΄κ±°λ μ.
nw-gyp λ₯Ό μ€μΉνκ³ μ νλ€λ©΄, npm install nw-gyp -g λͺ
λ Ήμ΄ ν μ€μ΄λ©΄ λ©λλ€.
μ¬μ© μ μ λ°λμ μꡬμ¬ν (νμ΄μ¬ μμ§κ³Ό C/C++ μ»΄νμΌλ¬κ° νμν©λλ€)μ λ°λμ νμΈνμΈμ. κ·Έλ λ€κ³ node-gypμ μ ν λ€λ₯΄μ§ μμ΅λλ€.
nw.js μ μν λͺ¨λμ λΉλνλ €λ©΄, npm ν¨ν€μ§ μ€μΉν λ μμμΌ ν μ μ, μ΄λ―Έ λ¨Όμ npm install modulename λͺ
λ Ήμ΄λ‘ λΉλ ν μ€μΉνλ€λ©΄, nw-gyp rebuild --target=0.5.0 λͺ
λ Ήμ΄λ‘ λ€μ λΉλλ₯Ό ν΄μΌ ν©λλ€.
λ€λ₯Έ λ°©λ²μΌλ‘ Github κ°μ κ³³μ λͺ¨λμ μμ€λ₯Ό λ°μλΈ ν ν΄λΉ ν΄λμ nw-gyp rebuild --target=0.5.0 λͺ
λ Ήμ΄λ₯Ό μ€νν΄λ λ©λλ€.
μ΄ μλ‘ κ°μ λ체λ²μ μνν λ,
-
nw-gyp κ° λ°λμ λͺ¨λ λ΄μ
binding.gypνμΌμ΄ μλ μμ ν΄λ λ΄μμ μ€ννμ¬μΌ ν©λλ€. -
nw.js μΌλ‘λΆν° nw-gyp μ¬λΉλμ nw.js λ²μ μ λ°λμ λͺ μν΄μΌ ν©λλ€. μλ₯Ό λ€λ©΄ nw.js λ²μ μ΄
0.5.0μ΄λΌλ©΄nw-gyp rebuild --target=0.5.0μ΄λ° μμΌλ‘ λͺ λ Ήμ΄λ₯Ό μνν΄μΌ ν©λλ€. nw-gypλ λ²μ μ κ°μ§ν μ μλ κΈ°λ₯μ΄ μμ΅λλ€. -
nw.js μ κ· λ²μ μ λ€μ΄ν°λΈ λͺ¨λμ ꡬλνλ €λ©΄ λλ€μ μ¬λΉλλ₯Ό ν΄μΌ ν©λλ€. μ΄λ ABIκ° λ²μ κ° μλ‘ λ€λ₯΄κΈ° λλ¬Έμ λλ€.
- node-webkit 0.6.0 κ° μΆμλ ν,
nw-gyp rebuild --target=0.6.0λͺ λ Ήμ΄ μ€νμ΄ νμνκ³ , - node-webkit 0.6.1 μ΄ μΆμλ ν,
nw-gyp rebuild --target=0.6.1λͺ λ Ήμ΄ μ€νμ΄ νμνκ³ , - λ€μμ λμλ λ°λ³΅ν΄μΌ νμ£ .
- node-webkit 0.6.0 κ° μΆμλ ν,
μ΄ ABI μ μ°¨μ΄λ‘ μΈν΄ λ€μ΄ν°λΈ λͺ¨λμ node.js μ nw.js κ°μ νΈνμ±μ΄ μ ν μμ΅λλ€. μ¦, nw-gypλ‘ λΉλν λͺ¨λμ node.js μ ꡬλν μ μμΌλ©°, node-gyp λ‘ λΉλν λ€μ΄ν°λΈ λͺ¨λ λν λ°λλ‘ nw.js μμ ꡬλν μ μλ€λ λ»μ΄ λ©λλ€.
μλ₯Ό λ€λ©΄, node.js λ€μ΄ν°λΈ λͺ¨λμ΄ ν¬ν¨λ μ±μ node test.js λ° npm test μ ν΅ν΄ ꡬλν μ μμΌλ, nw.js μ λΉλλ λ€μ΄ν°λΈ λͺ¨λμ ꡬλλμ§ μμ κ²μ
λλ€. (μμͺ½ λ€ μμ΄λ¬λν μ€λ₯λ₯Ό λ΄κ±°λ μμ§μ΄ ν
κΈ°λ νμμ΄ μΌμ΄λ©λλ€.)
μ€μμ¬ν 1: μλμ° λ°°ν¬λ³Έμμ λ€μ΄ν°λΈ λͺ¨λμ μ μμ μΌλ‘ λλ¦¬κ³ μ νλ€λ©΄, ν΅μ¬ μ€ν νμΌμΈ nw.exe μ νμΌλͺ
μ μ λλ‘ λ°κΎΈμ§ λ§μμΌ ν©λλ€. μ΄λ μμ§μ΄ ꡬλμ μ μ§νκΈ° μν ν΅μ¬ νμΌμ΄κΈ° λλ¬Έμ
λλ€.
μ€μμ¬ν 2: μλμ°μμλ μλ§ PATH νκ²½λ³μμ νμ΄μ¬ λ°νμ κ²½λ‘κ° ν¬ν¨λμ΄μΌ ν κ²μ
λλ€.
(μ£Ό: node-gyp λ° nw-gypλ νμ΄μ¬ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν©λλ€.)
μ€μμ¬ν 3: nw-gyp λ node-gyp μμ λΉλλ .node νμΌμ λ³κ²½νλ€λ μ¬μ€μ μμ§ λ§μμμ€.
(node.js λμ nw.js μ μ°κΈ° μν΄ μ»΄νμΌνλ μμ€ν
μ΄κΈ° λλ¬Έμ
λλ€.)
μ’ λ μμΈν μ¬ν λ° λ¬Έμ λ (μ ν μ¬ν λ° μλ €μ§ λ¬Έμ μ λ±), βnw-gypλ‘ λ€μ΄ν°λΈ λͺ¨λ λΉλνκΈ°β νμ΄μ§λ₯Ό μ°Έμ‘°νμΈμ.