coffee-express
Version:
A Template for NodeJs Application using Express, CoffeeScript, Jade, and Stylus.
44 lines (42 loc) • 9.64 kB
HTML
<html><head><title>routes.coffee</title><meta http-equiv="Content-Type" content="text/html" charset="UTF-8"><link rel="stylesheet" media="all" href="../docco.css"></head><body><div id="container"><div id="background"></div><div id="jump_to">Jump To …<div id="jump_wrapper"><div id="jump_page"><a href="../index.html" class="source"><span class="file_name">README</span></a><a href="../src/config/index.coffee.html" class="source "><span class="base_path">src / config / </span><span class="file_name">index.coffee</span></a><a href="../src/controllers/index.coffee.html" class="source "><span class="base_path">src / controllers / </span><span class="file_name">index.coffee</span></a><a href="../src/controllers/ping.coffee.html" class="source "><span class="base_path">src / controllers / </span><span class="file_name">ping.coffee</span></a><a href="../src/controllers/posts.coffee.html" class="source "><span class="base_path">src / controllers / </span><span class="file_name">posts.coffee</span></a><a href="../src/index.coffee.html" class="source "><span class="base_path">src / </span><span class="file_name">index.coffee</span></a><a href="../src/models/post.coffee.html" class="source "><span class="base_path">src / models / </span><span class="file_name">post.coffee</span></a><a href="../src/routes.coffee.html" class="source selected"><span class="base_path">src / </span><span class="file_name">routes.coffee</span></a></div></div></div><table cellpadding="0" cellspacing="0"><thead><tr><th class="docs"><h1>routes.coffee</h1><div class="filepath">src/</div></th><th class="code"></th></tr></thead><tbody><tr id="section-1"><td class="docs"><div class="pilwrap"><a href="#section-1" class="pilcrow">¶</a></div><h3>Routes</h3>
<p>We are setting up theese routes:</p>
</td><td class="code"><div class="highlight"><pre><span class="nv">module.exports = </span><span class="nf">(app) -></span></pre></div></td></tr><tr id="section-2"><td class="docs"><div class="pilwrap"><a href="#section-2" class="pilcrow">¶</a></div><ul>
<li><em>/</em> -> controllers/index/index method</li>
</ul>
</td><td class="code"><div class="highlight"><pre> <span class="nx">app</span><span class="p">.</span><span class="nx">all</span> <span class="s">'/'</span><span class="p">,</span> <span class="nf">(req, res, next)-></span>
<span class="nx">routeMvc</span><span class="p">(</span><span class="s">'index'</span><span class="p">,</span> <span class="s">'index'</span><span class="p">,</span> <span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">,</span> <span class="nx">next</span><span class="p">)</span></pre></div></td></tr><tr id="section-3"><td class="docs"><div class="pilwrap"><a href="#section-3" class="pilcrow">¶</a></div><ul>
<li><em>/<strong>:controller</strong></em> -> controllers/<strong><em>:controller</em></strong>/index method</li>
</ul>
</td><td class="code"><div class="highlight"><pre> <span class="nx">app</span><span class="p">.</span><span class="nx">all</span> <span class="s">'/:controller'</span> <span class="p">,</span> <span class="nf">(req, res, next)-></span>
<span class="nx">routeMvc</span><span class="p">(</span><span class="nx">req</span><span class="p">.</span><span class="nx">params</span><span class="p">.</span><span class="nx">controller</span><span class="p">,</span> <span class="s">'index'</span><span class="p">,</span><span class="nx">req</span><span class="p">,</span><span class="nx">res</span><span class="p">,</span> <span class="nx">next</span><span class="p">)</span>
</pre></div></td></tr><tr id="section-4"><td class="docs"><div class="pilwrap"><a href="#section-4" class="pilcrow">¶</a></div><ul>
<li><em>/<strong>:controller</strong>/<strong>:method</strong></em> -> controllers/<strong><em>:controller</em></strong>/<strong><em>:method</em></strong> method</li>
</ul>
</td><td class="code"><div class="highlight"><pre> <span class="nx">app</span><span class="p">.</span><span class="nx">all</span> <span class="s">'/:controller/:method'</span> <span class="p">,</span> <span class="nf">(req, res, next)-></span>
<span class="nx">routeMvc</span><span class="p">(</span><span class="nx">req</span><span class="p">.</span><span class="nx">params</span><span class="p">.</span><span class="nx">controller</span><span class="p">,</span> <span class="nx">req</span><span class="p">.</span><span class="nx">params</span><span class="p">.</span><span class="nx">method</span><span class="p">,</span> <span class="nx">req</span><span class="p">,</span><span class="nx">res</span><span class="p">,</span><span class="nx">next</span><span class="p">)</span></pre></div></td></tr><tr id="section-5"><td class="docs"><div class="pilwrap"><a href="#section-5" class="pilcrow">¶</a></div><ul>
<li><em>/<strong>:controller</strong>/<strong>:method</strong>/<strong>:id</strong></em> -> controllers/<strong><em>:controller</em></strong>/<strong><em>:method</em></strong> method with <strong><em>:id</em></strong> param passed</li>
</ul>
</td><td class="code"><div class="highlight"><pre> <span class="nx">app</span><span class="p">.</span><span class="nx">all</span> <span class="s">'/:controller/:method/:id'</span> <span class="p">,</span> <span class="nf">(req, res, next)-></span>
<span class="nx">routeMvc</span><span class="p">(</span><span class="nx">req</span><span class="p">.</span><span class="nx">params</span><span class="p">.</span><span class="nx">controller</span><span class="p">,</span> <span class="nx">req</span><span class="p">.</span><span class="nx">params</span><span class="p">.</span><span class="nx">method</span><span class="p">,</span><span class="nx">req</span><span class="p">,</span><span class="nx">res</span><span class="p">,</span> <span class="nx">next</span><span class="p">)</span></pre></div></td></tr><tr id="section-6"><td class="docs"><div class="pilwrap"><a href="#section-6" class="pilcrow">¶</a></div><p>If all else failed, show 404 page</p>
</td><td class="code"><div class="highlight"><pre> <span class="nx">app</span><span class="p">.</span><span class="nx">all</span> <span class="s">'/*'</span><span class="p">,</span> <span class="nf">(req, res)-></span>
<span class="nx">console</span><span class="p">.</span><span class="nx">warn</span> <span class="s">"error 404: "</span><span class="p">,</span> <span class="nx">req</span><span class="p">.</span><span class="nx">url</span>
<span class="nx">res</span><span class="p">.</span><span class="nx">render</span> <span class="s">'404'</span><span class="p">,</span><span class="mi">404</span></pre></div></td></tr><tr id="section-7"><td class="docs"><div class="pilwrap"><a href="#section-7" class="pilcrow">¶</a></div><p>render the page based on controller name, method and id</p>
</td><td class="code"><div class="highlight"><pre><span class="nv">routeMvc = </span><span class="nf">(controllerName, methodName, req, res, next)-></span>
<span class="nx">controllerName</span><span class="o">=</span><span class="s">'index'</span> <span class="k">if</span> <span class="o">not</span> <span class="nx">controllerName</span><span class="o">?</span>
<span class="nx">controller</span><span class="o">=</span><span class="kc">null</span>
<span class="k">try</span>
<span class="nx">controller</span><span class="o">=</span><span class="nx">require</span> <span class="s">"./controllers/"</span><span class="o">+</span><span class="nx">controllerName</span>
<span class="k">catch</span> <span class="nx">e</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">warn</span> <span class="s">"controller not found: "</span><span class="o">+</span> <span class="nx">controllerName</span><span class="p">,</span> <span class="nx">e</span>
<span class="nx">next</span><span class="p">()</span>
<span class="k">return</span>
<span class="nx">data</span><span class="o">=</span><span class="kc">null</span>
<span class="k">if</span> <span class="nx">methodName</span><span class="o">?</span></pre></div></td></tr><tr id="section-8"><td class="docs"><div class="pilwrap"><a href="#section-8" class="pilcrow">¶</a></div><p>eval is evil, so sanitize it</p>
</td><td class="code"><div class="highlight"><pre> <span class="nv">methodName = </span><span class="nx">methodName</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/[^a-z0-9A-Z_-]/i</span><span class="p">,</span><span class="s">''</span><span class="p">)</span>
<span class="nx">method</span><span class="o">=</span><span class="nb">eval</span><span class="p">(</span><span class="s">'controller .'</span><span class="o">+</span><span class="nx">methodName</span><span class="p">)</span>
<span class="k">if</span> <span class="nx">method</span><span class="o">?</span>
<span class="nx">method</span> <span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">,</span> <span class="nx">next</span>
<span class="k">else</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">warn</span> <span class="s">'method not found: '</span> <span class="o">+</span><span class="nx">methodName</span>
<span class="nx">next</span><span class="p">()</span>
</pre></div></td></tr></tbody></table><div id="generated">generated Sun Dec 23 2012 16:04:40 GMT-0800 (PST) </div></div></body></html>