2011-11-23 3 views
0

저는 Node Web Developments라는 책에서 node.js 자습서를 따르고 있습니다.왜 이것을 배열이 아닌 문자열로 전달해야합니까?

문제점 : 코드, [] 함유 HTML 코드 3 인자로서 필요한 기능 htutil.page()mult-node.js로부터 전달되는 배열 및 htutil.jsexports.navbar()exports.page() 의해 반환 된 2 개 값 중 하나를 부분적이지만 I 못해 도면 왜 그것이 긴 문자열이 아닌 배열이되어야 하는가? htutil.page()에 배열이 HTML 페이지에 표시 될 긴 문자열로 추출되는 코드가 표시되지 않습니다.

htutil.js

var url = require('url'); 

exports.loadParams = function(req, res, next) { 
    req.requrl = url.parse(req.url, true); 
    req.a = (req.requrl.query.a && !isNaN(req.requrl.query.a)) 
     ? new Number(req.requrl.query.a) 
     : NaN; 
    req.b = (req.requrl.query.b && !isNaN(req.requrl.query.b)) 
     ? new Number(req.requrl.query.b) 
     : NaN; 
     if(next) next(); 
} 

exports.navbar = function() { 
    return ["<div class='navbar'>", 
      "<p><a href='/'>Home</a></p>", 
      "<p><a href='/mult'>Multiplication</a></p>", 
      "<p><a href='/square'>Square's</a></p>", 
      "<p><a href='/factorial'>Factorial's</a></p>", 
      "<p><a href='/fibonacci'>Fibonancci's</a></p>". 
      "</div>"].join('\n'); 
} 

exports.page = function(title, navbar, content) { 
    return ["<html><head><title>{title}</title></head>", 
      "<body><h1>{title}</h1>", 
      "<table><tr>", 
      "<td>{navbar}</td><td>{content}</td>", 
      "</tr></table></body></html>"].join('\n'); 
      .replace("{title}", title, "g") 
      .replace("{navbar}", navbar, "g") 
      .replace("{content}", content, "g"); 
} 

멀티 포트 - Node.js를

내가 그것을 배열을 전달 아니에요 볼 수 있습니다에서
var htutil = require('./htutil'); 
exports.get = function(req, res) { 
    res.writeHead('200', {'Content-Type': 'text/html'}); 
    var result = req.a * req.b; 
    res.end(
     // THIS IS THE FUNCTION WHERE THE ARRAY OF HTML CODE IS PASSED INTO 
     htutil.page('Multiplication', htutil.navbar(), [ 
      (!isNaN(req.a) && !isNaN(req.b) ? 
       ("<p class='result'>{a} * {b} = {result}</p>" 
       .replace('{a}', req.a) 
       .replace('{b}', req.b) 
       .replace('{result}', req.a * req.b)) 
       : ""), 
      "<p>Enter numbers to multiply</p>", 
      "<form name='mult' action='/mult' method='get'>", 
      "A: <input type='text' name='a' /><br>", 
      "B: <input type='text' name='b' />", 
      "<input type='submit' value='Submit' />", 
      "</form>" 
      ].join('\n')) 
     ); 
} 

답변

2

- 그것은 문자열로 합류의 IT를 전달하기 전에 in.

이 이유는 문자열 결합이 (적어도 가정하면) 반복되는 연결은 물론 join의 구현에 달려 있지만, 대부분의 구현이이를 최적화한다고 생각합니다. JavaScript에는 StringBuffer 또는 StringBuilder 유형이 없으므로 배열에 가입하는 것이 가장 가까운 방법입니다.

+0

HTML을 대괄호 '[...]로 묶지 않아서 콜론으로 구분 된 문자열을 배열로 바꿀 수 있습니까? – Nyxynyx

+0

@Nyxynyx : 네,하지만 끝에있는'.join ('\ n')'호출은 배열을 문자열로 바꿉니다. –

+0

알았어, 고마워! – Nyxynyx

관련 문제