UNPKG

coffee-express

Version:

A Template for NodeJs Application using Express, CoffeeScript, Jade, and Stylus.

44 lines (42 loc) 9.64 kB
<!DOCTYPE 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 &hellip;<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">&#182;</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) -&gt;</span></pre></div></td></tr><tr id="section-2"><td class="docs"><div class="pilwrap"><a href="#section-2" class="pilcrow">&#182;</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">&#39;/&#39;</span><span class="p">,</span> <span class="nf">(req, res, next)-&gt;</span> <span class="nx">routeMvc</span><span class="p">(</span><span class="s">&#39;index&#39;</span><span class="p">,</span> <span class="s">&#39;index&#39;</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">&#182;</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">&#39;/:controller&#39;</span> <span class="p">,</span> <span class="nf">(req, res, next)-&gt;</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">&#39;index&#39;</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">&#182;</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">&#39;/:controller/:method&#39;</span> <span class="p">,</span> <span class="nf">(req, res, next)-&gt;</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">&#182;</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">&#39;/:controller/:method/:id&#39;</span> <span class="p">,</span> <span class="nf">(req, res, next)-&gt;</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">&#182;</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">&#39;/*&#39;</span><span class="p">,</span> <span class="nf">(req, res)-&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">warn</span> <span class="s">&quot;error 404: &quot;</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">&#39;404&#39;</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">&#182;</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)-&gt;</span> <span class="nx">controllerName</span><span class="o">=</span><span class="s">&#39;index&#39;</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">&quot;./controllers/&quot;</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">&quot;controller not found: &quot;</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">&#182;</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">&#39;&#39;</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">&#39;controller .&#39;</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">&#39;method not found: &#39;</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>